\LaTeX \today, Teil 2: LaTeX und PDF


Vorbemerkungen

In der letzten Ausgabe der URZ-Mitteilungen war zu lesen, wie sich die Software LaTeX in den letzten Jahren entwickelt (und verändert) hat ([1]). Dabei beschränkten sich die beschriebenen Modifikationen im LaTeX-Quelltext auf die traditionelle Verwendungsform des Formatierers: Konvertierung in ein DVI-File.

Die positive Resonanz auf diesen ersten Artikel - was sonst bei Veröffentlichungen in den URZ-Mitteilungen eigentlich selten passiert - ist für mich zusätzliche Motivation, nun noch die neuen Möglichkeiten zur Erzeugung von PDF vorzustellen.

Warum ist PDF überhaupt interessant in der TeX-Welt? Haben wir nicht ein perfektes Satzsystem zur Gestaltung wissenschaftlicher Dokumente?
Natürlich will niemand die Funktionalität von (La)TeX in Frage stellen. Folgendes sollte man jedoch bedenken:

Erfreulicherweise bleibt die PDF-Welt den (La)TeX-Nutzern nicht verschlossen, es gibt - wie gleich gezeigt wird - verschiedene Möglichkeiten, ein LaTeX-Dokument nach PDF zu konvertieren.

Allerdings sollte schon an dieser Stelle die eventuell aufkommende Euphorie etwas gebremst werden. Zumindest muss man sich als Anwender auch der negativen Aspekte einer PDF-Orientierung bewusst sein: PDF ist eine rein kommerzielle Entwicklung. Das Format ist zwar veröffentlicht, aber es ist kein "offenes" Format, alle Rechte liegen nach wie vor bei Adobe. Damit ist jeder Nutzer des Formats und der zugehörigen Software jetzt und später auf das Wohlwollen dieser gewinnorientierten Firma angewiesen. Sicherlich ist derzeit keine dramatische Kehrtwende abzusehen, aber sie lässt sich prinzipiell für die Zukunft auch nicht ausschließen.

Erzeugung von PDF

Ausgangspunkt soll ein fertiges LaTeX-File bsp.tex sein. Auf folgende Art und Weise kann man daraus ein PDF-File gewinnen.
Herkömmlicher Weg:
Schritt Kommando Vorgang
1 latex bsp übliche Formatierung
2 dvips -Ppdf -o bsp.ps bsp Konvertierung in Postscript, dabei durch -Ppdf relevante Einstellungen bzgl. Auflösung und Fontauswahl aktivieren
3 gs -sDEVICE=pdfwrite sOUTPUTFILE=bsp.pdf bsp.ps Konvertierung in PDF
analog, aber Schritt 3 mit Adobe-Software:
3 distill bsp.ps
oder Benutzung des Tools Adobe Acrobat
Konvertierung in PDF
Direkter Weg:
1 pdflatex bsp Formatierung mit direkter Erzeugung von bsp.pdf

Dieser direkte Weg ist natürlich nutzerfreundlich, da er weniger Aktionen des Nutzers erfordert und weniger Fehlermöglichkeiten beinhaltet, er führt damit insgesamt schneller zum Ziel. Außerdem wird beim Formatieren eine andere TeX-Engine benutzt, die schon von vornherein auf PDF als Zielformat ausgerichtet ist und damit unter Umständen ein qualitativ besseres PDF-File erzeugen kann.
Es gibt aber genau zwei Problemkreise im LaTeX-Quelltext, bei denen der Nutzer bei der Erstellung des Dokuments die mögliche Verarbeitung mit pdflatex schon berücksichtigen muss: die Verwendung von Fonts und die Einbindung von Bildern. Bei diesen Dingen (und nur bei diesen!) sind gegebenenfalls Änderungen gegenüber der bisherigen Anwendung von LaTeX-Kommandos notwendig.
Darüberhinaus gibt es aber einige funktionelle Erweiterungen, die mit PDFLaTeX verfügbar wurden.

Verwendung von Fonts

