Die vergangenen Folgen des LaTeX-Workshops im LinuxUser haben viele Möglichkeiten des Satzsystems vorgestellt. Die letzte Ausgabe geht auf einige spezielle Pakete genauer ein, die PDF-Dateien mit weiteren Finessen versehen.
Präsentationen baut man mit dem entsprechenden Office-Programm, die Handouts dazu erzeugt man in der Textverarbeitung, und um an PDF-Dateien zu feilen, braucht man das Windows-Programm von Acrobat? Nicht wirklich: Mit LaTeX hat freie Software mal wieder die Nase vorn, ansprechende Ergebnisse und Spezialfunktionen sind nur eine Frage der richtigen Kommandos.
Dokumentation von Quelltexten
Wer Konfigurationsdateien, Shell-Scripts oder anderen Programmcode in einem LaTeX-Dokument erläutern möchte, greift zum Paket Listings [1]. Damit bettet man Quelltexte oder Fragmente aus Code-Dateien in den Text ein. Die Schlüsselwörter der verwendeten Programmiersprache, Kommentare und andere wichtige Teile erscheinen dabei bei Bedarf farbig oder in einem festgelegten Schriftschnitt.
Das Paket binden Sie mit \usepackage{listings} in Ihre LaTeX-Datei ein. Syntaxdefinitionen für einige Dutzend Programmiersprachen – darunter C++, SQL und Bash – gehören zum Lieferumfang. Optional laden Sie die gewünschten Sprachen direkt nach dem Einbinden des Pakets mit \lstloadlanguages{}. Hervorhebungsregeln für noch nicht unterstützte Programmiersprachen lassen sich zusätzlich festlegen.
Listing 1 zeigt einen einfachen Anwendungsfall für das Listings-Pakets. Es beginnt mit der Definition der Grundeinstellungen über den Befehl \lstset{} in der Form Schlüssel=Wert. Das Beispiel setzt zuerst die Sprache auf C und unterdrückt die Darstellung eines speziellen Symbols für Leerzeichen. Dann stellt es eine Nichtproportionalschrift als Standard ein. Für Schlüsselworte, Kommentare und Zeichenketten kommen die Farben Rot, Blau respektive Grün zum Einsatz.
Listing 1
\listfiles
\documentclass[]{article}
\usepackage{listings}
\usepackage{xcolor}
\lstloadlanguages{C}
\lstset{%
language=C,
showstringspaces=false,
basicstyle=\ttfamily\small,
keywordstyle=\color{red},
commentstyle=\color{blue},
stringstyle=\color{green}
}%
\begin{document}
\lstinputlisting
Das Attachfile-Paket kann noch mehr: Sie nutzen bei Bedarf auch eigene grafische Symbole und setzen beispielsweise für alle angehängten Tabellen ein selbstgewähltes Icon ein. Die Datei, die das Symbol enthält, binden Sie mit der Option \textattachfile[]{tabelle.txt}{\includegraphics{tab}} ein. Dabei sucht \includegraphics zunächst nach einer Datei mit der Endung .pdf, dann nach .png und schließlich nach JPEG-Grafiken. Geben Sie den vollständigen Dateinamen an, um die Auswahl eindeutig festzulegen.
Wer statt grafischer Symbole einen beschreibenden Text bevorzugt, erreicht das über den Befehl \textattachfile[color={0 0 0.8}]{fragment.c}{Quelltextbeispiel}. Im PDF-Viewer erscheint nun der dunkelblau gefärbte und anklickbare Schriftzug Quelltextbeispiel. Optional fügen Sie dem Link mit der Option author={Vorname Name} auch den Namen des Autors hinzu.
Alternativ zum Acrobat Reader entpackt das Kommandozeilenwerkzeug Pdftk die Anhänge einer PDF-Datei. Es steht unter allen gängigen Distributionen zur Installation via Paketmanager bereit. Mit dem Aufruf:
pdftk attach01.pdf unpack_files? output dir
entpacken Sie die Anhänge der Datei attach01.pdf ins Verzeichnis dir, das bereits existieren muss.
Präsentationen mit der Beamer-Klasse
Die Klasse Beamer [4] kombiniert die Vorteile von LaTeX mit den Möglichkeiten einer Präsentation im PDF-Format. Sie bietet fertige Vorlagen für zahlreiche Zwecke wie Präsentationen auf Folienprojektoren und Video-Beamern an, die sich um eigene erweitern lassen. In Abbildung 2 sehen Sie am rechten unteren Bildrand die Symbole, über die Sie bei einer Präsentation durch die Folien navigieren.

