Trennung von Inhaltsstruktur und Stil in LaTeX?

Trennung von Inhaltsstruktur und Stil in LaTeX?

In HTML gab es im letzten Jahrzehnt einen starken Vorstoß in Richtung einer vollständigen Trennung von Inhaltsstruktur und Stil. Die meisten Websites werden heute mit HTML für die strukturelle Auszeichnung und CSS für die Darstellung dieser Auszeichnung erstellt. Dadurch ist es wirklich einfach, verschiedene Stile auf denselben Inhalt anzuwenden: Wenn Sie nicht wissen, wie leistungsfähig dies ist, sehen Sie sich zum Beispiel Folgendes an:http://www.csszengarden.com/Es gibt ein W3c-Dokument, das sich dafür ausspricht,Trennung von semantischer und präsentationaler Auszeichnung.

Ich bin relativ neu bei LaTeX, aber ich gestalte schon seit einiger Zeit Websites. Ja, das sind unterschiedliche Bereiche, aber sie versuchen dasselbe: Inhalte gut darzustellen. Meine Erfahrungen mit LaTeX in den letzten 6 Monaten lassen mich das Gefühl haben, dass dieses Konzept der Trennung von Inhalt und Stil noch nicht sehr weit in die TeX-Welt vorgedrungen ist. Um beispielsweise die Umbruchregeln einer Tabellenzelle in HTML+CSS zu definieren, müssen Sie nur eine Klasse zur Zelle hinzufügen und eine Zeile zu Ihrem CSS-Dokument hinzufügen. In LaTeX müssen Sie Folgendes tun:so etwas Schreckliches.

Übersehe ich also etwas, oder ist es LaTeX? Wird dieses Konzept der Trennung von Inhalt und Stil beim Design von LaTeX verwendet? Ist es nur schlecht umgesetzt? Ist es wahrscheinlich, dass es in zukünftigen Versionen (LaTeX3? ConTeXt?) besser umgesetzt wird?

Hinweis: Ich möchte LaTeX-Entwickler nicht beleidigen: Das System ist aus vielen anderen Gründen wirklich gut. Ich sehe nur diese klaffende Lücke und wenig Diskussion darüber und frage mich, warum.

Antwort1

Geschichte

Knuth schrieb TeX in den späten 1970er Jahren, weil er Material so gut setzen wollte, wie es ihm angesichts seiner begrenzten Kenntnisse und der damals verfügbaren Technologie möglich war. Es ist allgemein anerkannt, dass er ziemlich gute Arbeit geleistet hat, aber was er sicherlich nicht versuchte, war, Struktur und Stil zu trennen.

Lamport schrieb LaTeX Mitte der 1980er Jahre, als er die Notwendigkeit einer klareren Trennung der beiden Bereiche erkannte. LaTeX wurde Anfang der 1990er Jahre überarbeitet und der aktuelle Kernel stammt aus dem Jahr 1994 (natürlich mit Fehlerbehebungen). Dies ist einige Zeit älter als das HTML + CSS-Modell und auch hier bedeuteten technologische Einschränkungen, dass eine weitere Komplizierung von LaTeX damals unmöglich gewesen wäre. (1994 war LaTeX für viele PCs fast zu groß und das Team arbeitete hart daran, es zu verkleinern.)

In der HTML-Welt können neue Tags hinzugefügt werden und werden von Renderern, die sie nicht kennen, ignoriert. Das ist bei TeX nicht der Fall: Unbekannte Steuersequenzen sind Fehler. Wir können also nicht einfach neue Konzepte hinzufügen und erwarten, dass vorhandene Dokumente funktionieren: Dies istWirklichwichtig. Die Entscheidungen von 1994 sind also auch heute noch für LaTeX von Bedeutung.

ConTeXt ist neuer und trennt viel mehr Design ab als LaTeX „out of the box“. ConTeXt verfolgt auch einen anderen Ansatz zur Stabilität als LaTeX und hat eine aktivere Entwicklungsperspektive für den Kernel. Der ConTeXt-Ansatz ähnelt jedoch in mancher Hinsicht eher einfachem TeX als LaTeX, in dem Sinne, dass ConTeXt das Design „näher am Benutzer“ hält als LaTeX.

Ein- und Ausgabe

In der HTML-Welt wird ein Dokument vollständig in den Speicher gelesen, um den DOM für die Darstellung zu erstellen. So funktioniert TeX nicht, zumindest nicht, wenn wir es nicht vollständig selbst programmieren. Stattdessen liest TeX eine Zeile und verarbeitet sie, bevor mit der nächsten Zeile fortgefahren wird. (LuaTeX kann dies ändern, aber ich denke, selbst in ConTeXt gilt immer noch, dass das TeX-Modell das wichtigste ist.) Daher sind die zur Änderung des Erscheinungsbilds erforderlichen Ansätze sehr unterschiedlich.

