Paket- und Schriftverwaltung

So vollständig Ihre TeX-Installation auch aussieht, Sie werden bald ein Paket benötigen, das ihr fehlt, oder eine Schriftart, die aufgrund der Lizenzierung nicht einsatzbereit ist. Auf dieser Seite werden die Befehle behandelt, die Sie täglich eingeben – tlmgr von TeX Live und seine tlshell GUI, getnonfreefonts für separat gelieferte Schriftarten und kpsewhich für die Antwort „Wo befindet sich diese Datei?“ – mit dem, was jeder einzelne tut und warum Sie danach greifen.

Pakete mit tlmgr verwalten

tlmgr (TeX Live Manager) ist der offizielle Befehl zum Installieren, Entfernen und Aktualisieren von TeX Live-Paketen. Auf diese Weise fügen Sie eines der Tausenden von CTAN-Paketen hinzu, die Ihrer Installation zufällig fehlen – das Gleiche gilt sowohl für japanische als auch für englische Setups (MiKTeX ist eine eigene Welt; siehe unten). Beginnen Sie mit der Installation eines Pakets nach Namen. Seine Abhängigkeiten sind standardmäßig vorhanden.

terminal
# パッケージを 1 つ以上インストール(依存も自動で入る)
tlmgr install siunitx
tlmgr install collection-fontsrecommended

# 依存を引かずに本体だけ/既存の上書き再インストール
tlmgr install --no-depends siunitx
tlmgr install --reinstall siunitx

Wenn Pakete in den systemweiten Baum gelangen, muss tlmgr mit Administratorrechten ausgeführt werden (sudo tlmgr install … auf Unix, eine erhöhte Shell auf Windows). Sie können Dateien auch manuell in einem benutzerspezifischen Baum (TEXMFHOME) ablegen, tlmgr verwaltet jedoch die eigenen Bäume der Distribution. Welcher Baum was enthält und wie Pfade aufgelöst werden, ist Thema von „TeX-Verzeichnisstruktur und -Pfade“ – hier vertrauen wir einfach darauf, dass tlmgr die Dinge an die richtige Stelle bringt.

Was leicht zu übersehen ist: Weder tlmgr install noch tlmgr remove aktualisieren die symbolischen Links in Systemverzeichnissen wie /usr/local/bin. Wenn Ihr PATH direkt auf das eigene bin-Verzeichnis von TeX Live verweist, können Sie dies ignorieren, aber wenn Sie tlmgr path add verwendet haben, um Symlinks für ausführbare Dateien, Manpages und Infoseiten zu verknüpfen, müssen Sie tlmgr path add selbst erneut ausführen, nachdem Sie ein Paket installiert haben, das eine neue ausführbare Datei enthält (und tlmgr path remove, nachdem Sie eines entfernt haben).

Lernen Sie Updates als Paar. --self bringt tlmgr selbst (die Infrastruktur) auf den neuesten Stand; --all bringt jedes andere installierte Paket auf den neuesten Stand. Der Standardschritt besteht darin, beides gleichzeitig anzugeben: tlmgr ersetzt sich zuerst selbst und aktualisiert dann den Rest. Dies ist auch der Fall, wenn auf dem Server abgelegte Pakete automatisch entfernt und neue Mitglieder einer Sammlung automatisch installiert werden.

terminal
# 定番:自分自身 → 全パッケージの順で最新化
tlmgr update --self --all

# 特定パッケージだけ更新/更新があるか一覧で確認
tlmgr update siunitx
tlmgr update --list

tlmgr info informiert Sie über ein Paket. Ohne Argument listet es jedes Paket auf und markiert die installierten Pakete mit einem führenden i. Geben Sie ihm einen Namen und es werden die Beschreibung, die Lizenz, die Größen, die enthaltenen Dateien und die TeX-Katalogdaten gedruckt. Dabei wird das Repository auch nach Paketen abgefragt, die Sie nicht installiert haben. Wenn Sie sich nur halb an einen Namen erinnern, hilft search: --global durchsucht das Repository und nicht Ihre lokale Installation, und --file sucht paketübergreifend nach Dateinamen.

terminal
# パッケージの詳細(説明・ライセンス・収録ファイル)
tlmgr info siunitx

# 名前・説明から探す/ファイル名で横断検索
tlmgr search --global siunit
tlmgr search --global --file tikz.sty

Auswählen eines Repositorys (CTAN-Spiegel)

Das Repository ist der Ort, von dem tlmgr Pakete abruft. Standardmäßig wird die automatische Spiegelumleitung von CTAN verwendet. Wenn die Verbindung jedoch langsam ist oder Sie einen Spiegel anheften möchten, wechseln Sie dauerhaft mit tlmgr option repository. Der Alias ​​ctan ist eine Abkürzung für https://mirror.ctan.org/systems/texlive/tlnet; Wenn Sie darauf zeigen, werden Sie automatisch zu einem nahegelegenen CTAN-Spiegel weitergeleitet.

