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
- 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 ducyrillic
package, et pour obtenir lely1enc.def
vous avez besoin duly1
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 dutexcount
paquet.
- 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 exemplelatexmk 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.