Ein wichtiger Punkt, den man bei der Überlegung zu diesem Bereich im Hinterkopf behalten sollte, ist, was die Leute als Ausgabe wollen. In der TeX-Welt konzentrieren wir uns auf hochwertigen Schriftsatz. Daher wird es fast immer einige manuelle Anpassungen des Designs geben, um die Realitäten des Inhalts widerzuspiegeln. Das passiert nicht in „gut geschriebenem“ HTML, und obwohl es in XML ausgedrückt werden kann, wird dadurch sicherlich die strikte Trennung aufgehoben. Ich und andere würden argumentieren, dass dies keine schlechte Sache ist: Sie benötigen tatsächlich manuelle Eingriffe, um die besten Ergebnisse zu erzielen.

Tabellen

Tabellen werden in der Frage ausdrücklich erwähnt und ich denke, sie verdienen eine eigene Betrachtung. In HTML werden Tabellen für eine Vielzahl von Zwecken verwendet. In TeX gibt es einen viel eingeschränkteren Ansatz für Tabellen. Tabellen sind in der TeX-Welt bekanntermaßen komplexe Biester und Knuth hat darauf hingewiesen, dass es erstaunlich ist, dass sie überhaupt funktionieren! In den meisten gesetzten Dokumenten werden Tabellen hauptsächlich für „formale Tabellen“ verwendet und diese haben eine ziemlich eingeschränkte Auswahl an „guten“ Erscheinungsformen. Daher besteht weniger Bedarf, die gesamte Palette an CSS-ähnlichen Steuerelementen bereitzustellen.

Wie canaaerus in seiner Antwort sagt, wird die TeX-Welt nicht von einem Komitee, sondern von niemandem verwaltet, und was implementiert wird, hängt daher von den Wünschen der einzelnen Benutzer ab. Es gibt eine Reihe von Tabellenpaketen für LaTeX, dazu den ConTeXt-Ansatz und das Raw \halignin Plain TeX. Sie versuchen jedoch hauptsächlich, andere Probleme zu lösen, was Ihnen zeigt, wo die Priorität für die Benutzer liegt.

Vorausschauen

Als Mitglied des LaTeX3-Projekts weiß ich, dass wir sicherlich über eine bessere Trennung von Inhalt und Design diskutieren. Dabei sollte man jedoch bedenken, dass sich das HTML + CSS-Modell nicht immer gut in das umsetzen lässt, was wir für den Schriftsatz wollen. Es gibt einige erhebliche Unterschiede zwischen den beiden Bereichen, und das bedeutet, dass es nie so einfach sein wird.

Jeder bessere Ansatz muss mit TeX funktionieren, sowohl in Bezug auf den Code als auch auf die Schnittstelle. Wir habenexperimenteller Codeum mit den Beziehungen zwischen Objekten umzugehen ('l3ldb'), sowie die Idee von„Vorlagen“ für Design, die sich beide in diesem Bereich befinden.

Antwort2

Obwohl die Idee dieser Trennung von Inhalt und Auszeichnung für TeX-Entwickler und -Benutzer sicherlich nicht fremd ist, gibt es einige grundlegende Unterschiede zwischen der Arbeitsweise von TeX und HTML sowie deren Communities.

HTML ist im Wesentlichen zentral organisiert. Es gibt ein Komitee (nämlich das W3C), das die Webstandards entwickelt. Dann müssen alle Autoren von HTML-Dokumenten nach diesen Standards schreiben und die Entwickler von HTML-Interpretern (also meist Webbrowsern) müssen sie implementieren.

Bei TeX hingegen sieht es ganz anders aus. Es gibt keine definitiven Standards. Natürlich basiert das meiste auf Knuths Original-TeX. Aber es sind viele Dinge hinzugekommen. So gibt es jetzt beispielsweise verschiedene Makropakete, ConTeXt und LaTeX. Da sieht man schon, dass die grundlegende Syntax nicht festgelegt ist. Jeder kann sagen, er möchte lieber /Makros verwenden als \LaTeX. Außerdem werden viele der heute verwendeten Funktionen als Pakete hinzugefügt. Sie machen TeX extrem erweiterbar.

