Wenn wir heute (stand: September 2013) von LaTeX reden, reden wir von LaTeX2e, das heute Standard ist. Doch was ist der Unterschied zwischen LaTeX2e und dem Vorgänger LaTeX2.09? Gibt es Unterschiede im Dokument-Aufbau? LaTeX2e wird ja als „stabil“ bezeichnet, doch was war am Vorgänger „instabil“? Soweit ich es verstanden habe, sollen sogar Dokumente mit dem gleichen Inhalt auf anderen Computern unterschiedlich ausgeschaut haben, aber warum?

Um mich kurz zu fassen: Was sind die Unterschiede?

Dieser Frage ist "Community-Wiki" markiert.

gefragt 01 Sep '13, 14:01

Epllus's gravatar image

Epllus
59059
Akzeptiert: 75%

bearbeitet 01 Sep '13, 14:03


LaTeX 2.09 war durchaus ebenfalls stabil. Mit stabil ist in erster Linie gemeint, dass der Funktionsumfang und die Schnittstellen fest stehen. Anwender stellen sich darunter meist auch vor, dass ein gewisser Grad an Fehlerfreiheit erreicht ist.

Der auffälligste Unterschied zwischen LaTeX 2.09 und LaTeX2e ist, dass LaTeX2e zwischen Klassen und Paketen unterscheidet, während LaTeX 2.09 nur Stile (engl. styles) kannte. Ein LaTeX-2.09-Dokument begann daher beispielsweise mit

\documentstyle[a4,12pt,ifthen]{article}

und der Anwender hatte ggf. keine Ahnung, dass für a4 und ifthen ggf. a4.sty und ifthen.sty geladen wurde, während 12pt eine Option von article.sty (ja, die Endung ist so korrekt) war. Der Anwender musste auch wissen, ob ein Paket eine Dokumentart beschrieb und deshalb im obligatorischen Argument von \documentstyle anzugeben war oder eine Erweiterung, die als Option anzugeben war. Auch konnte man so natürlich keine Optionen an die Erweiterungen übergeben.

Erst mit LaTeX2e wurde hier eine bessere Schnittstelle eingeführt. Anfangs schien es sogar, dass die neue Schnittstelle genügt, damit die Reihenfolge, in der Erweiterungen geladen werden, keine Rolle mehr spielt. Dieser Wunsch hat sich jedoch sehr bald als Trugschluss herausgestellt.

Für Paketautoren wurden viele neue Befehle eingeführt, beispielsweise wurde die Handhabung von Optionen so vereinheitlicht und deutlich verbessert. Auch hier hat sich irgendwann gezeigt, dass dies nicht ganz genügt. Daher gibt es inzwischen diverse Pakete, die eine key-value-Syntax auch für Optionen erlauben. Außerdem hat sich gezeigt, dass die Implementierung der Optionen nicht nur Vorteile hat, sondern auch Beschränkungen auferlegt.

Als LaTeX2.09 entstand, war Speicher außerdem noch ein knappes Gut. Deshalb wäre niemand auf die Idee gekommen, wie heute praktisch üblich Trennmuster für mehr als ein Dutzend Sprachen im Format zu haben. Stattdessen hatte man für unterschiedliche Sprachen unterschiedliche Formate. Die Sprachauswahl erfolgte zunächst auch nicht über einen Sprachname, sondern über die Nummer der Sprache. Das war natürlich ein Problem, wenn man ein Dokument von jemandem bekam, der eine andere Sprachnummer verwendete. Allerdings wurde dieses Problem noch zu Zeiten von LaTeX2.09 durch Einführung beispielsweise von german.sty mehr oder weniger gelöst. Es kann auch sein, dass der Umstieg von TeX 2 zu TeX 3 an der Stelle eine Rolle spielte, das kann ich rückblickend nicht mehr genau sagen.

Darüber hinaus wurden in LaTeX2e viele Schnittstellen klarer dokumentiert, neu geschaffen oder erweitert. Mir fällt da spontan das zweite und dritte optionale Argument von \parbox ein, dass es soweit ich mich erinnere in LaTeX 2.09 noch nicht gab.

Noch heute kann man übrigens in den LaTeX2e-Quellen (siehe source2e.pdf) recht gut erkennen, welche Teile von LaTeX 2.09 übernommen wurden und welche neu geschrieben wurden. Die LaTeX-2.09-Teile sind meist noch in der hypothetischen While-Sprache dokumentiert, während LaTeX2e-Teile natürlich-sprachlich erklärt sind.

Übrigens kann man noch heute LaTeX-2.09-Dokumente mit LaTeX verarbeiten. Trifft LaTeX2e nämlich auf \documentstyle, so schaltet es in den LaTeX-2.09-Kompatibilitätsmodus. Dazu lädt es unter anderen latex209.def und setzt den Schalter \if@compatibility auf \iftrue. Auch für die Standardklassen gibt es noch article.sty etc., um sie für LaTeX 2.09 verwendbar zu machen. Und darin wird auch an mehreren Stellen über \if@compatibility ein Unterschiedliches Verhalten für LaTeX 2.09 erreicht. Bis vor einigen Jahren galt ähnliches für die KOMA-Script-Klassen und deren Kompatibilität mit Script 2.0. Soweit ich mich erinnere wurde das aber bei KOMA-Script 3 aufgegeben.

Für die Paketautoren waren die Vorteile von LaTeX 2.09 eventuell sogar größer als für Anwender. Jedenfalls hat LaTeX2e einen regelrechten Boom an neuen Paketen ausgelöst. Die meisten Erweiterungen, die es für LaTeX 2.09 gab, wurden auch recht schnell auf LaTeX2e-Pakete übertragen oder durch bessere Implementierungen ersetzt. Aufgrund der hohen Kompatibilität wurde dies allerdings auch erleichtert. Häufig bestand eine erste Änderung zunächst nur darin, \ProvidesPackage einzufügen.

Permanenter link

beantwortet 02 Sep '13, 02:28

saputello's gravatar image

saputello
18.4k22352

Einen schönen historischen Einblick zu Latex 2.09 gibt http://www.weinelt.de/latex/index.html

Die Unterschiede sind wohl zu zahlreich, um sie hier aufzulisten, Du könntest auf zwei PCs die Versionen installieren und Dokumente jeweils auf beiden kompilieren, dann werden die Fehlermeldungen Hinweise geben. Andernfalls könntest du in CTAN und in CTAN2

stöbern.

Permanenter link

beantwortet 01 Sep '13, 20:30

ctansearch's gravatar image

ctansearch
(inaktiv)

bearbeitet 01 Sep '13, 20:36

@ctansearch „Die Unterschiede sind wohl zu zahlreich, um sie hier aufzulisten“. Das glaube ich nicht ;)

(02 Sep '13, 10:34) Epllus
Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs füge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×5

Frage gestellt: 01 Sep '13, 14:01

Frage wurde angeschaut: 3,225 Mal

Zuletzt aktualisiert: 02 Sep '13, 10:34