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.
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.psoder 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.
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.
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.\usepackage{times}
oder
\usepackage{helvet}
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.
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:
Der "Trick" besteht nun darin, dass\usepackage[optionen]{graphicx}
...
\includegraphics[optionen]{datei}
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
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.
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: |
|
mailto:adresse
zu benutzen.
| Beispiel: |
|
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.
\hypertarget[marke]{text}
Auf solche Zielmarken kann man sich mit
\hyperlink[marke]{text}
beziehen.
Wieder ist es das Zusatzpaket hyperref ([2]),
das die notwendige Funktionalität bereitstellt.
Durch das Laden des Pakets werden Kommandos definiert
zur Erzeugung
\begin{Form}[action=mailto:mailadresse,encoding=html,method=post]
...
\end{Form}
\TextField[parameter]{text}
align=...
| Ausrichtung |
backgroundcolor=...
| Hintergrundfarbe |
charsize=...
| Zeichenhöhe für den einzugebenden Text |
height=...
| Höhe des Formularfeldes |
name=...
| Name der Variablen, die den Wert zugewiesen bekommt |
onclick=...
| Aktion, die im Falle des Anklickes des Formularfelds passiert |
password
| Formularfeld für Passworteingabe, d.h. blind |
hidden
| verstecktes Feld |
\ChoiceMenue[combo,weitere parameter]{text}{werteliste}
\ChoiceMenue[radio,weitere parameter]{text}{werteliste}
\CheckBox[weitere parameter]{text}
\Submit{text}
\Reset{text}
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: \= \killName: \> \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]Geschlecht: \> \ChoiceMenu[radio,default=maen,name=gesch,charsize=24pt]\end{tabbing} \medskipAusbildungsweg:\\\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}
|
![]() |
empfang@irgendwo.de
existieren und dort sollte idealerweise ein Skript die
eingehenden Daten verarbeiten.
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 erzeugtbei 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]... \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 |