Die Parole vom Abschneiden alter Zöpfe wird immer wieder gerne gebraucht. Einige Zeitgenossen meinen ja, TeX selbst sei so ein alter Zopf. Tatsächlich aber ist die Gemeinschaft derer, die mit und an TeX arbeiten, aktiver als selten zuvor. LaTeX galt lange Zeit als stabil, womit eigentlich eher statisch bis hin zur Stagnation gemeint war. Seit letztem Jahr ist das wieder erkennbar anders. Das LaTeX-Team baut Verbesserungen wieder direkt in LaTeX ein, Kompatibilität gibt es nur bei expliziter Auswahl einer bestimmten Version.¹ Stabil im besten Sinne ist LaTeX trotzdem weiterhin. Die Progressivität spielt sich hauptsächlich unter der Oberfläche und in der Verbesserung des Ergebnisses ab.
Auch KOMA-Script enthält Dinge, die heute weder dem allgemeinen Stand von Wissen und Wollen entsprechen noch meinem eigenen. Einiges davon habe ich in den letzten beiden Jahren teilweise extrem überarbeitet. Auch dabei habe ich mich bemüht, die Änderungen unter der Oberfläche zu verstecken. Offensichtlich wurden sie jedoch in erster Linie durch neue Schnittstellen für den Anwender.
Aber auch alte Zöpfe wurden nach mehr als deutlicher Ankündigung und trotzdem für einige überraschend abgeschnitten. So habe ich nach rund zwanzig Jahren, in denen ihre Verwendbarkeit mit KOMA-Script-Klassen undokumentiert war, und längerer Zeit, in der vor ihrer Verwendung mit KOMA-Script-Klassen ausdrücklich und zunehmend intensiv gewarnt wurde, die veralteten Font-Befehle mit einer Fehlermeldung versehen. Der nächste Schritt wird vermutlich sein, dass man an die alten Font-Befehle nur noch heran kommt, wenn man die Kompatibilität auf version=first
stellt. Sollte es je KOMA-Script 4 geben, wird es diese Befehle ganz bestimmt nicht mehr enthalten.
Mich selbst betreffen alte Zöpfe auch immer wieder. So stecken in KOMA-Script 3 noch immer einige Code-Teile aus KOMA-Script 2, die mir vor Augen halten, wie wenig ich vor 20 Jahren und mehr tatsächlich von LaTeX verstanden habe. Bei Änderungen bin ich auch ständig im Zwiespalt, zwischen der Aufrechterhaltung von einer Art Gesamtbild und Verfolgung eines raffinierteren Ansatzes, der manchmal vielleicht schwerer zu verstehen aber dafür deutlich eleganter wäre.
Mancher mag sich fragen, was Quelltext mit einem Bild zu tun hat. Jeder Programmierer hat seinen eigenen Stil und der wandelt sich im Laufe der Jahre. Quelltext aus einem Guss ist meist leichter zu durchschauen und zu überblicken. Bei mehreren zehntausend Zeilen Code kann es also durchaus sinnvoll sein, sich bei Änderungen an den vorhandenen Stil anzupassen, statt auf dem zu bestehen, was man für die optimale Implementierung hält.
Ich stand beispielsweise vor der Entscheidung, eines der essentiellen KOMA-Script-Pakete, dessen Fähigkeiten enorm erweitert wurden und dessen Code sich im Zuge dessen fast Verdreifacht hat, komplett auf l3 umzustellen. Um keinen Fremdkörper in KOMA-Script zu schaffen und keine Abhängigkeit von einem noch immer nicht wirklich stabilen System, habe ich mich dagegen entschieden.
Es gibt aber auch Teile, die mir immer wieder Schwierigkeiten bereiten. Ein nie endendes Thema sind die Abbildungen in der Anleitung. Als ich mit KOMA-Script begonnen habe, war die LaTeX picture
-Umgebung mit einige Erweiterungen state of the art. Alles andere wurde extern gezeichnet und als Bild eingefügt. Externe Bilder wollte ich nicht. Die Erweiterungen waren häufig proprietär. Also habe ich bewusst, Abbildungen mit picture
erstellt. Als Jens-Uwe Anfang des Jahrtausends Teile der Anleitung übernommen hat, fand er das allerdings wenig schön². Er war ein großer MetaPost-Fan und hat deshalb diverse Grafiken bis hin zum Buch-Cover damit realisiert.³ Mir erschien das damals ein sehr guter Ansatz und das war es auch. Mit PS-Tricks gab es zur damaligen Zeit im Zusammenspiel mit pdflatex ständig Probleme⁴. Dieses pgf hielten damals noch viele für einen Schreibfehler.⁵
Um es deutlich zu sagen: MetaPost ist eine tolle Sache. Anfangs waren auch alle Änderungen, die ich an den damit programmierten Bildern gemacht habe, eine Sache von ein paar Minuten. Dadurch, dass LuaTeX MetaPost quasi als Zugabe mitbringt, ist es genau genommen auch alles andere als ein alter Zopf. Vielmehr wäre die Verwendung von luamplib eine moderne, großartige Lösung. Das Problem liegt hier weniger bei MetaPost. Das Problem bin ich. Ich verwende MetaPost seit min. 10 Jahren nur noch für die KOMA-Script-Anleitung. Alle paar Jahr muss ich das Cover überarbeiten. Aufgrund von Unsauberkeiten im Code desselben hat das zuletzt mit TeX Live 2013 problemlos funktioniert. Alle paar Jahre muss ich etwas an einer der MetaPost-Abbildungen in der Anleitung ändern, die allesamt extern via docstrip extrahiert und mit mpost in PDFs verwandelt und dann in die Anleitung eingebunden werden. Für mich bedeutet daher jede Änderung, dass ich mich wieder neu in MetaPost zurecht finden muss.
Erst dieser Tage wurde genau das wieder einmal zu einem Problem. Die externen MetaPost-Abbildungen konnten nicht generiert werden und ich musste nach einer Möglichkeit suchen, das zu debuggen. Die vielen »Wie ging das noch mal? Welche temporäre Datei kann man wie finden und testweise direkt verarbeiten?« haben mich wieder einmal unnötig aufgehalten. Erschwert wurde das noch dadurch, dass es scheinbar hier lokal auf meinem Rechner gar nicht aufgetreten ist, während auf dem Remote-Server für die Release-Erzeugung ein Prozess regelmäßig bei 100% Last für einen CPU-Kern stehen geblieben ist. Auf dem Remote-Server ist alles Script gesteuert und auf unbewachtes Arbeiten ausgelegt. Das macht das Debuggen, wenn es denn einmal dort notwendig wird, nicht leichter.
Langer Rede kurzer Sinn, das schon lange anstehende Projekt, alle Abbildungen entweder mit picture
oder TikZ zu erledigen, wurde wieder einmal dringender. Allerdings bin ich alles andere als ein TikZ-Experte. Und wenn ich das schon verwende, dann soll die Lösung natürlich ebenso elegant werden wie die MetaPost-Lösung. Ob das dann wirklich eine substantielle Verbesserung darstellen würde, steht in den Sternen. So kann es sein, dass ich auch in Jahren noch mit dem MetaPost-Code herumwerkle.
Das erinnert mich nun irgendwie an die Zöpfe meiner Oma. Die waren über Jahrzehnte immer hochgesteckt. Zu sehen bekamen die nur wir Enkel, wenn wir bei ihr übernachtet haben. Alle anderen sahen das hochgesteckte Ergebnis, bei dem von Zöpfen nichts zu erkennen war. Erst in hohem Alter konnte sie sich dazu durchringen, die Zöpfe abscheiden zu lassen. Wir werden sehen, in welch hohem Alter KOMA-Script noch welche Zöpfe abgeschnitten werden.⁶
In diesem Sinne
Markus
PS: Fußnoten habe ich auch einmal für Zöpfe gehalten, die man dringend abschneiden sollte:
2 Wobei sich seine Kritik ausdrücklich nicht auf das Ergebnis, sondern auf die Herstellung desselben bezog.
3 Gerne gebe ich zu, dass ich selbst ebenfalls nicht nur vom Ergebnis, sondern auch vom Vorgehen begeistert war.
4 Einige der PS-Tricks-Fans und -Entwickler werden das sicher nicht gerne hören und objektiv für eine schwachsinnige Äußerung betrachten. Das bleibt ihnen unbelassen. Aber für viele Anwender und auf der Support-Seite stellte es sich subjektiv so tatsächlich dar.
5 Übrigens ganz so wie auch heute noch einige Leute glauben, das Koma in KOMA-Script komme daher, weil man beim Lesen der Anleitung ins Koma fällt, und das Script in KOMA-Script beziehe sich allein auf die Anleitung. Das führt dann zu so Stilblüten wie: »Ich habe mit Koma ein Problem. Ihr Script habe ich gelesen. Leider verstehe ich trotzdem nicht, wie ich …« Gerade den ersten Satz habe ich so oft gelesen, dass ich doch sehr hoffe, dass diejenigen, die ihn geschrieben haben, nicht wirklich alle ein Problem mit mir haben.
6 Wobei bewusst offen gelassen sei, ob sich das hohe Alter auf meine Wenigkeit oder auf die von KOMA-Script bezieht.