Gesetz eine erforderliche (Mindest-) Vielfalt (Komplexität)

Gesetz eine erforderliche (Mindest-) Vielfalt (Komplexität)

In letzter Zeit bin ich zunehmend besorgt, dass LaTeX (möglicherweise) überholt wird vonTypaufgrund seiner Einfachheit.Diese Antwortzeigt mehrere Kanten von Typst gegenüber LaTeX.

Ich habe mit einem meiner Klassenkameraden darüber gestritten, warum ich immer noch LaTeX statt Typst bevorzuge:

  • Die Satzqualität von LaTeX ist überlegen(obwohl Typst schnell aufholt)
  • Ich liebe TikZ, während es in Typst kein Gegenstück gibt(eigentlich gibt es jetztCeTZ)
  • Die CJK-Unterstützung in Typst ist schlecht, während XeLaTeX und LuaLaTeX CJK-Schriftarten gut verarbeiten(Ich denke aber, dass sie das bald beheben werden)
  • Mathe in Typst ist furchtbar, LaTeX hat bereits den Standard gesetzt
  • Da ich an LaTeX gewöhnt bin, möchte ich eigentlich nicht auf Typst umsteigen:-(

Einige Tatsachen haben mich jedoch überrascht:

  • Makros in LaTeX sind nicht so praktisch wie die eigentliche Programmierung, obwohl es LaTeX3 gibt, um das Problem zu mildern.
  • Die Kompilierung von LaTeX-Dokumenten kann langsam sein, im Vergleich zu Typst mit Rust.
  • Die einfachere Syntax von Typst wird die Leute eher dazu veranlassen, Typst statt LaTeX zu lernen. LaTeX hat viele Pakete (und einige davon widersprechen sich sogar), was für Lernende sehr verwirrend sein kann.

Ich habe einige der Änderungen gesehen, die innerhalb der LaTeX-Community vorgenommen wurden, daruntertektonischNeuschreiben von LaTeX mit Rust.

Was also ist der Plan der TeX-Community, um TeX/LaTeX, diese wunderbare Sprache, weiterhin florieren zu lassen? Ich möchte gern mehr lernen und meinen Beitrag leisten.

Antwort1

Nun, zunächst wäre ich eher skeptisch gegenüber der Behauptung „einfach“ und „schnell“. Vor 10 Jahren beantwortete ich eine Frage zu den Unterschieden zwischen Word und LaTeX mit

Ja, die meisten normalen Dinge können Sie mit Word problemlos erledigen (und manchmal auch schneller oder einfacher). Aber was ist mit etwas „unnormalen Dingen“?

typen ist „modern“, was ein anderes Wort für jung ist. Als es gestartet wurde, konnte es nicht einmal ganz normale Dinge wie Fußnoten, Floats, Lesezeichen, Doppelseitenlayouts, Formularfelder oder PDF-Kommentare ausführen. Und obwohl einige davon jetzt implementiert sind, fehlen ihnen immer noch viele der Konfigurationsoptionen, die in LaTeX oder unterstützenden Paketen vorhanden sind. Ein aktuelles Beispiel ist diese Diskussion darüber, wie man etwas so Grundlegendes wie ein \pagerefin typen bekommt:https://github.com/typst/typst/issues/2873.

Es ist einfach, einfache Dinge mit einer leicht zu erlernenden Syntax zu tun, und ich stimme völlig zu, dass dies # my chaptereine schöne, kurze Möglichkeit ist, eine Überschrift zu erstellen (aber die LaTeX-Syntax \chapter{my chapter}ist auch nicht lang), aber die Frage ist, was passiert, wenn Sie kompliziertere Dinge wollen. Gibt es eine intuitive Syntax für einen nicht nummerierten Abschnitt? Wie können Sie den Eintrag im Inhaltsverzeichnis oder in der Überschrift anpassen? Ist das integriert oder muss man zehn oder mehr Codezeilen suchen und kopieren, wie für den Seitenverweis im oben zitierten Problem? Wird typst weiterhin einfach zu verwenden sein, wenn es ausgereifter wird und Funktionsanfragen für anspruchsvollere Dokumentfunktionen erhält?

Zweitens bin ich ziemlich bestürzt, dass ein „modernes“ System wie typst die Zugänglichkeitsfunktionen für PDFs nicht von Anfang an unterstützt. Zugänglichkeit mag für private Dokumente keine Rolle spielen, aber jeder, der für eine Organisation schreibt, wird sich bald mit diesem Thema befassen müssen. Die Autoren von typst wussten das und sie wussten, dass sie die Strukturdaten für ein getaggtes PDF benötigen, aber sie haben ihren Compiler trotzdem so geschrieben, dass er diese verliert: „Da die Frames derzeit nur Locators und kein vollständiges Reverse-Mapping zur Struktur des Dokuments enthalten, kann der Exporter diese Strukturinformationen nicht schreiben." Siebeanspruchendass sie sindin einer guten Position, da eine Menge semantischer Informationen verfügbar sind, aber in LaTeX stehen die semantischen Informationen seit 30 Jahren zur Verfügung und das macht es nicht einfach, zugängliche, getaggte PDF-Dateien zu erstellen.

Wenn ich erwogen hätte, eine Satzmaschine von Grund auf neu zu schreiben (was ich nicht getan hätte, da ich der Meinung bin, dass große Systeme durch Evolution verändert werden sollten, nicht durch Abreißen und Wiederaufbauen – man kann nicht alle Einwohner einer Stadt aussiedeln, während man sie von Grund auf neu gestaltet), dann hätte ich sichergestellt, dass das Kerndesign die Zugänglichkeit von Anfang an berücksichtigt und das nicht erst nachträglich hinzugefügt. Dass sie diese Gelegenheit verpasst haben, macht typst in meinen Augen sehr unmodern.

Antwort2

Als jemand, der auch einen LaTeX-Ersatz schreibt, denke ich, dass es gut wäre, wenn LaTeX in Zukunft durch etwas anderes ersetzt würde. Das Programmieren in der Makrosprache TeX ist ein Chaos und die Verpflichtung zur Abwärtskompatibilität bedeutet, dass der Fortschritt langsam, wenn nicht gar unmöglich ist (ich denke immer noch, dass es ein großer Fehler war, LaTeX3 in ein sich entwickelndes LaTeX2e einzubinden, anstatt eine Hauptversionsnummer zu nutzen, um die Abwärtskompatibilität aufzuheben).

Meine Vorhersage ist, dass der Nachfolger von LaTeX, sollte er jemals erscheinen, die Auszeichnung von LaTeX beibehalten, aber das makrobasierte Programmiermodell meiden wird. Autoren müssen in der Lage sein, ohne große Probleme umzusteigen. Ich glaube nicht, dass irgendjemand dem Tod des fragilen Makrosystems von LaTeX nachtrauern würde. Nur weil TeX Turing-vollständig ist, heißt das nicht, dass es die beste oder auch nur eine gute Methode ist, Dinge zu tun.

Ich würde erwarten, dass Pakete und Dokumentklassen (oder deren Äquivalente) in einer Versionierung enthalten sein werden, sodass niemand überrascht ist, wenn CTAN ein Paket mit drei Abhängigkeiten aktualisiert und das Dokument nicht mehr kompiliert wird. Außerdem gibt es in modernen Computersystemen keinen Grund, warum mehrere Durchläufe notwendig sein sollten, um Dinge wie Referenzen und Zitate zu verwalten. Eine einzelne Anwendung könnte die Funktionen von LaTeX, BibTeX, makeindex usw. verarbeiten.

Ich habe auch das Gefühl, dass anstatt zu schreiben, z. B.

\documentclass{amsart}

der bessere Ansatz wäre vielleicht gewesen, etwas wie

\DocumentStructure{article}
\DocumentFormat{ams}

oder noch besser:

\DocumentStructure{article:1.0}
\DocumentFormat{ams:ams:1.0}

wo wir nicht nur Versionsnummern, sondern auch Namespaces haben, sodass man sich nicht ständig Sorgen machen muss, dass es zu Kollisionen mit den Dateinamen der anderen kommt.

Abschließend würde ich vorschlagen, dass externe Abhängigkeiten zum Dokument automatisch heruntergeladen werden, wenn keine lokale Kopie vorhanden ist, sodass die Kernverteilung nicht mehr ganz so walgroß ist.

Antwort3

Der größte Nachteil von typst und meiner Meinung nach ein schwerwiegender Designfehler ist, dass es nicht mit kompatibel ist LaTeX. Was macht man mit großen Mengen vorhandener Dokumente, Archive usw.? Alles wegwerfen und von vorne beginnen? Ich verwende LaTeX seit seiner Einführung, also seit fast 40 Jahren! Meilensteine ​​der Verbesserungen waren die Verwendung von Laserjets (schnell angepasst), pdfTeX, babel, jetzt die l3Ebene, LuaTeX, PGF/Tikz, BiblaTeX, microtype.

Die Auszeichnungssprache von TeX/LaTeX wird Bestand haben und bestehen bleiben, wahrscheinlich länger als viele der älteren Generation, die wir noch verwenden. Wie jeder, der das Dragon-Buch gelesen hat, Ihnen sagen wird, ist es nicht einfach, einen Compiler zu entwickeln, der Befehle und Parameter aus einem Meer von Buchstaben herauspickt, die ihn umgeben.

Kann es verbessert werden? Ja! Bereiche, die meiner Meinung nach verbessert werden können:

  1. Automatischer Ersatz fehlender Glyphen in Schriftarten, ähnlich wie es Webbrowser und IDEs tun. Dies kann derzeit mit LuaTeX/LuaLaTeX mit Ersatzschriftarten erreicht werden, wird aber quälend langsam.
  2. Programmierbare Ausgaberoutinen. Standardeinstellungen sollten in die TeX-Engine selbst integriert sein.
  3. Viele der Probleme mit Konflikten in Paketen haben ihren Ursprung in hyperef. Es sollte ein neuer Mechanismus entwickelt werden, der es Autoren ermöglicht, Links einfacher zu verwenden, anstatt vom Paket abhängig zu sein. Die Basisklassen können geändert werden, um dies zu integrieren, sodass hyperref nicht alle Befehle zum Aufteilen und Verweisen neu definieren muss. Integrieren Sie dies in das Format.
  4. Die Handhabung indischer und ostasiatischer Dokumente kann durch Beiträge zu haffbuz und LuaTeX verbessert werden. Es sollte nicht nötig sein, ein Paket zu laden, um eine Sprache zu ändern.
  5. Die Erstellung virtueller Schriftarten kann verbessert werden.

Allen, die verschiedene Systeme ausprobieren und entwickeln, danke, Wettbewerb ist gut und ich wünsche Ihnen viel Glück. Ich habe mir neulich einige Statistiken angesehen und festgestellt, dass zwischen L3 und LuaTeX etwa 130.000 Locs zu dem hinzugefügt wurden, was bei einem Durchlauf geladen wird. Das ursprüngliche TeX hatte etwa 20.000 Locs. Vielleicht sind einige Bemühungen, die Engines selbst zu verbessern, um einige der problematischen Bereiche zu bewältigen, einfacher und nützlicher, als alles von Grund auf neu zu schreiben.

Antwort4

Ohne konkrete Pläne der Latex-Community zu kennen, können wir anticipate future developmentvon beidem ausgehen Latexund Typstbis zu einem gewissen Grad zwei wissenschaftliche Erkenntnisse wiederverwenden.

Dies führt uns weg von der Betrachtung konkreter Pläne oder Spekulationen und hin zu einer fundierteren, globaleren Sichtweise.

Gesetz eine erforderliche (Mindest-) Vielfalt (Komplexität)

Dies geht zurück aufW. Ross Ashby, einer der Gründerväter der Kybernetik. Er sagte, teilweise in meinen Worten:

  • mit Komplexität umgehen
  • der Regler/Controller muss mindestens ebenso komplex sein;
  • Regulierung scheitert bei zu komplexen Regulierungsbehörden
  • insbesondere wenn Lärm (Störungen) damit verbunden sind.

Ashbys Beispiel

In seinem"Einführung in die Kybernetik", 1956Er verwendet einen Temperaturregler, um seine grundlegende Gleichung und Überlegungen zu veranschaulichen.

Im Wesentlichen heißt es dort:

  • Innerhalb eines normalen Bereichs der Umgebungstemperaturschwankungen funktioniert der Controller einwandfrei
  • Bei sehr unruhigen Wetterlagen versagt es allerdings, da es die Veränderungen einfach nicht mehr ausgleichen kann.

Siehe zBhier (ein vereinfachtes Kapitel), oderhier (Wikipedia zu Variety)oderhier (in seinem oben zitierten Buch).

Vielfalt-Wikipedia

Meine Illustration

Denken wir an eine einfache Eisenbahn. Ein Gleis, ein Zug, kein Problem. Der Zug fährt den ganzen Tag hin und her.

Erhöhen wir die Komplexität (C+) schrittweise als Reaktion auf immer stärker werdende Störungen (D+).

D+: Setzen Sie einen zweiten Zug auf das gleiche Gleis. Jetzt beginnen die Probleme, da sie sich gegenseitig behindern. Als Lösung müssen wir die Komplexität des Systems erhöhen.

C+: Lasst uns einen Fahrplan einführen, der regelt, welcher Zug wann wohin fährt, wie oft usw. Das mag für viele Situationen gut sein.

D+: Das Fahren mit beiden Zügen ist beliebter geworden und die Leute beginnen sich darüber zu ärgern, dass sie ständig umsteigen müssen, nur um von einem Ende zum anderen zu gelangen.

C+: Fügen wir eine Weiche hinzu, damit die beiden Züge aneinander vorbeifahren können. Passen wir den Fahrplan an.

Und so weiter. Wir alle kennen den Grad der Komplexität, den Eisenbahnsysteme heute erreicht haben, wie:

  • oft mit mindestens zwei Gleisen pro Richtung
  • viele Gleise an oder in der Nähe bestimmter Bahnhöfe haben
  • bietet eine Vielzahl von Zügen
  • mit Signalen aller Art
  • Bereitstellung vieler verschiedener Arten von Bahnübergängen
  • digitale Zwillinge dessen haben, „was draußen passiert“
  • usw.

Vereinfachen, wie es Wirtschaftskontrolleure häufig tun, und jemand zahlt einen Preis dafür.(Sackgasse)

Erfinden, und erhalten Sie beides: einfacher UND komplexer.(Innovation)

Wobei letzteres eine Zusammenfassung der Arbeit des Erfinders von(Absicht) „Innovation als Wissenschaft“, Genrich Altshuller. (TRIZ, russisches Akronym, meine Übersetzung bedeutet: eine praktische Theorie zur Lösung erfinderischer Situationen)

Was bedeutet dies für Latex und Typst?

Wir alle wissen: LatexIST komplex. Oder, wie Ashby es sieht: es kommt mit viel Abwechslung/Störungen zurecht. Es hat sich zu einem hohen Niveau des Schriftsatzes entwickelt ... undist es immer noch, siehe hier.

Von seiner Entwicklung her Typstbefindet es sich noch in seiner sogenannten infancy state. Es begann mit einem bestimmten Konzept im Kopf, das noch eine begrenzte Anzahl von typisierten Ergebnissen bietet, und es wird sich weiterentwickeln, wie jedes technische System,

  • aus Widerspruch(roadblock, trade-off: this EXOR that)
  • über eine Lösung(system change, exact solution: this AND that)
  • zum Widerspruch (next roadblock).

Wie viele Leute sagten, TypstIST einfacher und soll es auch sein. Was sich in folgendes übersetzen lässt:

  • Typstist weniger komplex alsLatex
  • Latexkann mit mehr Störungen/Abwechslung/Anforderungen umgehen als Typstjetzt und wird das vielleicht noch lange tun
  • Um mit der Vielfalt von Schritt zu halten Latex, muss das TypstÖkosystem (Syntax, Compiler, Pakete, Bibliotheken usw.) komplexer werden und in der Lage sein, mehr Anforderungen/Vielfalt aufzunehmen.

Die Folge wird wahrscheinlich sein:

  • es einfacher sein, Übersetzer zu finden Latex2Typst(Abschaffung der Vielfalt)
  • es schwierig oder fast unmöglich sein, Übersetzer zu finden Typst2Latex(was für mehr Abwechslung/Komplexität sorgt)(im Gegensatz zur bloßen Speicherung in einem Latex-Dateiformat)

Meine Schlussfolgerungen und Einschätzungen (in der Zukunft)

Für die nahe Zukunft gehe ich davon aus, Typstdass ichYundAnochMAbonnierenMSprache, während Latexder Schriftsatz weiterhin unterstützt wird ...

Einige Links zwischen den beiden (oben Übersetzer genannt) werden kommen und gehen.

Es könnte sich herausstellen, dass es eine nützliche (ziemlich große) Teilmenge von gibt Typst, die von absorbiert (bereitgestellt) werden kann Latex.

Im Gegenteil, es wird zumindest die Komplexität des Schriftsatzes beibehalten, aber wahrscheinlich nie einen brauchbaren Zustand erreichen.

verwandte Informationen