Register und Literaturverzeichnisse sind nicht mit einem einzigen Kompilierlauf fertig. Zuerst schreibt LaTeX das Rohmaterial aus (\index-Einträge nach .idx, \cite-Schlüssel nach .aux); dann sortiert und formatiert es ein separates Programm; anschließend läuft LaTeX erneut, um das Ergebnis in den Text einzubinden. Diese Seite behandelt diese Helfer im Hintergrund: die Registerprozessoren makeindex / mendex / upmendex und die Literaturprozessoren bibtex / pbibtex / upbibtex / biber.
Ein separates Programm erledigt die Arbeit
Wenn Sie \index{...} oder \cite{...} in den Text schreiben, sortiert LaTeX selbst noch nichts. Der erste Kompilierlauf gibt Rohdaten aus (.idx, .aux); danach lassen Sie das Register- oder Literaturprogramm darüber laufen, um eine formatierte Datei (.ind, .bbl) zu erzeugen; anschließend kompilieren Sie erneut, um sie einzulesen. Diese Reihenfolge und die Anzahl der Läufe von Hand zu verwalten ist mühsam, daher übergibt man das in der Praxis einem Build-Werkzeug wie latexmk.
makeindex / mendex / upmendex — das Register erstellen
makeindex ist die Basis. Es liest die von \index geschriebene .idx, sortiert sie und erzeugt .ind. Das Ausgabeformat steuern Sie mit -s style.ist. Intern arbeitet es jedoch byteweise und sortiert Japanisch daher nicht in korrekter Lesereihenfolge.
mendex ist die japanischkundige Variante: Es ordnet Kanji nach ihrer Lesung (yomi). Geben Sie mit der Syntax reading@term eine Lesung an, sortiert es nach diesem Kana in japanischer Reihenfolge. upmendex ist der Unicode- und Mehrsprachen-Nachfolger: Intern arbeitet es mit Unicode und sortiert Japanisch, Latein, Griechisch, Kyrillisch und mehr mit ICU (dem Unicode Collation Algorithm). Es ist aufwärtskompatibel zu makeindex/mendex-Stilen und die Standardwahl für Register unter modernem upLaTeX oder LuaLaTeX-ja.
makeindex document.idx # → document.ind
upmendex -s mystyle.ist document.idx # 多言語・スタイル指定 / multilingual, with a styleEin minimales Register lädt makeidx, deklariert \makeindex in der Präambel, setzt \index{...} im Text und ruft \printindex dort auf, wo das Register erscheinen soll. Entscheidend ist: \index druckt keinen sichtbaren Text auf der Seite, sondern schreibt Material für den Registerprozessor. Wenn Sortierung und Anzeige abweichen sollen, verwenden Sie sort-key@printed-term, zum Beispiel latex@LaTeX.
\documentclass{jsarticle}
\usepackage{makeidx}
\makeindex
\begin{document}
LaTeX\index{らてふ@LaTeX} で索引を作ります。
\printindex
\end{document}bibtex / pbibtex / upbibtex / biber — das Literaturverzeichnis erstellen
bibtex (Oren Patashnik, 1985) ist das klassische Werkzeug. Es gleicht die \cite-Schlüssel in .aux mit Ihrer .bib-Datenbank ab und erzeugt .bbl gemäß einem .bst-Stil. Für japanische Felder und Sortierung verwenden Sie pbibtex (pTeX-Familie) oder das Unicode-fähige upbibtex (upTeX-Familie).
biber ist das Backend für das moderne biblatex. Es ist in Perl geschrieben und bietet vollständige Unicode-Unterstützung, Sortierung auf Basis des Unicode Collation Algorithm, leistungsfähige Querverweise, Datenmodellprüfung und weitere Funktionen über traditionelles BibTeX hinaus. Wenn Ihr Dokument biblatex verwendet, planen Sie zuerst mit biber. Das gemeinsame -min-crossrefs=N (Standard 2) legt den Schwellenwert für crossref fest: Ein Eintrag, auf den mindestens N andere verweisen, wird zu einem eigenen Literaturverzeichniseintrag; andernfalls werden seine Felder in die zitierenden Einträge übernommen.
bibtex document # 拡張子なし。document.aux を読む / no extension; reads document.aux
biber document # biblatex を使う場合 / when the document uses biblatexFaustregel: Für das traditionelle \bibliography + .bst verwenden Sie bibtex (oder up/pbibtex für Japanisch). Wenn Sie den mehrsprachigen, funktionsreichen Weg über biblatex wollen, verwenden Sie biber. Gibt eine Labor- oder Zeitschriftenvorlage eine .bst vor, folgen Sie dieser Vorlage, statt eine Migration zu erzwingen. Für ein neues Projekt, bei dem Sie den Zitier-Stack kontrollieren, ist biblatex + biber stärker bei Unicode und feiner Steuerung.
In der BibTeX-Familie bestimmt die .bst-Datei den Ausgabestil; verwenden Sie also jplain, plainnat oder was die Zeitschrift oder das Labor vorgibt. Bei biblatex wählen LaTeX-Optionen den Stil, während biber darunter die Datenverarbeitung übernimmt. In beiden Wegen werden Zitate nicht aufgelöst, wenn die Zitatschlüssel im Text nicht zu den Schlüsseln in .bib passen. Erstellen Sie zuerst ein Minimalbeispiel mit einem Eintrag und übertragen Sie danach die vollständige Bibliographie; so bleiben Fehler klein.
Wenn der Ablauf scheitert, fragen Sie zuerst, ob LaTeX das Rohmaterial geschrieben hat: .idx für ein Register, .aux und .bcf für biblatex-Bibliographien. Lesen Sie danach das Log von makeindex, upmendex, bibtex oder biber. Führen Sie schließlich LaTeX erneut aus und prüfen Sie, ob die erzeugte .ind oder .bbl tatsächlich in den Text übernommen wurde. In dieser Reihenfolge wird der Fehler schnell eingegrenzt.
Die richtige Ausführungsreihenfolge
Die typische Abfolge lautet „kompilieren → Literatur/Register → kompilieren → kompilieren“. Für upLaTeX sieht das zum Beispiel so aus. Dennoch ist es sicherer, statt manueller Eingabe latexmk und ähnliche Werkzeuge die Reihenfolge und Anzahl der Läufe bestimmen zu lassen.
uplatex document # .aux / .idx を生成
upbibtex document # 文献を整形 (.bbl)
upmendex document # 索引を整形 (.ind)
uplatex document # 取り込み(番号確定のためもう一度流すことも)
uplatex document