TeX-Fonts werden bei der Formatierung eines Textes als Bitmaps in das erzeugte Postscript- bzw. PDF-File eingebettet (Type3-Fonts). Diese Bitmaps sind aber für eine ganz konkrete Auflösung des Ausgabegeräts berechnet (hängt von dem "Gerät" ab, dass im config-File von dvips benutzt wird, in der Regel sind das 600 dpi). Wenn ein solches PDF-File am Bildschirm betrachtet werden soll, müssen die Bitmaps auf 72 dpi skaliert werden, was zu einem hässlichen Schriftbild mit "ausgefransten" Zeichenformen führt. Deshalb ist es - sofern man PDF als Zielformat erzeugen will - unbedingt notwendig, das Zusatzpaket ae zu verwenden. Dieses Paket realisiert eine automatische Anpassung der TeX-Fonts an skalierbare Postscript-Äquivalente.

\usepackage{ae}

Eine andere Möglichkeit wäre, im LaTeX-Quelltext von vorherein Postscript-Fonts einzusetzen, z.B. Times oder Helvetica.

\usepackage{times}
oder
\usepackage{helvet}
Diese Fonts müssen nicht in die PS- und PDF-Files integriert werden, da sie jedem PS- bzw. PDF-Viewer und jedem Postscript-Drucker bekannt sind. Aber auch hier sollte man im Auge behalten, dass man dadurch die Welt der freien, offenen Software verlässt und kommerzielle Produkte einbezieht. Außerdem ist die typografische Qualität der kostenfreien Postscriptfonts - für Experten - nur befriedigend, professionelle Anwender bevorzugen "richtige" kommerzielle (sprich: kostenintensive) Fonts, von denen es Tausende gibt. Das soll aber nicht Thema dieses Artikels sein.

Der Vorteil beider Varianten der Fontverwendung (cm-Fonts + ae oder Postscriptfonts) besteht darin, dass ein entspechender LaTeX-Quelltext sowohl mit latex als auch mit pdflatex formatiert werden kann. Aus diesem Grund sollte man bei der Texteingabe grundsätzlich diese Dinge beachten, auch wenn das Zielformat der Formatierung noch nicht feststeht.

Einbindung von Bildern

Zuerst die schlechte Nachricht: der PDFLaTeX-Formatierer kann keine EPS-Bilder verarbeiten! Er kann nur mit PDF, PNG oder JPG als Bildformat umgehen. Wir werden aber gleich sehen, dass das kein Nachteil ist und sogar für den Nutzer gar keine Einschränkung darstellt.

Die Generierung von Bildern und Grafiken im PDF-Format kann mit verschiedenen Werkzeugen vorgenommen werden. Zunächst sind alle Programme geeignet, die PDF als Ausgabeformat kennen (z.B. XFig). Weiterhin können die Produkte benutzt werden, die Postscript ausgeben, weil zur Konvertierung von PS nach PDF wiederum etliche Tools existieren (ImageMagick, Ghostscript u.a.).

Wie wird nun im LaTeX-Quelltext ein PDF-File eingebunden? In [1] wurde bereits beschrieben:

\usepackage[optionen]{graphicx}
...
\includegraphics[optionen]{datei}
Der "Trick" besteht nun darin, dass datei stets ohne Dateisuffix geschrieben werden sollte. Bei der Verarbeitung eines solchen Kommandos mit latex sucht der Formatierer automatisch nach einer Datei datei.eps. Bei der Verarbeitung des gleichen Kommandos mit pdflatex sucht der Formatierer selbsttätig nach datei.pdf oder - wenn er diese nicht gefunden hat - datei.png oder - wenn er diese auch nicht gefunden hat - datei.jpg. Das heißt, die Formatierer machen in jedem Fall das Richtige, soll heißen, sie suchen die Bilddatei in dem Format, mit dem sie etwas anfangen können. Wenn ein Nutzer nun sogar sowohl datei.eps und z.B. datei.pdf im betreffenden Verzeichnis hat, kann ein LaTeX-Quelltext ohne jegliche Änderung wahlweise mit latex oder auch mit pdflatex übersetzt werden.

