In MiKTeX wird automatisch ein Installationsvorgang ausgelöst, wenn Sie beispielsweise \usepackage{beamer}
haben in einer Dokumentpräambel ohne das entsprechende Paket installiert ist, gibt es bei TeX Live keine solche Funktion.
Die letzte Aussage ist eigentlich nicht wahr, wie von wasteofspace in den Kommentaren darauf hingewiesen, dass es das texliveonfly-Paket gibt, das die On-Demand-Installation in TeX Live 2010 und höher implementiert. Ich habe es nie getestet und weiß nicht, ob es Nachteile hat.
Wenn Sie jedoch die vollständige (oder fast vollständige) TeX Live-Sammlung von Paketen (~2400) installieren, müssen Sie keine neuen Pakete hinzufügen, ein periodisches tlmgr update -all
kümmert sich um alles, einschließlich der Installation von Paketen, die nach der ersten vollständigen Installation zur TeX Live-Sammlung hinzugefügt wurden. Diese Funktion wird in tlmgr
erklärt Handbuch.
Wenn ein Paket zu einer Sammlung auf dem Server hinzugefügt wurde, die auch lokal installiert ist, wird es analog zur lokalen Installation hinzugefügt. Dieser wird auto-install
genannt und wird bei Verwendung der Option --list
als solches angesagt . Diese Autoinstallation kann mit der Option --no-auto-install
unterdrückt werden
Das Handbuch enthält viele Informationen zu nützlichen Befehlen und ist eine empfohlene Lektüre für jeden Benutzer.
Der Nachteil ist natürlich, dass Sie den vollständigen Paketsatz auf Ihrem Computer installieren müssen, was ein Problem sein kann, wenn Sie nicht genügend freien Speicherplatz haben. Wenn Sie wirklich keine 2 GB von Ihrer Festplatte entbehren können, ist es auch möglich, TeX Live auf einem, sagen wir, 4 GB USB-Stick zu installieren und glücklich bis ans Ende zu leben :)
Alles, was ich gerade geschrieben habe, erfordert, dass Sie TeX Live mit einer der hier beschriebenen Methoden installieren. Wenn Sie sich entscheiden, die TeX-Pakete Ihrer Distribution zu verwenden, müssen Sie deren Aktualisierungsrichtlinie folgen, die für verschiedene Distributionen unterschiedlich ist
texliveonfly
Wie in den Kommentaren erwähnt, gibt es ein TeX Live-Paket namens texliveonfly
die Sie mit texliveonfly filename.tex
verwenden können , und es werden automatisch die richtigen TeX Live-Pakete heruntergeladen.
Dies funktioniert auch für Pakete, bei denen der LaTeX-Paketname und der TeX Live-Paketname nicht übereinstimmen (zum Beispiel die LaTeX-Datei rubikrotation
Paket ist in rubik
enthalten TeX Live-Paket) und berücksichtigt auch Paketabhängigkeiten.
Nutzung
Installieren Da es sich um ein Python-Skript handelt, muss Python installiert sein. Sie können es dann wie gewohnt mit tlmgr install texliveonfly
installieren . Wenn Sie sudo tlmgr
verwenden müssen hier müssen Sie sudo texliveonfly
verwenden später.
Laufen Wenn Sie in Ihrem Terminal in das Verzeichnis Ihres filename.tex
gehen Datei, können Sie sie mit texliveonfly filename.tex
ausführen .
Andere Compiler Im Moment verwendet es pdflatex
standardmäßig, aber Sie können es so konfigurieren, dass es mit anderen Compiler-Engines ausgeführt wird, indem Sie --compiler
verwenden (oder -c
)-Flag, also wie texliveonfly --compiler=lualatex filename.tex
.
Compiler-Flags Sie können Flags für den von Ihnen verwendeten Compiler an texliveonfly
übergeben mit dem --arguments
(oder -a
)-Flag, also zum Beispiel, wenn Sie zuvor latexmk -shell-escape -pdf filename.tex
verwendet haben dann verwenden Sie jetzt texliveonfly --compiler=latexmk --arguments='-shell-escape -pdf' filename.tex
.
Bekannte Probleme
- Es gibt einige Fälle von fehlenden Paketen, die mit einer nicht standardmäßigen Fehlermeldung fehlschlagen, zum Beispiel babel, wenn Sprachen fehlen, in diesem Fall
texliveonfly
lädt sie nicht herunter. Im Moment ist bekannt, dass die folgenden Pakete manuell installiert werden müssen:(bitte bearbeiten, wenn Sie weitere finden)
- Babel-Sprachen, zum Beispiel für europäische Sprachen installieren Sie den
collection-langeuropean
Paket - Biblatex-Stile, z.B. für den Naturstil benötigen Sie den
biblatex-nature
Paket - Schriftkodierungen, z.B. um
t2aenc.def
zu erhalten Sie benötigen dencyrillic
Paket und um denly1enc.def
zu erhalten Sie benötigen denly1
Paket. - Beteiligte Pakete bei Verwendung des Minted-Pakets, nämlich
minted fvextra upquote lineno xstring framed caption
(danke an pablgonz für den Test) - Beim Ausführen externer Programme wie
texcount
in Ihrer LaTeX-Datei erkennt texliveonfly nicht, dass Sie dentexcount
benötigen Paket.
- Wenn man texliveonfly Optionen gibt, zum Beispiel für einen anderen Compiler, hängt es manchmal ohne ersichtlichen Grund beim Installieren von Paketen. Sie können dies höchstwahrscheinlich umgehen, indem Sie zuerst texliveonfly ohne Optionen ausführen, also
texliveonfly main.tex
(damit es die Pakete herunterlädt) und dann das ausführen, was Sie wollten, zum Beispiellatexmk main.tex
.
Hintergrund
Im Wesentlichen ist texliveonfly ein Build-Tool wie latexmk (das ein Perl-Skript ist), es umschließt die TeX-Engine. Beachten Sie jedoch, dass Sie sie mit texliveonfly --compiler=latexmk filename.tex
verketten können .
Es ist ein Python-Skript, das versucht, Ihre LaTeX-Datei auszuführen, und wenn es fehlschlägt, weil ein Paket fehlt, versucht es, dieses Paket zu installieren.
Außer auf ctan.org/pkg/texliveonfly können Sie den Quelltext unter ctan.org/tex-archive/support/texliveonfly oder auf latex.org/forum
einsehenPS Ich habe dies auf Arch Linux 4.19.4 und auf Travis CI (Ubuntu 14.04) getestet.
Mein ziemlich einfacher Ansatz war, nach \usepackage
zu suchen , extrahieren Sie den Inhalt und installieren Sie ihn mit dem Paketmanager der Distribution.
cat *.tex | sed -n 's/^[^%]*\\usepackage[^{]*{\([^}]*\)}.*$/tex\(\1.sty\)/p' | paste -sd ' ' -
Dies gibt eine Liste von Paketen mit .sty
zurück und umgeben von tex()
, z.B. tex(amsmath.sty) tex(enumitem.sty) tex(graphicx.sty)
. Ich kann diese direkt an yum
weitergeben /dnf
(Ich verwende Fedora).
sudo dnf install $( cat *.tex | sed -n 's/^[^%]*\\usepackage[^{]*{\([^}]*\)}.*$/tex\(\1.sty\)/p' | paste -sd ' ' - )
Es gab ein paar Pakete, die ich auf mehrere Zeilen aufgeteilt hatte, die den sed
Ausdruck fehlt, den ich manuell mit sudo dnf install 'tex(some-package-name.sty)'
installiert habe .
Hoffentlich gibt es einen einfachen .sty
Äquivalent für apt-get
installieren auf Ubuntu.