LaTeX schreibt bei jedem LaTeX-Lauf Informationen in diverse Hilfsdateien:
- aux - Informationen zu labels, verwendete Literturzitate, Verzeichniseinträge
- toc - Inhaltsverzeichniseinträge aus den aux-Dateien
- lof - Abbildungsverzeichniseinträge aus den aux-Dateien
- lot - Tabellenverzeichniseinträge
- idx - Indexeinträge in der Rohfassung
Es kann weitere Hilfsdateien geben. Beim nächsten LaTeX-Lauf liest LaTeX all diese Dateien bis auf idx wieder ein und holt sich so Informationen aus dem letzten LaTeX-Lauf. Mit der idx-Datei kann LaTeX selbst nichts anfangen. Ebenso kann LaTeX selbst nichts mit einer bib-Datei anfangen.
Das Hilfprogramm MakeIndex erzeugt aus der idx-Datei eine Datei ind, sie den sortierten Index enthält. Diese Datei liest LaTeX.
Ebenso erzeugt das Hilfsprogramm BibTeX aus der aux- und der bib-Datei eine bbl-Datei mit den gewünschten Literaturverzeichniseinträgen im gewünschten Format. Diese Datei liest LaTeX ein.
Bei einfachen Dokumenten kann nun die Reihenfolge pdflatex, makeindex (oder xindy), bibtex (oder bibtex8) , pdflatex ausreichen, um ein korrektes Dokument zu erzeugen. Bei anderen genügt dies nicht. Wenn nämlich beispielsweise eine Seite Inhaltsverzeichnis hinzugekommen ist, dann stimmen natürlich die Seitenangaben in der ind-Datei, die ja aus der idx-Datei des ersten LaTeX-Laufs stammt, nicht mehr. Also benötigt man einen weiteren Aufruf von makeindex und pdflatex. In den meisten Fällen hat man nach dem zweiten makeindex- und dem dritten pdflatex-Lauf ein korrektes Dokument. Es kann aber sein, dass auch in diesem Fall noch Meldungen wie "Label(s) may have changed. Rerun to get cross-references right" auftauchen (schreibt LaTeX sowohl in die Terminalausgabe als auch in die log-Datei). In dem Fall sind weitere Läufe notwendig.
Der Vollständigkeit halber sei erwähnt, dass MakeIndex natürlich auch noch andere Verzeichnisse aufbereiten kann, beispielsweise ein Glossar. Ebenso kann mehr als ein bibtex-Aufruf notwendig sein, etwas wenn man mit multibib arbeitet.
Ebenso sei erwähnt, dass Dokumente denkbar sind, die niemals einen finalen LaTeX-Lauf erreichen.
Übrigens ist bei MikTeX in den Tools ein Programm (texify?) zu finden, das die ganzen Aufrufe recht gut handhabt.