GNU/Linux >> Linux Esercitazione >  >> Linux

Download automatico del pacchetto per TeXLive

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-install ed è 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

  1. 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 texliveonfly non 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-langeuropean pacchetto
  • Stili Biblatex, ad es. per lo stile della natura è necessario il biblatex-nature pacchetto
  • codifiche fontenc, ad es. per ottenere t2aenc.def ti serve il cyrillic pacchetto e per ottenere il ly1enc.def ti serve il ly1 pacchetto.
  • 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 texcount nel tuo file LaTeX, texliveonfly non rileva che hai bisogno del texcount pacchetto.
  1. 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 esempio latexmk 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.


Linux
  1. Utilizzo di AppImage per la gestione dei pacchetti Linux

  2. Come impacchettare applicazioni Python per Linux

  3. Apt-cache usata per?

  4. Errore durante l'installazione del pacchetto R per Linux

  5. Software di estrazione automatica per Linux?

Scarica 21 migliori cheat sheet dei comandi Linux gratuitamente

Trova se un pacchetto è disponibile per la tua distribuzione Linux

Sysget:un front-end per i gestori di pacchetti popolari

Impossibile scaricare i metadati per il repository

Recensione:Download Manager per Linux

Miglioramento automatico dell'immagine per Ubuntu