Mentre in MiKTeX viene attivato automaticamente un processo di installazione se hai, ad esempio, \usepackage{beamer} in un preambolo del documento senza il pacchetto corrispondente installato, non esiste tale funzionalità su TeX Live.
L'ultima affermazione in realtà non è vera, come sottolineato da wasteofspace nei commenti c'è il pacchetto texliveonfly che implementa l'installazione on demand in TeX Live 2010 e successivi. Non l'ho mai testato e non so se ha degli svantaggi.
Tuttavia, se installi la raccolta completa (o quasi completa) di pacchetti TeX Live (~2400) non avrai bisogno di aggiungere nuovi pacchetti, un tlmgr update -all periodico si occuperà di tutto, inclusa l'installazione dei pacchetti aggiunti alla collezione TeX Live dopo la prima installazione completa. Questa caratteristica è spiegata nel tlmgr Manuale.
Analogamente, se un pacchetto è stato aggiunto a una raccolta sul server anch'essa installata localmente, verrà aggiunto all'installazione locale. Questo si chiama
auto-installed è annunciato come tale quando si usa l'opzione--list. Questa installazione automatica può essere soppressa utilizzando l'opzione--no-auto-install
Il manuale contiene molte informazioni sui comandi utili ed è una lettura consigliata per ogni utente.
Lo svantaggio è ovviamente che hai bisogno del set completo di pacchetti installati sulla tua macchina, il che potrebbe essere un problema se non hai abbastanza spazio libero. Se davvero non puoi risparmiare 2 GB dal tuo HD, è anche possibile installare TeX Live in una chiavetta USB, ad esempio, da 4 GB e vivere felici e contenti :)
Tutto quello che ho appena scritto richiede l'installazione di TeX Live con uno dei metodi qui descritti. Se decidi di utilizzare i pacchetti TeX dalla tua distribuzione sei obbligato a seguire la loro politica di aggiornamento, che è diversa per le diverse distribuzioni
texliveonfly
Come accennato nei commenti, esiste un pacchetto TeX Live chiamato texliveonfly che puoi usare con texliveonfly filename.tex e scaricherà automaticamente i pacchetti TeX Live corretti.
Questo funziona anche per i pacchetti per i quali il nome del pacchetto LaTeX e il nome del pacchetto TeX Live non corrispondono (ad esempio LaTeX rubikrotation pacchetto è contenuto nel rubik pacchetto TeX Live) e tiene conto anche delle dipendenze del pacchetto.
Utilizzo
Installazione È uno script Python, quindi richiede l'installazione di Python. Puoi quindi installarlo come al solito con tlmgr install texliveonfly . Se devi usare sudo tlmgr qui dovrai usare sudo texliveonfly più tardi.
Correre Se vai nel tuo terminale nella directory del tuo filename.tex file, puoi eseguirlo con texliveonfly filename.tex .
Altri compilatori Al momento utilizza pdflatex per impostazione predefinita, ma puoi configurarlo per l'esecuzione con altri motori di compilazione utilizzando --compiler (o -c ) flag, quindi come texliveonfly --compiler=lualatex filename.tex .
Flag del compilatore Puoi passare i flag per il compilatore che usi a texliveonfly utilizzando il --arguments (o -a ), quindi ad esempio se in precedenza hai utilizzato latexmk -shell-escape -pdf filename.tex allora ora usi texliveonfly --compiler=latexmk --arguments='-shell-escape -pdf' filename.tex .
Problemi noti
- Ci sono alcuni casi di pacchetti mancanti che falliscono con un messaggio di errore non standard, ad esempio babel quando mancano le lingue, nel qual caso
texliveonflynon li scarica. Al momento è noto che i seguenti pacchetti devono essere installati manualmente:(modifica se ne trovi altri)
- Le lingue Babel, ad esempio per le lingue europee, installano
collection-langeuropeanpacchetto - Stili Biblatex, ad es. per lo stile della natura è necessario il
biblatex-naturepacchetto - codifiche fontenc, ad es. per ottenere
t2aenc.defti serve ilcyrillicpacchetto e per ottenere illy1enc.defti serve illy1pacchetto. - Pacchetti coinvolti quando si utilizza il pacchetto coniato, che sono
minted fvextra upquote lineno xstring framed caption(grazie a pablgonz per il test) - Quando si eseguono programmi esterni come
texcountnel tuo file LaTeX, texliveonfly non rileva che hai bisogno deltexcountpacchetto.
- Quando si danno opzioni a texliveonfly, ad esempio per un compilatore diverso, a volte si blocca senza una ragione apparente durante l'installazione dei pacchetti. Molto probabilmente puoi aggirare il problema eseguendo prima texliveonfly senza opzioni, quindi
texliveonfly main.tex(quindi scaricherà i pacchetti) e quindi eseguendo ciò che si desidera, ad esempiolatexmk main.tex.
Sfondo
Essenzialmente texliveonfly è uno strumento di compilazione come latexmk (che è uno script Perl), avvolge il motore TeX. Nota tuttavia che puoi concatenarli con texliveonfly --compiler=latexmk filename.tex .
È uno script python che funziona tentando di eseguire il tuo file LaTeX e, se fallisce perché manca un pacchetto, tenterà di installare quel pacchetto.
Inoltre su ctan.org/pkg/texliveonfly puoi vedere la fonte su ctan.org/tex-archive/support/texliveonfly o su latex.org/forum
PS L'ho testato su Arch Linux 4.19.4 e su Travis CI (Ubuntu 14.04).
Il mio approccio piuttosto semplicistico è stato cercare \usepackage , estrai il contenuto e installalo utilizzando il gestore pacchetti della distribuzione.
cat *.tex | sed -n 's/^[^%]*\\usepackage[^{]*{\([^}]*\)}.*$/tex\(\1.sty\)/p' | paste -sd ' ' -
Questo restituisce un elenco di pacchetti con .sty e circondato da tex() , per esempio. tex(amsmath.sty) tex(enumitem.sty) tex(graphicx.sty) . Posso passarli direttamente a yum /dnf (Sto usando Fedora).
sudo dnf install $( cat *.tex | sed -n 's/^[^%]*\\usepackage[^{]*{\([^}]*\)}.*$/tex\(\1.sty\)/p' | paste -sd ' ' - )
C'erano un paio di pacchetti che avevo diviso su più righe che il sed expression missed, che ho installato manualmente utilizzando sudo dnf install 'tex(some-package-name.sty)' .
Si spera che ci sia un semplice .sty installazione equivalente per apt-get su Ubuntu.