Wann ist TeX besser als LaTeX?

Wann ist TeX besser als LaTeX?

Gibt es Situationen, in denen es besser ist, zum Schreiben eines Dokuments TeX (oder vielleicht einfaches TeX) statt LaTeX zu verwenden?

Antwort1

  • TeX ist nützlich, wenn Sie vollständig verstehen möchten, was vor sich geht, oder die volle Kontrolle haben möchten. Im Prinzip ist dies auch mit LaTeX möglich, aber es gibt noch viel mehr zu verstehen. (Das heißt, LaTeX isteinfachaber nichteinfach, während reines TeX zwar einfach, aber nicht leicht ist.Verwandter Vortrag zum Thema Softwaredesign.)

  • TeX ist ein Werkzeug für den Schriftsatz; LaTeX ist ein System zur Dokumentvorbereitung. Meiner Meinung nach ist TeX nützlich, wenn Sie die Rolle des Druckers/Schriftsetzers spielen möchten; LaTeX ist nützlich, wenn Sie die Rolle des Autors spielen möchten.

Um auf den zweiten Punkt einzugehen: Früher wurden Bücher folgendermaßen hergestellt:

  • DerAutorwürden ihr Manuskript (den Inhalt des Buches) entweder von Hand (mit Kugelschreiber oder Bleistift auf Papier) oder mit einer Schreibmaschine oder etwas Ähnlichem schreiben und es dann (nach der Bearbeitung und Korrektur usw.) an einen Drucker (eine Person) schicken.

  • DerDrucker(ein Mensch, keine Maschine!) hätte die Aufgabe, diesen Inhalt zu nehmen und ihn in Seiten umzuwandeln: Metalllettern (für jeden Buchstaben) aufnehmen, sie in gleich lange Zeilen anordnen, hier und da Leerzeichen hinzufügen und so weiter. (Buchstäblich: Schrift setzen, also Schriftsetzer.)

TeX wurde ursprünglich geschrieben, um bei letzterer Aufgabe zu helfen (Knuth hatte bereits den Großteil des Inhalts; er war gerade dabei, die zweite Ausgabe seines Buches (TAOCP Vol 2) zu erstellen); später erkannte Leslie Lamport, dass dies alles zu einfach für Autoren war, und entwickelte LaTeX. Es ist daher schwer zu empfehlen, ein Buch von Grund auf in einfachem TeX zu schreiben; Sie werden wahrscheinlich genau wie bei LaTeX mit Ihren eigenen komplexen Makros enden. Wenn Sie den Inhalt jedoch bereits in einem anderen Format haben und nur ein Problem lösen möchten, das sehr spezifisch für Seiten einer bestimmten bekannten Größe ist, ist es möglicherweise einfacher, dies mit einfachem TeX (mit möglichst wenigen Makros) als mit LaTeX zu tun.


Um ein eher triviales Beispiel für den ersten Punkt zu geben: Betrachten Sie die Befehle zum Ändern der Schriftart. Plain TeX bietet eine Möglichkeit, „beginnen Sie mit der Verwendung der folgenden Schriftart“ zu sagen, etwas Konkretes wie „Computer Modern kursiv bei 9pt“. Natürlich möchten Sie am Ende wahrscheinlich wieder zur Antiqua-Schrift wechseln, also müssen Sie darauf achten, diesen Befehl in eine Gruppe einzuschließen. Aber nicht nur das: Sie verwenden wahrscheinlich Kursivschrift zur Hervorhebung, und wenn Sie innerhalb einer hervorgehobenen Stelle noch mehr hervorheben möchten, dann ist es üblich, wieder zur Antiqua-Schrift zu wechseln. Wenn Sie etwas innerhalb einer Fettschrift hervorheben möchten, sollten Sie nicht zur normalen Kursivschrift, sondern zur fetten Kursivschrift wechseln. Ähnlich sollten Sie, wenn Ihre Schriftart größer ist, zur größeren Kursivschrift wechseln. All diese Dinge \empherledigt die Standardeinstellung von LaTeX automatisch. Das ist normalerweise das, was Sie wollen, wenn Sie ein Dokument schreiben. Wenn Sie jedoch aus irgendeinem Grund explizit steuern möchten, welche Schriftart wo verwendet wird, wissen Sie möglicherweise nicht, wie das mit LaTeX geht, und wenn Sie es herausfinden, verwenden Sie etwas, das so weit von typischem LaTeX entfernt ist, dass es eher an einfaches TeX erinnert.

Hier ist ein weiteres Beispiel, dank Bruno Le FlochsunravelPaket. Vergleichen Sie, was intern passiert, wenn Sie LaTeX \newcommandim Vergleich zu einfachem TeX ausführen \def:

\documentclass{article}
\usepackage{unravel}
\begin{document}
\unravel{\newcommand*{\foo}[1]{bar(#1)}}   % The LaTeX way
\unravel{\def\foo#1{bar(#1)}}              % The plain-TeX way
\foo{3}
\end{document}

Wie von angegeben unravel, sind für die erste Version 126 Schritte erforderlich, für die zweite Version 2 Schritte. Dieses Beispiel veranschaulicht einige weitere Unterschiede zwischen LaTeX und einfachem TeX:

  • Die einfache TeX-Methode ist in LaTeX technisch immer noch verfügbar, wird nur nicht empfohlen.
  • Einfaches TeX-Markup kann oft kürzer sein (indem man weniger tut: siehe nächster Punkt).
  • Die meisten Autoren bevorzugen vermutlich die LaTeX-Methode, da sie auf Erfahrung beruht und zusätzlichen Schutz bietet (in diesem Fall gegen die allzu häufige Möglichkeit, einen vorhandenen Befehl versehentlich neu zu definieren).
  • Dennoch sind sich insgesamt nur sehr wenige LaTeX-Benutzer über alles im Klaren, was \newcommandim Hintergrund passiert. Daher ist es weniger förderlich, genau zu verstehen, was vor sich geht.

Als weiteres Beispiel (das letzte, versprochen) vergleichen Sie eine Standardmethode in LaTeX zum Erstellen einer Aufzählungsliste:

\documentclass{article}
\begin{document}

Some text.
\begin{itemize}
\item first
\item second
\end{itemize}
More text.

\end{document}

mit der Art und Weise, wie Knuth es macht texbook.tex(entspricht Seite 10):

% TeXbook uses "\input manmac"; for this example just need the following from it.
\def\bull{\vrule height .9ex width .8ex depth -.1ex } % square bullet
% These 3 are already in plain.tex, reproduced here as they may be less familiar.
\def\hang{\hangindent\parindent}
\def\textindent#1{\indent\llap{#1\enspace}\ignorespaces}
\def\item{\par\hang\textindent}

Some text.
\nobreak\medskip
\item\bull first
\smallskip
\item\bull second
\medbreak\noindent
More text.

\bye

Wenn Sie „Etwas Text... Mehr Text“ mit \tracingmacros=1und umgeben \tracingmacros=0, erhalten Sie im LaTeX-Fall etwa 25-mal mehr Zeilen. Wichtiger noch ist, dass die LaTeX-Methode wahrscheinlich näher am Geist des Autors ist und die TeX-Methode den gesamten Schriftsatz deutlich zeigt.

Antwort2

Auf die Frage gibt es keine Antwort, sie erfüllt eigentlich den Standardgrund für eine „meinungsbasierte“ Schließung. Ich versuche aber trotzdem, sie zu beantworten.

TeX ist eine Makroerweiterungssprache und

LaTeX wird als eine Reihe von Makros definiert, sodass alles, was Sie in LaTeX schreiben, letztendlich zu einer Folge von TeX-Grundelementen erweitert wird.

Umgekehrt können Sie in TeX Makros definieren. Ausgehend von den Grundelementen (Initex) oder von einfachem TeX können Sie also Makros definieren, die denen in LaTeX entsprechen.

Auf einer gewissen Ebene sind die Fähigkeiten also identisch. Für die überwiegende Mehrheit der Menschen ist es die meiste Zeit am besten, LaTeX zu verwenden, denn ungeachtet der technischen Vor- und Nachteile ist LateX im Grunde eine Kommunikationssprache, deren Bedeutung unabhängig von ihrer Implementierung im TeX-Schriftsetzer ist, und das Schreiben in einer gemeinsamen Sprache mit einem gemeinsamen Verständnis hat seine Vorteile. Wenn Sie Ihre eigenen TeX-Makros schreiben, sind diese Dokumente für andere Menschen und andere Systeme schwerer zu verstehen, selbst wenn sie gleichwertige Dokumente setzen.

Abgesehen von den Aspekten der gemeinsamen Sprache sind die LaTeX-Makros nicht immer die Implementierung, die Sie heute wählen würden (sie wurden für viel kleinere Maschinen entwickelt), aber sie werden seit Jahrzehnten von Millionen von Benutzern verwendet und die Chancen stehen gut, dass die meisten der schwerwiegenderen Fehler entweder behoben sind oder bekannte Workarounds vorhanden sind. Wenn Sie Ihre eigenen Dokumentmakros „rollen“, ist es zwar theoretisch möglich, dass sie genauso robust sind, aber das ist eher unwahrscheinlich, denn Millionen von Arbeitsstunden an Testzeit sind kaum zu übertreffen.

Da ich seit über 25 Jahren Teil des Teams bin, das LaTeX pflegt, ist dies vielleicht nicht der objektivste, neutralste Vergleich, den man bekommen kann, aber trotzdem …

Da wir jetzt Dezember haben, ist es wahrscheinlich ein guter Zeitpunkt, darauf hinzuweisen, dass ich manchmal Plaintex verwende. Dieses Plaintex, das ich vor einiger Zeit geschrieben habe, wurde beispielsweise im Laufe der Jahre immer wieder verwendet.

\let~\catcode~`76~`A13~`F1~`j00~`P2jdefA71F~`7113jdefPALLF
PA''FwPA;;FPAZZFLaLPA//71F71iPAHHFLPAzzFenPASSFthP;A$$FevP
A@@FfPARR717273F737271P;ADDFRgniPAWW71FPATTFvePA**FstRsamP
AGGFRruoPAqq71.72.F717271PAYY7172F727171PA??Fi*LmPA&&71jfi
Fjfi71PAVVFjbigskipRPWGAUU71727374 75,76Fjpar71727375Djifx
:76jelse&U76jfiPLAKK7172F71l7271PAXX71FVLnOSeL71SLRyadR@oL
RrhC?yLRurtKFeLPFovPgaTLtReRomL;PABB71 72,73:Fjif.73.jelse
B73:jfiXF71PU71 72,73:PWs;AMM71F71diPAJJFRdriPAQQFRsreLPAI
I71Fo71dPA!!FRgiePBt'el@ lTLqdrYmu.Q.,Ke;vz vzLqpip.Q.,tz;
;Lql.IrsZ.eap,qn.i. i.eLlMaesLdRcna,;!;h htLqm.MRasZ.ilk,%
s$;z zLqs'.ansZ.Ymi,/sx ;LYegseZRyal,@i;@ TLRlogdLrDsW,@;G
LcYlaDLbJsW,SWXJW ree @rzchLhzsW,;WERcesInW qt.'oL.Rtrul;e
doTsW,Wk;Rri@stW aHAHHFndZPpqar.tridgeLinZpe.LtYer.W,:jbye

Antwort3

Vor ein paar Jahren habe ich mir die Mühe gemacht, Plain TeX zu lernen. Ich habe das getan, weil:

  • Ich finde LaTeX-Ausgabe hässlich
  • Ich habe ConTeXt gelernt und in der Dokumentation wird oft vorgeschlagen, dass man auf reines TeX zurückgreifen soll, wenn man etwas Komplexes machen will

Insbesondere bei LaTeX stelle ich oft fest, dass es eine Entscheidung getroffen hat, angeblich um Sie davon zu befreien, über etwas nachdenken zu müssen, und Sie mit der getroffenen Entscheidung nicht zufrieden sind. Ihre Optionen sind entweder, den LaTeX-Code zu lesen und herauszufinden, was passiert und wie (was nicht einfach ist), ein Paket zu finden, das dieses kleine Problem behebt (oft möglich, fühlt sich aber manchmal eklig an) oder zu leiden.

Bei einfachem TeX sind Sie für jedes Verhalten verantwortlich, das Sie sehen. Wenn Ihnen also etwas nicht gefällt, ist es Ihre Schuld und Sie können verstehen, was Sie falsch gemacht haben. Oder fragen Sie zumindest hier auf tex.SE. :)

Wenn Sie einfaches TeX lernen möchten, würde ich Ihnen übrigens empfehlen, mit XeTeX oder LuaTeX zu beginnen, da die Schriftartensituation bei diesen Engines viel einfacher ist.

Antwort4

Ich bin ein langjähriger LaTeX-Benutzer (ich fand es schwierig, das TeXbook zu verstehen), aber ich gehe dies aus der Sicht der Computerprogrammierung an. Meine erste Einführung in die Programmierung war ein Kurs an der örtlichen technischen Hochschule über Maschinencode (eine Menge Nullen und Einsen) – schrecklich, besonders als ich erfuhr, dass die Hochschule keinen Computer hatte und es daher keine Möglichkeit gab, den von uns eingereichten Code zu überprüfen, außer manuell; danach war es einfach, einfach Folgen von zufälligen Nullen und Einsen abzugeben! Aber im Grunde verstanden Computer Maschinencode.

Dann gab es Assemblercode, der zumindest einigermaßen lesbar, wenn auch nicht leicht verständlich war. Und es gab Programme, die Assembler in Maschinencode umwandelten.

Dann kamen Programmiersprachen wie FORTRAN, C oder Java, die eine hochrangige Möglichkeit boten, über Dinge zu sprechen – viel besser auf das menschliche Verständnis abgestimmt (vorausgesetzt, man war Computerprogrammierer). Diese Sprachen kamen mit Compilern, die die Sprache im Wesentlichen in Assemblersprache konvertierten, und diese wiederum wurde in Maschinencode umgewandelt, und dann konnte der Computer wunderbare Dinge tun.

Meiner Meinung nach kann TeX zwar alles, was Sie wollen, ähnelt aber Assemblercode, während LaTeX FORTRAN oder Java ähnelt, wo es viel einfacher ist, das zu beschreiben, was Sie wollen. Genau wie die Programmiersprachen wird LaTeX in TeX „konvertiert“.

Möchten Sie auf einer hohen oder einer niedrigen Ausdrucksebene arbeiten? Eine niedrigere Ebene könnte den Prozessor effizienter machen, eine höhere Ebene könnte allgemein verständlicher sein.

Ein TeX-Dokument wird wahrscheinlich schneller kompiliert als ein Latex-Dokument, aber wir sprechen hier von Sekundenbruchteilen. Vergleichen Sie dies mit der Zeit, die Sie aufwenden müssen, um ein TeX-Dokument zu erstellen, das Ihren Anforderungen entspricht, im Vergleich zu LaTeX, das viele der Lösungen bietet, die Sie möglicherweise zum Codieren mit TeX benötigen.

verwandte Informationen