Wie in zahlreichen Fragen/Antworten in der Vergangenheit festgestellt wurde, müssen Sie LaTeX mindestens zweimal kompilieren, wenn Referenzen, TOC/LOF usw. vorhanden sind. Viele dieser Situationen wurden in der Antwort aufIn welchen Situationen müssen Sie ein Dokument mehr als einmal zusammenstellen?
Bemühungen, diesen zusätzlichen Schritt zu vermeiden, waren in ausgewählten, sehr spezifischen Fällen erfolgreich, wie zum Beispiel Wie kann ich eine doppelte Kompilierung vermeiden? Dennoch ist es heute eine Vorgehensweise, die wir als selbstverständlich ansehen und bei der wir lediglich Skripte und Makros entwickeln, um diesen Prozess so weit zu automatisieren, dass der Aufwand geringer wird.
Die Antwort auf[diese Frage zum Wechseln zur vorherigen Seite]spielt darauf an, dass die Speicherbeschränkungen früherer Computer ausschlaggebend dafür waren, warum TeX ursprünglich so entwickelt wurde, wie es war. Informationen, die später benötigt werden könnten, werden einfach in einer beliebigen Anzahl von Hilfsdateien verstaut und beim nächsten Durchlauf abgerufen. Sobald eine Seite „fertig“ ist, wird sie vom Compiler vergessen.
Ich habe oft gedacht:Ist es angesichts der Fortschritte bei der Computerverarbeitung und Speicherkapazität möglich/realistisch/geplant, dass LaTeX einen größeren Teil des Dokuments im Speicher behält, um eine mehrfache Kompilierung zu vermeiden?
Das Speichern des gesamten Dokuments im Speicher würde viel Speicher beanspruchen und bei einigen sehr großen Dokumenten wäre dieser Weg möglicherweise nicht möglich (vielleicht müsste es ein optionales Verhalten sein). Aber es scheint, dass viele Aspekte des Schriftsatzes von dieser Art der verbesserten Kompilierung profitieren würden.
Mir ist klar, dass dies den Kern dessen trifft, was (La)TeX ist und wie es erstellt wurde. Es ist kein einfacher Patch; es erfordert wahrscheinlich eine Neufassung des gesamten Kerns (oder ist das so?). Es gibt sicherlich auch andere damit verbundene Probleme (würde dies tatsächlich die Kompilierungszeit verkürzen?); ich würde mich über einen Verweis auf eine andere Stelle freuen, an der dieses oder verwandte Probleme diskutiert werden. (Wurde dies für LaTeX3 in Betracht gezogen?)
Antwort1
Wie Joseph sagte, ist dies kein Feature von Latex, sondern ein Feature von Tex (gemeinsam mit Xetex und Luatex), daher gibt es keine praktikable Möglichkeit, dies in irgendetwas namens Latex zu tun. Außerdem glaube ich nicht, dass es stimmt, dass die Speicherbeschränkungen im Allgemeinen so unterschiedlich sind: Die Erwartungen der Leute steigen sogar schneller als die Hardwarekapazität. Sehen Sie die Notwendigkeit einer Externalisierung von Tikz, da ein Dokument mit einigen Tikz-Bildern selbst auf moderner Hardware schnell eine Menge Speicher verbrauchen kann.
Aber es steckt wirklich alles in einem Namen. Jedes System, das Vorwärts- und Rückwärtsreferenzen zulässt, speichert die Informationenirgendwo. Sie denken vielleicht, dass es sehr 70er-Jahre-mäßig ist, Latex in einer .aux-Datei auf der Festplatte zu speichern, aber die .aux-Datei kann sich auf einer SSD oder einem virtuellen Dateisystem im Hauptspeicher befinden und der Zugriff darauf sollte kein praktisches Hindernis darstellen. Und wie Sie kommentiert haben, können Sie „Latex“ durch make oder latexmk oder arara oder context oder eine Batchdatei ersetzen, die Latex einfach viermal ausführt, sodass der Endeffekt für den Benutzer eine Kompilierung in einem einzigen Durchgang sein kann, falls dies gewünscht ist.
Natürlich ist es nur dann wirklich von Vorteil, dies in einem Durchgang zu tun, wenn Sie Ihr gesamtes Dokument fehlerfrei schreiben können und es nie mehr als einmal verarbeiten müssen. Wenn Sie einen Bearbeitungs-/Kompilierungs-/Vorschauzyklus verwenden, ist es nur insofern ärgerlich, als es den Zyklus verlangsamt.