terminal
# 既定(近くの CTAN ミラーへ自動振り分け)に設定
tlmgr option repository ctan

# 特定ミラーへ固定(例:好きな tlnet ミラーの URL)
tlmgr option repository https://example.org/CTAN/systems/texlive/tlnet

# 今の設定をまとめて確認(repository だけでなく paper なども)
tlmgr option show

Um nur dieses eine Mal von einem anderen Spiegel abzurufen, fügen Sie --repository <url> für diesen einzelnen Durchlauf hinzu, ohne die permanente Einstellung zu berühren. Beachten Sie, dass tlmgr option auch Standardeinstellungen wie das Papierformat enthält: Um das Papier für jedes Werkzeug gleichzeitig zu wechseln, verwenden Sie tlmgr paper a4 (oder pro Programm tlmgr dvips paper a4).

Die GUI (tlshell) und MiKTeX

Wenn die Befehlszeile nicht Ihr Ding ist, liefert TeX Live tlshell, ein Tcl/Tk GUI (starten Sie es mit tlshell). Es handelt sich um ein Frontend, das lediglich tlmgr steuert und daher die gleichen Aufgaben ausführen kann: Pakete suchen, installieren, entfernen, in großen Mengen aktualisieren und Repositorys von einem Fenster aus wechseln. Es zeigt sogar das zugrunde liegende Befehlsprotokoll an, sodass Sie auf einfache Weise erfahren können, was tlmgr tut.

MiKTeX (hauptsächlich Windows) ist eine eigene Welt: Anstelle von tlmgr lautet seine Befehlszeile mpm (der MiKTeX-Paketmanager) und sein GUI ist MiKTeX Console. Das Markenzeichen von MiKTeX ist die On-the-Fly-Installation – wenn ein Dokument nach einem Paket fragt, das Sie nicht haben, lädt es es während der Kompilierung herunter und installiert es (in der Konsole können Sie dies so einstellen, dass es immer installiert wird, jedes Mal gefragt wird oder nie). Die Idee ist dieselbe; Lediglich die Befehlsnamen und der Arbeitsablauf unterscheiden sich.

Schriftarten werden separat geliefert – getnonfreefonts

Einige Schriftarten verfügen über Lizenzen wie „Kostenlose Nutzung, dürfen aber nicht verkauft werden“, sodass sie nicht in TeX Live mitgeführt werden können, das auch auf einer zum Verkauf stehenden DVD vertrieben wird. Das getnonfreefonts-Skript von TUG kümmert sich um die Installation genau dieser. CTAN enthält die Schriftarten und ihre TeX-Unterstützungsdateien; Das Skript ruft sie ab und verkabelt alles, damit TeX sie finden kann.

Sie installieren zunächst einmal das Skript selbst (folgen Sie den Schritten unter tug.org/fonts/getnonfreefonts/). Bei der aktuellen Nutzung werden Sie aufgefordert, explizit --user (persönliche Installation) oder --sys (systemweite Installation) auszuwählen. Listen Sie die angebotenen Schriftarten mit --lsfonts auf und installieren Sie dann eine nach Namen. Ein solches Ziel ist beispielsweise die Schreibmaschinenschrift luximono.

terminal
# 自分専用ツリーで、入れられるフォントの一覧を見る
getnonfreefonts --user --lsfonts

# 自分専用ツリーへ個別に入れる/配布元のものを全部入れる
getnonfreefonts --user luximono
getnonfreefonts --user --all

Der Hauptunterschied ist --user gegenüber --sys. --user wird in Ihrem persönlichen Baum (TEXMFHOME) installiert, während --sys in dem systemweiten Baum installiert wird. Der separate Befehl getnonfreefonts-sys, der in älteren Notizen gefunden wurde, existiert nicht mehr. Führen Sie für jeden auf dem Computer getnonfreefonts --sys ... mit Administratorrechten aus. Anschließend muss die Dateinamendatenbank möglicherweise aktualisiert werden (mktexlsr), obwohl das Skript normalerweise dafür sorgt. Diese Schriftarten- und Datenbankbefehle werden unter „Font- und DB-Tools“ behandelt.

terminal
# システム全体のツリーへ(全ユーザ向け・要管理者権限)
sudo getnonfreefonts --sys luximono

# 念のため手動でファイル名 DB を更新する場合
sudo -H mktexlsr

Dateien mit kpsewhich finden

