GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Automatischer Paket-Download für TeXLive

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

  1. 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 den cyrillic Paket und um den ly1enc.def zu erhalten Sie benötigen den ly1 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 den texcount benötigen Paket.
  1. 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 Beispiel latexmk 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

einsehen

PS 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.


Linux
  1. Verwenden von AppImage für die Linux-Paketverwaltung

  2. Apt-Cache verwendet?

  3. Persepolis – Ein kostenloser plattformübergreifender Download-Manager für Linux

  4. Fehler beim Installieren des R-Pakets für Linux

  5. Automatisches Extrahieren von Software für Linux?

Laden Sie die 21 besten Cheat Sheets für Linux-Befehle kostenlos herunter

Finden Sie heraus, ob ein Paket für Ihre Linux-Distribution verfügbar ist

Sysget – Ein Frontend für beliebte Paketmanager

Metadaten für Repo konnten nicht heruntergeladen werden

Rezension:Download-Manager für Linux

Automatische Bildverbesserung für Ubuntu