pdfTeX ist die TeX-Engine, die PDF direkt erzeugt, ohne dazwischenliegenden DVI-Schritt. Es ist das, was pdflatex tatsächlich ausführt, und seit Jahren die am weitesten verbreitete TeX-Engine der Welt. Sein charakteristisches Merkmal ist *Mikrotypografie*: Randkerning, das Zeichen an den Rändern einer Zeile leicht über den Textblock hinausragen lässt, und Schrifterweiterung, das die Glyphenbreite fast unmerklich streckt oder verkleinert. Das ist es, was pdfTeX auf der Achse der typografischen Qualität zu etwas Besonderem macht.
Was pdfTeX ist
Knuths ursprüngliches TeX gibt nur ein Zwischenformat namens DVI (geräteunabhängig) aus, das dann von einem separaten Programm in PostScript oder PDF konvertiert wird. pdfTeX entfernt einen Schritt aus dieser Pipeline und generiert PDF direkt aus dem Seitenersteller von TeX. Es wurde Ende der 1990er Jahre von Hàn Thế Thành, ursprünglich aus Vietnam, im Rahmen seiner Doktorarbeit an der Masaryk-Universität in der Tschechischen Republik geschrieben. Die erste öffentliche Veröffentlichung erfolgte 1996.
Der Schlüssel zur Klarstellung ist, dass pdfTeX eine Engine und kein Format ist. Die Engine ist die ausführbare Datei, die die Arbeit erledigt. Das Format ist das Befehlssystem (LaTeX, Plain TeX). Die pdfTeX-Engine, die das LaTeX-Format ausführt, gibt Ihnen pdfLaTeX (den Befehl pdflatex); Wenn Sie Plain TeX ausführen, erhalten Sie pdftex. Wenn Sie sagen, dass Sie „in pdfLaTeX schreiben“, ist pdfTeX die Engine darunter.
pdfTeX enthält die e-TeX-Erweiterungen. e-TeX ist eine Reihe von Ergänzungen zur Makromaschinerie von TeX – \protected, \unexpanded, mehr Register, Unterstützung für den Rechts-nach-Links-Schriftsatz und mehr – die das moderne LaTeX für selbstverständlich hält. Historisch gesehen wurde die e-TeX-fähige pdfTeX als pdfetex ausgeliefert und wurde ab TeX Live 2004 zur Standard-Engine. Sie können sich das heutige pdflatex getrost als pdfTeX-with-e-TeX vorstellen.
PDF-Ausgabe oder immer noch DVI
Standardmäßig wird PDF direkt erzeugt, pdfTeX kann jedoch weiterhin DVI ausgeben. Der Schalter ist der ganzzahlige Parameter \pdfoutput: Legen Sie \pdfoutput=1 (beliebiger positiver Wert) für PDF fest, oder \pdfoutput=0, um auf den klassischen Wert DVI zurückzugreifen. Der mit \pdfoutput=0 erzeugte DVI ist im Prinzip identisch mit dem, was der ursprüngliche TeX emittiert hätte.
Dieser Wert muss festgelegt werden, bevor die erste Seite versendet wird, und Sie können während des Dokuments nicht zwischen PDF und DVI wechseln. In LaTeX erfolgt die Paket- und Treibererkennung häufig sehr früh, sodass der praktische sichere Ort ganz oben vor \documentclass liegt. Einige Pakete, die auf PostScript-Specials basieren, wie etwa PSTricks, benötigen manchmal die Route DVI→PS→PDF, und hier verdient \pdfoutput=0 seinen Lebensunterhalt.
% Force DVI output even when run via pdflatex
\pdfoutput=0
\documentclass{article}
\begin{document}
This run produces a .dvi file, not a .pdf.
\end{document}Mikrotypografie
Kein Bericht über pdfTeX ist vollständig ohne Mikrotypografie. Dies war genau das Thema von Hàn Thế Thànhs Doktorarbeit „Mikrotypografische Erweiterungen des TeX-Schriftsatzsystems“, die im Oktober 2000 an der Informatikfakultät der Masaryk-Universität unter der Leitung von „Jiří Zlatuška“ verteidigt wurde – eine Reihe subtiler Anpassungen, die in den Zeilenumbruchalgorithmus von TeX eingebunden sind und die Kanten des Textblocks glätten und ausgleichen Abstand innerhalb einer Zeile. Die Idee geht auf das von Hermann Zapf und Peter Karow entwickelte hz-Programm zurück.
Das erste ist Zeichenvorsprung, auch Randkerning genannt. Dadurch, dass Punkte, Kommas, Bindestriche und Satzzeichen nur knapp über den Rand des Textblocks hinausragen, erscheint ein Rand, der bei rein mechanischer Ausrichtung ausgefranst aussieht, optisch gerade. Es ist eine Verallgemeinerung der alten Praxis der hängenden Interpunktion.
Die zweite ist die Schrifterweiterung, der Hz-Algorithmus. Durch die Verwendung von Glyphenformen, die horizontal um einen unmerklich kleinen Betrag gestreckt oder verkleinert werden, kann der Wortabstand gleichmäßiger gestaltet werden. pdfTeX integriert diesen Spielraum in die Zeilenumbruchentscheidung selbst und wählt bessere Haltepunkte. Das Ergebnis sind weniger Zeilen mit klaffenden Wortzwischenräumen (den sogenannten „Flüssen“) und eine gleichmäßigere Gesamtstruktur des Absatzes.
Diese können mit Rohprimitiven gesteuert werden. Protrusion verwendet \pdfprotrudechars (0 = aus, 1 = ein, 2 = spiegelt sich auch in Breitenberechnungen wider) zusammen mit \lpcode (linker Rand) und \rpcode (rechter Rand), die den Betrag pro Zeichen festlegen. Die Schrifterweiterung verwendet \pdfadjustspacing (=2 integriert die Dehnung in den Zeilenumbruch) zusammen mit \efcode, das die Dehnungsbereitschaft jedes Zeichens festlegt. In der Praxis berührt man diese fast nie direkt.
In echten Dokumenten laden Sie einfach das microtype-Paket, das all dies umschließt und sinnvolle Standardeinstellungen für Sie auswählt. Eine einzelne Zeile – \usepackage{microtype} – aktiviert den Vorsprung und die Schrifterweiterung mit guten Einstellungen.
\documentclass{article}
\usepackage{microtype} % protrusion + expansion, sensible defaults
\begin{document}
With microtype loaded, pdfTeX nudges punctuation into the
margins and flexes glyph widths a hair, so justified text
looks noticeably more even.
\end{document}PDF-Funktionen und Bildeinbindung
Da PDF direkt erstellt wird, stellt pdfTeX Grundelemente bereit, die in PDF-Features hineinreichen. Die wichtigsten sind \pdfliteral, das rohe PDF-Zeichnungsoperatoren einfügt; \pdfobj, wodurch direkt ein PDF-Objekt erstellt wird; und \pdfannot, das eine Anmerkung (einen Link, ein Formularfeld usw.) platziert. Hyperlinks und Lesezeichen werden auf Basis dieser Mechanismen durch das hyperref-Paket erstellt.
Für dokumentweite Einstellungen gibt es \pdfinfo, das Metadaten wie Titel und Autor schreibt; \pdfcompresslevel, das festlegt, wie stark die Ausgabe PDF komprimiert wird; und \pdfpageattr, das jeder Seite Attribute hinzufügt.
\pdfinfo{
/Title (My Report)
/Author (A. Author)
}
\pdfcompresslevel=9
% draw a thin rule with a raw PDF operator
\pdfliteral{0 0 m 100 0 l 0.4 w S}Bilder funktionieren auch direkt. Eine Stärke von pdfTeX besteht darin, dass es PNG, JPEG und PDF ohne Zwischenkonvertierung enthalten kann (EPS muss dagegen zuerst in PDF konvertiert werden); Auf der unteren Ebene liest \pdfximage ein Bild ein. Normalerweise verwenden Sie jedoch einfach \includegraphics aus dem graphicx-Paket, das die richtigen Grundelemente für Sie aufruft.
| Primitiv | Was es bewirkt |
|---|---|
\pdfliteral | Fügen Sie rohe PDF-Zeichnungsoperatoren ein |
\pdfobj / \pdfannot | Erstellen Sie direkt ein PDF-Objekt/eine PDF-Annotation |
\pdfinfo | Metadaten schreiben (Titel, Autor, …) |
\pdfcompresslevel | Ausgabe PDF-Komprimierungsstufe (0–9) |
\pdfximage | Fügen Sie ein Bild PNG / JPEG / PDF ein |
\pdfpageattr | Fügen Sie jeder Seite PDF-Attribute hinzu |
Grenzen und wann man wechseln sollte
Bei aller Leistungsfähigkeit bringt pdfTeX Einschränkungen mit sich, die heute veraltet wirken. Das Größte ist, dass es sich um eine 8-Bit-Engine handelt. Es verfügt nicht über eine eingebaute Maschine, um Unicode als Eingabe zu verwenden, wie dies bei XeTeX und LuaTeX der Fall ist, und es ist nicht darauf ausgelegt, beispielsweise japanisches UTF-8 direkt zu setzen (für westliche Texte wurde dies mit inputenc/fontenc behoben).
Auch die Handhabung von Schriftarten ist eingeschränkt. Die Metriken hängen von TFM (TeX Font Metric)-Dateien ab, und die eigentlichen Glyphen werden aus Type1- oder TrueType-Schriftarten über Kartendateien eingebettet. Sie können nicht einfach eine auf dem Betriebssystem installierte OpenType-Schriftart benennen und verwenden lassen. Und es gibt keine eingebettete Skriptsprache wie Lua, um Programme während des Satzes auszuführen.
Genau aus diesem Grund treibt der Wunsch, Systemschriftarten zu verwenden oder viele Sprachen in Unicode zu setzen, Menschen zu XeTeX oder LuaTeX. Wenn Sie neu anfangen – und insbesondere für Japanisch – sind diese Engines (upLaTeX oder LuaLaTeX für Japanisch) die praktische Wahl.
pdfTeX selbst befindet sich jetzt in einem stabilen, mehr oder weniger eingefrorenen Wartungsmodus. Fehlerbehebungen werden fortgesetzt, aber die Neuentwicklung wurde größtenteils auf LuaTeX verlagert (ein Nachfolger, der Lua in pdfTeX einbettet). Dennoch bleibt pdfTeX für überwiegend englisch- und europäischsprachige Dokumente schnell, zuverlässig und die kampferprobteste Wahl, die es gibt.
Ein Erbe der Primitiven
Die vielen \pdf...-Grundelemente, die pdfTeX einführte, wurden in spätere Engines übernommen und wurden zum De-facto-Standard. Die mikrotypografischen Merkmale wurden beispielsweise sowohl in XeTeX als auch in LuaTeX übernommen.
In LuaTeX wurde jedoch der weitläufige Namespace \pdf... bereinigt und ein Großteil davon in einen kleinen Satz von Gateways zusammengefasst – \pdfextension, \pdfvariable und \pdffeedback. Beispielsweise wird \pdfliteral zu \pdfextension literal und \pdfoutput wird zu \outputmode. Ihr Wissen aus der pdfTeX-Ära wird größtenteils übernommen, es ist jedoch zu bedenken, dass sich die Schreibweise auf der neueren Engine ändert.
Wo es ins tägliche Schreiben passt
Für englische Aufsätze, Kurzberichte und vorhandene westliche Vorlagen ist pdflatex immer noch schnell und zuverlässig. Laden Sie \usepackage{microtype}, behalten Sie die Grafiken als PNG / JPEG / PDF bei und konvertieren Sie EPS vor der Einbindung in PDF. Wenn Sie japanische Schriftarten oder Systemschriftarten benötigen, stapeln Sie keine Problemumgehungen auf pdfTeX. Betrachten Sie upLaTeX, LuaLaTeX oder XeLaTeX.
- Gründe zu bleiben: Kompatibilität mit vorhandenen Vorlagen, Geschwindigkeit und stabiler westlicher Schriftsatz.
- Gründe für den Wechsel: Unicode mehrsprachige Arbeit, OS-Schriftarten, Japanisch oder Lua-basierte Verarbeitung.
- Häufiger Fehler: Laden von
fontspecunter pdfLaTeX.fontspecgehört zu XeLaTeX / LuaLaTeX.