TeX findet Dateien über eine Suchbibliothek namens kpathsea, und kpsewhich ist das Tool, das dieselbe Suche von Ihrer Shell aus abfragt. Es antwortet: „In welche Datei wird diese Klasse tatsächlich aufgelöst?“ und „Kollidieren zwei Versionen?“ auf einen Schlag – der erste Schritt bei den meisten Fehlerbehebungen. Geben Sie ihm einen Dateinamen und es wird der erste Pfad gedruckt, den TeX übernehmen würde.

terminal
# このファイルが解決される実際のパスを表示
kpsewhich article.cls
kpsewhich siunitx.sty

# 同名ファイルが複数あれば全部出す(衝突の発見に)
kpsewhich -all siunitx.sty

Neben Pfaden werden auch Konfigurationsvariablenwerte gemeldet. -var-value=VAR gibt die Erweiterung der Variablen VAR aus – praktisch, um herauszufinden, wo sich Ihr Benutzerbaum (TEXMFHOME) oder Konfigurationsbaum (TEXMFCONFIG) tatsächlich befindet. Es gibt zwei Arten der Erweiterung: -expand-var erweitert nur Variablen, während -expand-path einen Pfad einschließlich geschweifter Klammern vollständig erweitert.

terminal
# 設定変数の値を見る(ユーザツリーの場所など)
kpsewhich -var-value=TEXMFHOME
kpsewhich -var-value=TEXMFCONFIG

# 変数だけ展開 / パス全体を完全展開
kpsewhich -expand-var='$TEXMFHOME'
kpsewhich -expand-path='$TEXMF'

Um gleichnamige Dateien verschiedener Art zu unterscheiden, verwenden Sie -format=NAME. BibTeX-Stile (.bst) und Bibliografiedaten (.bib) haben beispielsweise separate Suchpfade, sodass durch Benennung des Dateityps der richtige aufgelöst wird. -show-path=NAME gibt den gesamten Suchpfad für diesen Typ aus und zeigt an, welche Verzeichnisse in welcher Reihenfolge durchsucht werden. Listen Sie die Typnamen mit kpsewhich --help auf.

terminal
# ファイル種別を指定して探す(.bst と .bib は別パス)
kpsewhich -format=bst plainnat.bst
kpsewhich -format=bib mybibliography.bib

# その種別の探索パス全体を表示(探索順の確認)
kpsewhich -show-path=tex

Wenn der Suchpfad von der Engine abhängt, ordnen Sie den Kontext -engine=NAME oder -progname=NAME zu (z. B. -progname=lualatex). Die Mechanismen der Suche selbst – die Rolle von texmf.cnf und wie die Bäume durchsucht werden – gehören zur „TeX-Verzeichnisstruktur und -Pfade“; Hier verwenden wir kpsewhich lediglich als Tool zur Überprüfung, was zu was aufgelöst wird.

Eine praktische Reihenfolge für Manuskriptarbeiten

Wenn ein Bericht oder eine Abschlussarbeit mit File ... not found fehlschlägt, legen Sie nicht sofort einen zufälligen .sty aus dem Internet im Manuskriptverzeichnis ab. Trennen Sie zunächst den Dateinamen vom Paketnamen. Wenn kpsewhich siunitx.sty nichts findet, führen Sie tlmgr search --global --file siunitx.sty aus, um herauszufinden, welches TeX Live-Paket es bereitstellt, und installieren Sie es erst dann als Distributionspaket, z. B. tlmgr install siunitx. Dadurch kann tlmgr Abhängigkeiten, Aktualisierungen und Entfernungen verfolgen.

Für Zusammenarbeit und CI ist „Ich habe es einmal auf meinem Laptop installiert“ keine Reproduzierbarkeit. Notieren Sie das TeX Live-Jahr, zusätzliche Paketnamen und alle angehefteten Repositorys oder Docker-Tags in der README- oder Build-Konfiguration. Das Ausführen von tlmgr update --self --all unmittelbar vor der Übermittlung bedeutet, dass PDF mit anderen Paketen als gestern erstellt wird. Testen Sie Updates separat; Frieren Sie für die übermittelte Version die funktionierende Umgebung ein.

  • Nur Konferenzvorlagen können sich im Manuskript-Repository befinden, da sie zu diesem Einreichungspaket und nicht zur Distribution gehören.
  • Allzweckpakete sollten mit tlmgr installiert werden; Eine veraltete Kopie im Manuskriptordner überschattet weiterhin die aktualisierte TeX Live-Version und führt zu verwirrenden Fehlern.
  • Gemeinsam genutzte Maschinen und CI sollten erforderliche Pakete im README oder .latexmkrc aufzeichnen und zur Reproduzierbarkeit das Tag Docker oder das Jahr TeX Live anheften.