Abbildung 2: Mit der Beamer-Klasse erstellen Sie aus LaTeX-Quelltext Präsentationen mit allen Möglichkeiten herkömmlicher Präsentationsprogramme.
Die meisten Befehle der Beamer-Klasse gleichen denen der Standardklassen, so dass der Einarbeitungsaufwand gering ausfällt. Zusätzlich zu den Standardelementen bietet Beamer beispielsweise die Möglichkeit, Elemente einer Folie wie in einem Präsentationsprogramm schrittweise einzublenden und unterschiedliche Arten der Druckausgabe festzulegen. Dazu bedient sich Beamer so genannter Themes (Vorlagen), die Vorgaben für Folientitel, Aufzählungen und die Navigation für ein Dokument global festlegen.
Listing 4 zeigt das Gerüst des Quelltextes der Präsentation aus Abbildung 2. Das Beispiel lädt zunächst die Klasse Beamer und bindet dann die Vorlage beamerthemelined ein. Die darauf folgenden Gliederungsbefehle erfüllen dieselben Funktionen wie in den Standardklassen.
Listing 4
\documentclass[german,notes]{beamer}
\mode<presentation>
\usepackage{beamerthemelined}
\usepackage{babel}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\title{Anhänge an PDF-Dateien}
\author{Stefan Lagotzki}
\date{\today}
\begin{document}
\frame{\titlepage}
\section{Inhalt}
\begin{frame}
\frametitle{Inhalt}
\tableofcontents[pausesections]
\end{frame}
\section{Das Entpacken der Anhänge}
\subsection{Entpacken mit dem Adobe Reader}
\frame{}
\subsection{Entpacken mit pdftk}
\begin{frame}
\begin{itemize}
\item<1-> Aufruf von pdftk
\item<2-> Verarbeiten der Anhänge
\end{itemize}
\end{frame}
\end{document}
Die einzelnen Folien heißen im Beamer-Vokabular Frames. Diese definieren Sie als Umgebungen oder als Befehle. Die einzelnen Folien erhalten mit \frametitle einen Titel.
Die Beamer-Klasse ermöglicht es, PDF-Dokumente zu erzeugen, in denen auf einer Seite einzelne Elemente erst nach und und nach erscheinen. Es gibt zwei Möglichkeiten, eine solche Unterbrechung in die Präsentation einzufügen: Der Befehl \pause hält die Präsentation solange an, bis der Benutzer die nächste Folie aufruft. Eine Alternative bietet das Kommando \item, das innerhalb von Aufzählungen oder Nummerierungen in spitzen Klammern eine Zahl als Parameter entgegennimmt. Diese gibt die Reihenfolgen an, in der die Listenelemente auf den Bildschirm gelangen. Das folgende Beispiel blendet zuerst die Punkte A und C ein, nach dem Weiterblättern zusätzlich Punkt B:
\begin{itemize}
\item<1-> A
\item<2-> B
\item<1-> C
\end{itemize}
Sollen aus der Präsentation druckbare Folien entstehen, müssen darauf natürlich von Beginn an alle Punkte stehen. Die Klassenoption handout nimmt zu diesem Zweck die kompletten und druckbaren Folien in die PDF-Datei auf.
Die Beamer-Klasse eignet sich zudem, um Quelltexte zu erläutern. Enthält ein Frame Listings, benötigt es die Zusatzoption [containsverbatim]:
\begin{frame}[containsverbatim]
\frametitle{Listing im Frame}
%% hier steht das Listing
\end{frame}
PDF-Dateien neu arrangieren
Existierende PDF-Dokumente zu verändern, ist keine leichte Aufgabe. Doch die Pakete PDFLaTeX und PDFPages ermöglichen das mit Hilfe von LaTeX. Zu den typischen Anwendungsfällen zählen beispielsweise das Erstellen einer Broschüre aus vorliegenden PDF-Dateien, die Darstellung mehrerer Seiten auf nur einer oder das Zusammenfassen eingespannter Einzelseiten in einem Dokument. Im letzteren Fall kann es sich statt um PDF-Dateien auch um PNG- oder JPEG-Grafiken handeln. Möchten Sie mehrere Folien eines Vortrags jeweils auf einem Blatt zusammenfassen, nutzen Sie PDFPages auf folgende Weise:
\usepackage{pdfpages}
\begin{document}
\includepdf[pages=1-6,
nup=1x3,
frame=true
]{beamer01.pdf}
\end{document}
Für das Zusammenfassen mehrerer Seiten in einer PDF-Datei mit Lesezeichen und Inhaltsverzeichnis benutzen Sie die Befehle aus Listing 5. \includepdf ordnet jedem eingefügten Abschnitt einen Eintrag im Inhaltsverzeichnis und in den Bookmarks der PDF-Datei zu. Der Befehl addtotoc gibt die Startseite der eingebundenen PDF-Datei, die zugehörige Gliederungsebene, die Lesezeichenebene, den Titel des Verzeichniseintrags sowie ein Label zum Referenzieren an. Um Bookmarks aus den Originaldateien zu übernehmen, binden Sie zusätzlich das Paket Hyperref ins LaTeX-Dokument ein.
Listing 5
\documentclass[]{article}
\usepackage{pdfpages}
\usepackage{hyperref}
\begin{document}
\tableofcontents
\includepdf[pages=1-3,nup=1x3,frame=true,
addtotoc={1,section,1,{TOC-Eintrag 1},teil1}
]{beamer01.pdf}
\includepdf[pages=4-6,nup=1x3,frame=true,
addtotoc={4,section,1,{TOC-Eintrag 2},teil2}
]{beamer01.pdf}
\end{document}
Das Kommando \includepdfmerge[Optionen]{datei1.pdf, datei2.pdf} fasst mehrere PDF-Dateien zusammen und versteht dieselben Optionen wie \includepdf.
Schließlich stellen Sie mit dem Paket PDFPages aus einer oder mehreren bestehenden PDF-Dateien eine druckbare Broschüre zusammen; dieser Vorgang heißt auch “ausschießen”. Dazu dient die Option signature=n, wobei n eine durch vier teilbare Zahl sein muss. PDFPages platziert die Seiten dann automatisch in der richtigen Reihenfolge, sodass ein Duplexdrucker sie als Broschüre ausgibt.
Makros, Schleifen und Verzweigungen
Die vorgestellten Pakete bestehen aus Makros, die zum TeX- oder LaTeX-Lieferumfang gehören. Eigene Makros vereinfachen individuelle Abläufe weiter. Das folgende Beispiel färbt bestimmte Texte ein und nimmt die Farbe als Argument #1 und den Text als Argument #2 entgegen.
\newcommand{\farbtext}[2]{%
\begingroup\color{#1}#2\end?
group%
}%
Das Kommando \farbtext{blue}{blauer Text} ruft das Makro auf, wobei das erste Argument blue auf eine mit dem Paket xcolor definierte Farbe verweist.
In LaTeX-Makros können Sie auch bedingte Anweisungen benutzen. Binden Sie dazu das Paket ifthen ein und verwenden Sie den Befehl:
\ifthenelse{<I>Bedingung<I>}?
{<I>then-Zweig<I>}?
{<I>else-Zweig<I>}
Wenn Sie eine Schleife benötigen, benutzen Sie \whiledo auf die gleiche Weise. Das Beispiel in Listing 6 färbt negative Zahlen rot ein.
Listing 6
\newcommand{\zahl}[1]{%
\ifthenelse{\lengthtest{#1pt<0pt}}{%
\begingroup\color{red}#1\endgroup%
}{%
\begingroup\color{black}#1\endgroup%
}}%
Was für’s Auge
Mit etwas Know-How kennt LaTeX kaum Grenzen. Damit erzeugte PDF-Dateien sehen optisch ansprechend aus und schöpfen alle Funktionen dieses plattformunabhängigen Dokumentenformats aus.
Infos
[1] Listings-Paket: http://www.tug.org/tex-archive/help/Catalogue/entries/listings.html
[2] Beispiele zu LaTeX und PDF: http://www.lagotzki.de/pdf_latex
[3] Attachfile-Paket: http://www.tug.org/tex-archive/help/Catalogue/entries/attachfile.html
[4] Beamer-Klasse: http://www.tug.org/tex-archive/help/Catalogue/entries/beamer.html