Ein prototypisches Beispiel:
\documentclass{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage{ae}
\usepackage{graphicx}
\begin{document}
Dieser LaTeX-Quelltext kann unverändert sowohl mit \texttt{latex} als auch mit \texttt{pdflatex} formatiert werden.
Die beiden Ausgaben sind identisch.
 
\includegraphics[width=3cm]{tulogo}
 
An dieser Stelle wird entweder (bei \texttt{latex}:) \emph{tulogo.eps} oder (bei \texttt{pdflatex}:) \emph{tulogo.pdf} bzw. \emph{tulogo.png} bzw. \emph{tulogo.jpg} verwendet
\end{document}

Ergebnis der Formatierung mit latex (und dvips), Ergebnis der Formatierung mit pdflatex

Benutzung von Hyperlinks

Wie bereits erwähnt, können die PDF-Viewer mit Hyperlinks umgehen. Analog zu Webseiten und deren Betrachten mit einem Webbrowser können im PDF Links definiert und per Mausklick "Sprünge" ausgeführt werden. Wie kann man in LaTeX diese Funktionalität erreichen?
Grundvoraussetzung dafür ist die Benutzung des Zusatzpakets hyperref ([2]):

\usepackage[optionen]{hyperref}
Da das Paket einige LaTeX-Befehle umdefiniert, sollte es immer als letztes Zusatzpaket geladen werden.

Allein das Einschließen dieses Pakets hat zur Folge, dass beim Formatieren des LaTeX-Dokuments alle symbolischen Bezüge wie Querverweise, Verweise auf Fußnoten, Literaturangaben und Ähnliches automatisch in Hyperlinks umgewandelt werden. Generierte Verzeichnisse (z.B. Inhaltsverzeichnis, Index) bestehen nun nur noch aus Hyperlinks.
Darüberhinaus definiert das Paket einige neue Befehle, so zum expliziten Einfügen von Links, zur Generierung von PDF-Formularen und zur Konfigurierung des zu erzeugenden PDF-Ausgabefiles.

Einfügen von Links

Mit dem Befehl

\href[url]{text}
wird der text als Hyperlink auf url angelegt. Dabei kann url sowohl ein HTML-File als auch ein anderes PDF-File adressieren. Im ersten Fall wird beim Aktivieren des Links im PDF-Viewer der Standard-Webbrowser (netscape o.ä.) aktiviert.
Beispiel: 
\href{manual.pdf}{Das Handbuch}
\href{http://www.tu-chemnitz.de}{Homepage der TU Chemnitz}
url kann auch eine Mailadresse beschreiben, dabei ist die Notation mailto:adresse zu benutzen.
Beispiel: 
\href{mailto:hilfe@hrz.tu-chemnitz.de}{Mail an das Hilfesystem des URZ}

Und schließlich kann url auch ein Shellskript sein, das dann beim Anklicken des Links ausgeführt wird.
Dabei ist aber unbedingt zu bedenken, dass das ein enormes Sicherheitsrisiko darstellt! Die Tatsache, dass ein PDF-File überhaupt ein externes Programm ausführen kann, macht deutlich, dass man keinem fremden Dokument unbedenklich vertrauen kann - besonders, wenn durch einen Mausklick Aktionen gestartet werden.

Mit Hilfe des Pakets hyperref ist es auch möglich, Hyperlinks im aktuellen Dokument zu definieren. Dazu wird der Befehl

\hyperref[marke]{text}
eingeführt. Damit wird text als ein Link zu der Stelle generiert, die mit dem üblichen LaTeX-Befehl \label{marke} definiert wird. Solche Marken können aber nur nach Gliederungsbefehlen oder in den Umgebungen equation, figure, table und enumerate eingefügt werden.
Zur Erzeugung von freien Textmarkierungen dient der Befehl
\hypertarget[marke]{text}
Auf solche Zielmarken kann man sich mit
\hyperlink[marke]{text}
beziehen.

Generierung von Formularen

Wieder ist es das Zusatzpaket hyperref ([2]), das die notwendige Funktionalität bereitstellt. Durch das Laden des Pakets werden Kommandos definiert zur Erzeugung

Eine Analogie zur Definition von Formularen in HTML ist also offensichtlich, sicherlich auch gewollt.

An einem Beispiel sollen die Möglichkeiten zur Beschreibung von Formularen demonstriert werden.
\begin{Form}[action=mailto:auswert@irgendwo.de,encoding=html,method=post]
\begin{tabbing}
xxxxxxxxxx: \= \kill
Name: \> \TextField[name=name,width=5cm,charsize=24pt]{\mbox{}} \\
Vorname: \> \TextField[name=vor,width=5cm,charsize=24pt]{\mbox{}} \\
 
Wohnort: \> \ChoiceMenu[combo,name=ort,width=8cm,charsize=24pt]
    {\mbox{}}{Chemnitz,Dresden,Leipzig,Berlin,Hamburg} \\

Geschlecht: \> \ChoiceMenu[radio,default=maen,name=gesch,charsize=24pt]
    {\mbox{}}{Männlich=maen,Weiblich=weib}

 
\end{tabbing}
 
\medskip
Ausbildungsweg:\\
\CheckBox[name=zehn,charsize=24pt]{10. Klasse}
\CheckBox[name=beruf,charsize=24pt]{Berufsausbildung}
\CheckBox[name=eos,charsize=24pt]{Abitur}
\CheckBox[name=studium,charsize=24pt]{Studium}
 
\bigskip
\makebox[3cm][r]{\Submit{\textbf{Send}}}
\makebox[5cm][r]{\Reset{\textbf{Clear}}}
\hfill ~\\
 
\end{Form}
Nach der Formatierung erhält man dieses PDF-Formular (mit dem Acrobat Reader betrachtet):
PDF-Formular
Um das Formular einsetzen zu können, sollte natürlich die Mailadresse empfang@irgendwo.de existieren und dort sollte idealerweise ein Skript die eingehenden Daten verarbeiten.

Paketoptionen und Konfiguration

Als Letztes soll noch andeutungsweise beschrieben werden, welche Optionen zur Steuerung der Wirkungsweise der einzelnen Kommandos das Paket hyperref verarbeitet (Auswahl).
Eine Besonderheit dieses Pakets ist es, dass in der Regel alternativ zur Angabe als Optionen im \usepackage-Befehl die Steuerungsinformationen auch im Kommando \hypersetup{...} spezifiziert werden können.

pdftex / dvips / ps2pdf / latex2html ... Backend-Treiber, d.h. durch welches Programm werden letztlich die Hyperlink-special-Befehle erzeugt
bei der Formatierung des LaTeX-Dokuments mit latex bzw. pdflatex wird automatisch - über ein entsprechendes config-File - die richtige Einstellung gewählt
colorlinks Hyperlinks werden farbig dargestellt anstelle der Hervorhebung durch Rahmen
linkcolor=...
urlcolor=...
Festlegen der Farbe zur Darstellung von Hyperlinks und URLs
bookmarks Erzeugung von Lesezeichen (die wie das Inhaltsverzeichnis im Acrobat Reader) zur Navigation benutzt werden können
pdfpagemode=... sichtbare Bestandteile des Acrobat-Fensters nach dem Start
hier ist insbesondere die Angabe FullScreen von Interesse: die Anzeige erfolgt im Vollbildmodus, was für eine öffentliche Präsentation optisch die beste Variante darstellt
pdftitle=... Festlegung eines Dokumentitels für die PDF-Dokumentdaten
diese sind (wie auch die nachfolgenden Informationen) über das Acrobat-Reader-Menü Datei -> Dokumentinfo -> Allgemein zugänglich
pdfsubject=... Festlegung eines Themas des Dokuments
pdfauthor=... Festlegung des Verfassers
pdfkeywords=... Festlegung von Stichwörtern

Ein abschließendes Beispiel soll die Verwendung der Steuerungsmöglichkeiten illustrieren.
\usepackage[bookmarksopen,colorlinks,urlcolor=green,pdfpagemode=FullScreen]
    {hyperref}

...
\hypersetup{pdftitle={\LaTeX{} und PDF}}
\hypersetup{pdfsubject={Präsentation}}
\hypersetup{pdfauthor={Wolfgang Riedel}}

Weitere Informationen zur Erzeugung von PDF-Dokumenten können [2] und [3] entnommen werden.

Literatur:
[1] Wolfgang Riedel: \LaTeX \today, Artikel aus den URZ-Mitteilungen 2/2002
[2] Sebastian Rahtz, Heiko Oberdiek: hyperref-Manual (von CTAN: macros/latex/contrib/supported/hyperref)
[3] Sascha Beuermann: Erstellung von leistungsfähigen PDF-Dokumenten, Artikel aus "Die TeXnische Komödie 1/2002"
Wolfgang Riedel, URZ, Juli 2002