GNU/Linux >> Tutoriels Linux >  >> Linux

Téléchargement automatique du package pour TeXLive

Dans MiKTeX, un processus d'installation est automatiquement déclenché si vous avez, par exemple, \usepackage{beamer} dans un préambule de document sans le package correspondant installé, il n'y a pas une telle fonctionnalité sur TeX Live.

La dernière affirmation n'est pas vraie en fait, comme l'a souligné wasteofspace dans les commentaires, il y a le paquet texliveonfly qui implémente l'installation à la demande dans TeX Live 2010 et versions ultérieures. Je ne l'ai jamais testé et je ne sais pas s'il a des inconvénients.

Cependant, si vous installez la collection complète (ou presque complète) de packages TeX Live (~ 2400), vous n'aurez pas besoin d'ajouter de nouveaux packages, un tlmgr update -all périodique se chargera de tout, y compris l'installation des packages ajoutés à la collection TeX Live après votre première installation complète. Cette fonctionnalité est expliquée dans le tlmgr manuel.

De même, si un package a été ajouté à une collection sur le serveur qui est également installé localement, il sera ajouté à l'installation locale. Cela s'appelle auto-install et est signalé comme tel lors de l'utilisation de l'option --list . Cette auto-installation peut être supprimée à l'aide de l'option --no-auto-install

Le manuel contient de nombreuses informations sur les commandes utiles et c'est une lecture recommandée pour chaque utilisateur.

L'inconvénient est bien sûr que vous avez besoin de l'ensemble complet de packages installés sur votre machine, ce qui peut poser problème si vous ne disposez pas de suffisamment d'espace libre. Si vous ne pouvez vraiment pas épargner 2 Go de votre disque dur, il est également possible d'installer TeX Live dans une clé USB de, disons, 4 Go et de vivre heureux pour toujours :)

Tout ce que je viens d'écrire nécessite que vous installiez TeX Live avec l'une des méthodes décrites ici. Si vous décidez d'utiliser les packages TeX de votre distribution, vous êtes obligé de suivre leur politique de mise à jour, qui est différente pour différentes distributions


texliveonfly

Comme mentionné dans les commentaires, il existe un package TeX Live appelé texliveonfly que vous pouvez utiliser avec texliveonfly filename.tex , et il téléchargera automatiquement les bons packages TeX Live.

Cela fonctionne également pour les packages pour lesquels le nom du package LaTeX et le nom du package TeX Live ne correspondent pas (par exemple le LaTeX rubikrotation le paquet est contenu dans le rubik package TeX Live), et il prend également en compte les dépendances des packages.

Utilisation

Installation Il s'agit d'un script Python, il nécessite donc l'installation de Python. Vous pouvez ensuite l'installer comme d'habitude avec tlmgr install texliveonfly . Si vous devez utiliser sudo tlmgr ici, vous devrez utiliser sudo texliveonfly plus tard.

Courir Si vous allez dans votre terminal dans le répertoire de votre filename.tex fichier, vous pouvez l'exécuter avec texliveonfly filename.tex .

Autres compilateurs Pour le moment, il utilise pdflatex par défaut, mais vous pouvez le configurer pour qu'il s'exécute avec d'autres moteurs de compilation en utilisant le --compiler (ou -c ) drapeau, donc comme texliveonfly --compiler=lualatex filename.tex .

Drapeaux du compilateur Vous pouvez passer des drapeaux pour le compilateur que vous utilisez à texliveonfly en utilisant le --arguments (ou -a ) flag, donc par exemple si vous avez précédemment utilisé latexmk -shell-escape -pdf filename.tex alors vous utilisez maintenant texliveonfly --compiler=latexmk --arguments='-shell-escape -pdf' filename.tex .

Problèmes connus

  1. Il existe des cas de paquets manquants qui échouent avec un message d'erreur non standard, par exemple babel lorsqu'il manque des langues, auquel cas texliveonfly ne les télécharge pas.Pour le moment, les packages suivants doivent être installés manuellement :(veuillez modifier si vous en trouvez d'autres)
  • Langues Babel, par exemple pour les langues européennes installez le collection-langeuropean paquet
  • Styles Biblatex, par ex. pour le style nature il faut le biblatex-nature paquet
  • encodages fontenc, par ex. pour obtenir t2aenc.def vous avez besoin du cyrillic package, et pour obtenir le ly1enc.def vous avez besoin du ly1 paquet.
  • Packages impliqués lors de l'utilisation du package créé, qui sont minted fvextra upquote lineno xstring framed caption (merci à pablgonz pour les tests)
  • Lors de l'exécution de programmes externes tels que texcount dans votre fichier LaTeX, texliveonfly ne détecte pas que vous avez besoin du texcount paquet.
  1. Lorsque vous donnez des options à texliveonfly, par exemple pour un compilateur différent, il se bloque parfois sans raison apparente lors de l'installation de packages. Vous pouvez probablement contourner ce problème en exécutant d'abord texliveonfly sans options, donc texliveonfly main.tex (il téléchargera donc les packages) puis exécutera ce que vous vouliez, par exemple latexmk main.tex .

Contexte

texliveonfly est essentiellement un outil de construction comme latexmk (qui est un script Perl), il enveloppe le moteur TeX. Notez cependant que vous pouvez les enchaîner avec texliveonfly --compiler=latexmk filename.tex .

C'est un script python qui fonctionne en essayant d'exécuter votre fichier LaTeX, et s'il échoue parce qu'un paquet est manquant, il essaiera d'installer ce paquet.

Outre sur ctan.org/pkg/texliveonfly, vous pouvez voir la source sur ctan.org/tex-archive/support/texliveonfly ou sur latex.org/forum

PS J'ai testé cela sur Arch Linux 4.19.4 et sur Travis CI (Ubuntu 14.04).


Mon approche plutôt simpliste consistait à rechercher \usepackage , extrayez le contenu et installez-le à l'aide du gestionnaire de packages de la distribution.

cat *.tex | sed -n 's/^[^%]*\\usepackage[^{]*{\([^}]*\)}.*$/tex\(\1.sty\)/p' | paste -sd ' ' -

Cela renvoie une liste de packages avec .sty et entouré de tex() , par exemple. tex(amsmath.sty) tex(enumitem.sty) tex(graphicx.sty) . Je peux les transmettre directement à yum /dnf (J'utilise Fedora).

sudo dnf install $( cat *.tex | sed -n 's/^[^%]*\\usepackage[^{]*{\([^}]*\)}.*$/tex\(\1.sty\)/p' | paste -sd ' ' - )

Il y avait quelques packages que j'avais répartis sur plusieurs lignes que le sed expression manquée, que j'ai installée manuellement en utilisant sudo dnf install 'tex(some-package-name.sty)' .

J'espère qu'il y a un simple .sty installation de l'équivalent pour apt-get sur Ubuntu.


Linux
  1. Utilisation d'AppImage pour la gestion des packages Linux

  2. Nix - Un puissant gestionnaire de packages pour Linux et Unix

  3. Quel package Dia dois-je télécharger pour Ubuntu 14.04 64 bits ?

  4. Erreur lors de l'installation du package R pour Linux

  5. Logiciel d'extraction automatique pour Linux ?

Téléchargez gratuitement les 21 meilleures feuilles de triche Linux Command

Rechercher si un package est disponible pour votre distribution Linux

Sysget - Un frontal pour les gestionnaires de packages populaires

Échec du téléchargement des métadonnées pour le dépôt

Revue :Gestionnaires de téléchargement pour Linux

Amélioration automatique de l'image pour Ubuntu