Der Rumpf des LaTeX-Logo-Befehls \TeX ist eine einzige Zeile: T\kern-.1667em\lower.5ex\hbox{E}\kern-.125emX\@. Stellt man sie neben das Original, das Knuth in plain.tex schrieb, hat die LaTeX-Fassung am Ende genau ein Token mehr, \@ – und dieses eine Token verbreitert den Abstand nach „…in TeX gesetzt. Der nächste Satz“ um 1,11pt. Logobefehle sind keine Zierde, sondern eine Ansammlung solcher kleinen Entscheidungen. Diese Seite zeigt, wie \TeX, \LaTeX und \LaTeXe tatsächlich aufgebaut sind, was nötig ist, um \XeTeX oder \BibTeX auf die Seite zu bringen, und was an den drei Stellen zu schreiben ist, an denen Logos zerbrechen: Überschriften, PDF-Lesezeichen und .bib-Dateien – jeweils mit der tatsächlich erzeugten Ausgabe.
Wie die Logos aufgebaut sind: Kerns, ein gesenktes E, ein gehobenes A
\TeX besteht aus einem „T“, einem abgesenkten „E“ und einem „X“, zusammengezogen von negativen Kerns – und die Zahlen verraten die Absicht. Zwischen T und E stehen −0,1667em, genau ein Sechstel Geviert und damit so viel wie ein schmaler Abstand in der Mathematik, zwischen E und X −0,125em (ein Achtel Geviert), und das E sinkt um 0,5ex. Das Bemerkenswerte: All dieses Zusammenrücken macht das Ergebnis nicht schmaler. Gemessen bei 10pt Computer Modern ist ein schlicht getipptes „TeX“ 18,33334pt breit, \TeX dagegen 18,6108pt – also ganz leicht breiter. Das gesenkte E verändert, wie die benachbarten Formen ineinandergreifen; \TeX ist demnach ein Befehl, der eine Form erzeugt, und keiner, der Platz spart. \LaTeX hingegen rückt wirklich zusammen: 25,66368pt gegenüber 29,58337pt für ein getipptes „LaTeX“, rund 13 % schmaler.
% The three logos LaTeX itself defines (latex.ltx, lines 7648-7661).
\DeclareRobustCommand\TeX{T\kern-.1667em\lower.5ex\hbox{E}\kern-.125emX\@}
\DeclareRobustCommand{\LaTeX}{L\kern-.36em%
{\sbox\z@ T%
\vbox to\ht\z@{\hbox{...\fontsize\sf@size\z@ ... A}\vss}}%
\kern-.15em\TeX}
\DeclareRobustCommand{\LaTeXe}{\mbox{\m@th
\if b\expandafter\@car\f@series\@nil\boldmath\fi
\LaTeX\kern.15em2$_{\textstyle\varepsilon}$}}\LaTeX führt denselben Gedanken fort: Vor \TeX setzt es ein kleines, angehobenes A, um „La“ zu bilden, und schließt daran das TeX-Logo an. Dieses A ist kein eigenes Zeichen, sondern ein A in Fußnotengröße (\sf@size), oben bündig in eine \vbox gesetzt, die genau so hoch ist wie ein T – die Anweisung lautet also: Oberkante des A auf Oberkante des T. Der tiefe Kern von −0,36em zwischen L und A erzeugt die charakteristische Überschneidung. \LaTeXe hängt danach eine 2 und ein als mathematische Tiefstellung gesetztes \varepsilon an; sieht man sich $_{\textstyle\varepsilon}$ genau an, stammt das Epsilon aus dem Mathematikmodus, weshalb seine Form der Mathematikschrift folgt und nicht der Textschrift. Und dass das Logo in einer fetten Überschrift mitfettet, liegt daran, dass \LaTeXe die Schriftserie prüft und auf \boldmath umschaltet.
Nur drei Logos gehören zu LaTeX – XeTeX und BibTeX nicht
Reines LaTeX definiert genau drei Logobefehle: \TeX, \LaTeX und \LaTeXe. \XeTeX, \LuaTeX, \pdfTeX, \BibTeX und \ConTeXt gehören nicht dazu. Schreibt man sie unverändert, erscheint ! Undefined control sequence., es muss also ein Paket geladen werden. Zwei Ausnahmen lohnen die Erwähnung. Mit amsmath, das mathematische Dokumente ohnehin laden, kommt \AmS hinzu, und \AmS-\LaTeX ergibt die Wortmarke „AMS-LaTeX“. Für METAFONT und METAPOST lautet die Standardantwort \MF und \MP aus dem Paket mflogo – sie werden aus einer eigenen Logoschrift gesetzt, weshalb kein anderer Weg die richtigen Formen liefert.
hologo oder metalogo: Was man wählen sollte
Im Zweifel hologo – und der ausschlaggebende Grund ist nicht der Umfang der Sammlung, sondern dass es in PDF-Lesezeichen nicht zerbricht, was ein späterer Abschnitt nachmisst. hologo (in TeX Live 2024 die Fassung v1.15 vom 16.11.2021) fügt keine Schar einzelner Befehle hinzu, sondern bündelt alles in einem Befehl, der den Logonamen als Argument nimmt, etwa \hologo{XeTeX}. Die Paketzeile beschreibt es selbst als Logosammlung mit Lesezeichenunterstützung, und genau darum geht es. Rund fünfzig Namen sind bekannt, sodass \hologo{pdfTeX}, \hologo{LuaTeX}, \hologo{BibTeX}, \hologo{ConTeXt}, \hologo{KOMAScript}, \hologo{LaTeX3} und \hologo{biber} funktionieren. Für einen Großbuchstaben am Satzanfang dient \Hologo{...}; \Hologo{pdfLaTeX} setzt „PdfLaTeX“.
Der Haken: Ein unbekannter Name scheitert schlicht. \hologo{pTeX} und \hologo{pLaTeX}, im japanischen Umfeld geläufig, sind im hologo von TeX Live 2024 nicht registriert und liefern den Fehler ! Package hologo Error: Unknown logo. Tauchen pTeX, upTeX, pLaTeX oder upLaTeX im Fließtext auf, ist es praktischer, die Suche nach einem Logobefehl aufzugeben und die Buchstaben einfach zu tippen. metalogo (v0.12 von 2010) geht den umgekehrten Weg: Es definiert \XeTeX, \XeLaTeX, \LuaTeX und \LuaLaTeX als einzelne Befehle und erlaubt dafür, Kerns und Absenkungen paarweise zu justieren – mit \setlogokern{Te}{...} und \setlogodrop{...}. Wer ein Logo an die verwendete Schrift anpassen muss – etwa unter XeLaTeX mit einer Systemschrift, wo das A in \LaTeX falsch sitzt –, findet hier das einzige passende Werkzeug. hologo stellt übrigens nur \hologo und \Hologo bereit, sodass es zusammen mit metalogo geladen werden kann, ohne dass Befehlsnamen kollidieren (unter pdfLaTeX und XeLaTeX von TeX Live 2024 überprüft). Dennoch gilt: auf eines festlegen, damit die Schreibweise einheitlich bleibt.
\usepackage{hologo} % \hologo{...} and \Hologo{...}
% \usepackage{metalogo} % \XeTeX, \LuaTeX + \setlogokern for fine tuning
% \usepackage{mflogo} % \MF and \MP
\hologo{pdfTeX}, \hologo{XeTeX} and \hologo{LuaTeX} succeed \hologo{TeX}.
\hologo{BibTeX} builds the bibliography; \hologo{ConTeXt} is a rival format.
\Hologo{pdfLaTeX} starts a sentence with a capital.
% \hologo{pTeX} is NOT defined: "Unknown logo" error. Type pTeX instead.| Befehl | Ausgabe | Benötigtes Paket |
|---|---|---|
\TeX | TeX, E um 0,5ex abgesenkt | Basis-LaTeX (kein Paket) |
\LaTeX | LaTeX, das kleine A oben bündig mit dem T | Basis-LaTeX (kein Paket) |
\LaTeXe | LaTeX2ε; das ε ist eine mathematische Tiefstellung und folgt der Mathematikschrift | Basis-LaTeX (kein Paket) |
\AmS | AMS; \AmS-\LaTeX ergibt AMS-LaTeX | amsmath / amstex |
\hologo{XeTeX} | XeTeX mit gespiegeltem E; auch in Lesezeichen sicher | hologo |
\hologo{BibTeX} | BibTeX; auch \hologo{biber} und \hologo{BibTeX8} gibt es | hologo |
\hologo{ConTeXt} | ConTeXt; \hologo{LuaTeX}, \hologo{pdfTeX} und \hologo{KOMAScript} funktionieren ebenso | hologo |
\XeTeX | XeTeX, mit \setlogokern justierbar – zerbricht aber in Lesezeichen | metalogo |
\LuaLaTeX | LuaLaTeX; \XeLaTeX und \LuaTeX stammen aus demselben Paket | metalogo |
\MF / \MP | METAFONT / METAPOST, aus einer eigenen Logoschrift gesetzt | mflogo |
Woraus das gespiegelte E im XeTeX-Logo wirklich besteht
Die Antwort hängt von der Engine ab. Sowohl hologo als auch metalogo fragen zuerst, ob die aktuelle Schrift U+018E besitzt (LATIN CAPITAL LETTER REVERSED E, Ǝ); falls ja, wird dieses Zeichen unmittelbar verwendet, falls nein, wird ein gewöhnliches E mit \reflectbox aus graphicx gespiegelt. Derselbe Quelltext ergibt also unterschiedliche Substanz. Setzt man unter TeX Live 2024 ein Dokument, das nur \hologo{XeTeX} enthält, und zieht den Text mit pdftotext aus dem entstandenen PDF, so liefert XeLaTeX XƎTEX und pdfLaTeX XETEX. Im ersten Fall liegt ein echtes Ǝ als Zeichen vor und übersteht Kopieren und Einfügen; im zweiten steht dort nur ein E, das zufällig gespiegelt platziert wurde, sodass die Textebene ein schlichtes E enthält. Auf der Seite identisch, beim Suchen oder Kopieren verschieden.
Und wenn auch \reflectbox fehlt? hologo gibt nicht auf, sondern sucht Ersatz in der Reihenfolge graphicx → pgf → pstricks → eigener treiberspezifischer Code. Findet sich nichts davon, erscheint eine Warnung, das Logo needs driver specific macros, but driver ... is not supported, und dann wird ein gewöhnliches e gesetzt und weitergemacht. Auf der Seite steht dann schlicht „XeTeX“, und das Dokument wird fertig – ein Fehler, der gerade deshalb leicht übersehen wird, weil nichts stehen bleibt. Normales pdfLaTeX und XeLaTeX geraten nie auf diesen Pfad; wer aber einen ungewöhnlichen Treiber verwendet und ein auffallend schlichtes Logo sieht, suche im Protokoll nach dieser Warnung.
Überschriften, PDF-Lesezeichen und .bib: die drei Bruchstellen
Überschriften sind unproblematisch, Lesezeichen hängen vom Paket ab, und .bib verlangt Vorsicht. Zuerst die Überschriften: \TeX und \LaTeX sind mit \DeclareRobustCommand definiert und überstehen es daher, in ein Inhaltsverzeichnis oder einen Kolumnentitel geschrieben zu werden. (Die alten Schauergeschichten über bewegliche Argumente stammen aus der Zeit vor diesem Schutz.) Schiefgehen kann es bei den Lesezeichen. Wenn hyperref eine PDF-Lesezeichenzeichenkette baut, muss es jeden Satzbefehl wegwerfen. Unter TeX Live 2024 füllt \section{Using \XeTeX{} today} mit metalogo das Protokoll mit Package hyperref Warning: Token not allowed in a PDF string (Unicode): removing \reflectbox on input line 5., und das fertige Lesezeichen lautet „Using X0.5ex0.5exE0.5exTeX today“ – die Maßangaben sind unmittelbar in die Zeichenkette gesickert. Schreibt man dieselbe Überschrift mit \hologo{XeTeX}, gibt es keinerlei Warnung, und das Lesezeichen lautet „Using XeTeX today“. hologo führt zu jedem Logo eine eigene PDF-String-Form mit, und das ist der Grund für „im Zweifel hologo“.
Eine .bib-Datei geht anders kaputt. Viele BibTeX-Stile formatieren die Groß- und Kleinschreibung von Titeln neu und setzen dabei alles, was nicht durch geschweifte Klammern geschützt ist, mechanisch in Kleinbuchstaben – Logobefehle eingeschlossen. Schreibt man title = {Typesetting With \LaTeX and \TeX} und lässt plain.bst darüberlaufen, enthält die erzeugte .bbl Typesetting with \latex and \tex., und der nächste Lauf bricht mit ! Undefined control sequence. ab. Die Abhilfe ist trivial: den Logobefehl in geschweifte Klammern setzen. title = {Typesetting With {\LaTeX} and {\TeX}} übersteht die .bbl unversehrt. Es ist dieselbe Gewohnheit wie das Schützen eines Akronyms wie {DNA}. Und man merke sich die Stellen, an denen ein Logo schlicht falsch ist: Dateinamen, URLs, innerhalb von \verb, PDF-Metadaten wie pdftitle und alles, was eine Kommandozeile beschreibt. Dort ist das schmucklose Wort „LaTeX“ richtig, und ein Logobefehl ist sinnlos oder sogar schädlich.
% Wrong: plain.bst lower-cases it to \latex, then LaTeX stops with
% ! Undefined control sequence.
title = {Typesetting With \LaTeX and \TeX}
% Right: braces protect the command from BibTeX case changing
title = {Typesetting With {\LaTeX} and {\TeX}}Das verschluckte Leerzeichen: warum „LaTeX is“ als „LATEXis“ erscheint
Schreibt man \LaTeX is great., lautet die Ausgabe LATEXis great. – das Logo klebt am nächsten Wort. (Das ist die tatsächliche Zeichenkette, mit pdftotext aus einem unter TeX Live 2024 gesetzten PDF gezogen.) Die Ursache hat mit Logos nichts zu tun: Es ist TeXs Regel beim Zerlegen in Token, dass ein aus Buchstaben bestehender Befehl das Leerzeichen verschluckt, das das Ende seines Namens markiert. Warum diese Regel besteht, gehört auf die Seite zur Grundsyntax. Zwei Abhilfen gibt es: unmittelbar nach dem Befehl leere geschweifte Klammern {} setzen oder ein Backslash-Leerzeichen \ (ein Kontrollleerzeichen) einfügen. In beiden Fällen erscheint LATEX is great. Folgt ein Komma oder Punkt, gibt es ohnehin kein Leerzeichen zu verschlucken, \LaTeX, \TeX. braucht also nichts. Manche lassen das Paket xspace das Leerzeichen automatisch wiederherstellen, doch es verschätzt sich in bestimmten Fällen; zuerst explizit mit {} oder \ ist daher die verlässliche Gewohnheit.
% Bad: the space is eaten, giving "LATEXis great."
\LaTeX is great.
% Good: empty braces end the command name
\LaTeX{} is great.
% Good: a control space
\LaTeX\ is great.
% No space to eat before punctuation, so this needs nothing
\LaTeX, \TeX.
% In maths, step back into text mode first
$x = \text{\LaTeX}$Noch ein letzter Punkt: Logobefehle gehören in den Textmodus. \TeX ist aus \lower und \hbox zusammengesetzt, es direkt in den Mathematikmodus ($...$) zu werfen, ist deshalb heikel; man kehrt zuerst mit \text{} aus amsmath in den Text zurück, etwa $x = \text{\LaTeX}$. \LaTeXe geht noch weiter: Seine Definition steckt in einer \mbox und wechselt intern in den Mathematikmodus, um das Epsilon tiefzustellen. Verhalten, das rätselhaft wirkt, solange man einen Logobefehl für eine Zeichenkette hält, wird vorhersagbar, sobald man ihn als Kombination aus gehobenen und gesenkten Boxen (auf Anwenderebene \raisebox), Kerns und einer mathematischen Tiefstellung begreift – dann lässt sich im Voraus ahnen, wo er zerbricht.