Dies führt uns zum technischen Teil des Unterschieds. TeX ist Turing-vollständig! HTML hingegen ist nur eine Auszeichnungssprache. In HTML geben Sie Inhalt, Struktur und Stil Ihres Dokuments an, in TeX schreiben Sie einen Algorithmus, wie Ihr Dokument aufgebaut wird.
Natürlich müssen Sie in den einfachsten Fällen keine komplizierten Programmierkonstrukte verwenden, und ein TeX-Dokument sieht daher nicht anders aus, als wäre es in einer Auszeichnungssprache geschrieben worden. Ich würde jedoch behaupten, dass die Trennung von Inhalt und Auszeichnung bei dieser Art von Dokumenten in TeX sehr gut umgesetzt wird.

Wenn Sie sich ansehendas BeispielWie Sie sagten, ist dies genau der Punkt, an dem die Dokumente nicht mehr wie Markierungen aussehen.

Antwort3

Wird dieses Konzept der Trennung von Inhalt und Stil beim Design von LaTeX verwendet? Ist es nur schlecht umgesetzt?

Es wird verwendet, und es ist nicht unbedingtschlechtimplementiert (siehe die anderen Antworten für eine historische Perspektive). Vielmehr wird es auf einer ziemlichniedriges Niveau.

DudürfenTrennen Sie Inhalt und Stil in LaTeX unbedingt strikt (und ich rate Ihnen sogar dringend dazu). Dazu müssen Sie jedoch die Möglichkeiten von LaTeX nutzen, Makros zu definieren.

LaTeX hat einewenigesemantische Makros wie \chapterund \emph(es gibt natürlich noch viele mehr). Es gibt Dokumentklassen und Pakete, die Ihnen noch viel mehr Möglichkeiten bieten. Die KOMA-Skriptklassen bieten beispielsweise eine ganze Reihe von Makros, umanpassendas Erscheinungsbild der von LaTeX bereitgestellten semantischen Makros.

In der Praxis hängt die von Ihnen benötigte Semantik jedoch stark von der Art des Dokuments ab, das Sie schreiben. Es gibt also Dokumentklassen wie , scrlttr2die semantische Makros für die spezifische Aufgabe des Schreibens eines Briefs bereitstellen, aber dies sind die Ausnahme:Anstatt eine Vielzahl hochgradig domänenspezifischer semantischer Makros bereitzustellen, bietet LaTeX eine Sprache zum Erstellen domänenspezifischer Makros.

Letztendlich sollte Ihr Dokument frei von physischen Layoutmakros sein und ausschließlich semantische Makros verwenden. \textbf? Nein, verwenden Sie ein Makro, das beschreibtWarumSie möchten fetten Text.

Da sie so domänenspezifisch sind, werden Sie die meisten Makros, die Sie benötigen, wahrscheinlich selbst schreiben. Aus diesem Grund stellen Ihnen viele LaTeX-Pakete die Werkzeuge zur Verfügung, die Ihnen dies so einfach wie möglich machen. Es gibt beispielsweise Pakete zum Anpassen der Anzeige von Abbildungen (oder zum Erstellen benutzerdefinierter Abbildungstypen; siehe captionoder float); es gibt Pakete, die das Schreiben leistungsstarker Makros erleichtern ( etoolboxund den Großteil von LaTeX3). Und es gibt Pakete für viele spezielle Anwendungsfälle wie das Hervorheben von Quellcode.

Damit ist es in den meisten Fällen relativ unkompliziert, einen einfachen Satz semantischer Makros zusammenzustellen, der im gesamten Dokument verwendet werden kann. Dennoch nehmen die Makrodefinitionen meiner Masterarbeit etwa ein Sechstel (in SLOC, Kommentare entfernt) des gesamten Dokuments ein.

Antwort4

Ich stimme auf jeden Fall zu, dass die Trennung von Struktur und Stil einer der grundlegenden Vorteile von LaTeX und ConTeXt ist. Allerdings ist es in der Praxis schwierig, eine Vermischung völlig zu vermeiden. Es stellt sich heraus, dass nur sehr einfache Dokumente Stil und Inhalt vollständig trennen können. Im realen Fall eines Buchs von bescheidener Größe ist fast immer eine Feinabstimmung im letzten Moment erforderlich, wodurch die Trennung effektiv aufgehoben wird. Für mich als Verleger besteht die praktischste Lösung für eine 100-prozentige Trennung darin, den Inhalt immer in einer XML-Datei zu speichern, die die Struktur des Dokuments definiert, und alle stilbezogenen Anweisungen in einer ConTeXt-Datei zu haben. ConTeXt ist ein sehr praktischer XML-Prozessor. Natürlich können Sie mit XSLT ganz einfach eine LaTeX-Datei aus Ihrem XML erstellen und LaTeX verwenden, wenn Sie dies bevorzugen. In diesem Fall sollten Sie alle stilbezogenen Anweisungen in Ihre XSL-Datei einfügen.

verwandte Informationen