Montag, 30. November 2009

LaTeX und TODOs

Schreibt man eine größere Arbeit mit LaTeX, kommt es häufig vor, dass man auf Probleme stößt, welche man dem Schreibefluss zu liebe lieber erstmal übergehen will. Damit man später nicht vergisst sich darum zu kümmern, gibt es verschiedene Möglichkeiten. Zum einen kann man sich im LaTeX-Quellcode Notizen in Form von Kommentaren machen. Diese werden aber leider schnell mal übersehen (besonders, wenn man sich angewöhnt hat, sein Dokument nur als PDF zu lesen).

Eine weitere Möglichkeit für Randnotizen in LaTeX wird über das todonotes Package bereitgestellt. Dieses ermöglicht es, auf einfache Weise Randnotizen direkt im PDF darstellen zu lassen. Dazu wird die entsprechende Notiz mittels \todo{Meine Notiz} an die entsprechende Stelle im Quellcode eingefügt. Die Notiz selbst erscheint dann in einer farbigen Box am Seitenrand. Eine Liste von allen TODOs inklusive Hyperlinks zu den Stellen im Dokument, kann mit dem Befehl \listoftodos angelegt werden.

Ein Nachteil der TODOs ist, dass oftmals der Platz am Rand nicht ausreicht, um ausführlichere TODOs ansprechend darzustellen. Um das Package dennoch sinnvoll nutzen zu können, bietet es sich daher an, die Papergröße und die Randgröße den TODOs zu liebe zu vergrößern. Folgender Code in der Preamble erfüllt diese Aufgabe:

\usepackage{calc}
\newlength{\extrawidth}
\setlength{\extrawidth}{2cm}
\usepackage[paperwidth=\paperwidth+\extrawidth,top=30mm,bottom=30mm,left=30mm,right=30mm+\extrawidth]{geometry}
\usepackage[textwidth=2.3cm+\extrawidth]{todonotes}

Dabei wird eine neue Länge \extrawidth definiert, welche die zusätzliche Randbreite angibt. Dann wird über das geometry Package die Seitenbreite und der rechte Rand um diese Länge erweitert. Dadurch bleibt die Textbreite unverändert. Letztlich sollte ebenfalls die Breite der TODOs selbst vergrößert werden. Dadurch gewinnt man nun wesentlich mehr Platz für sinnvolle Ergänzungen. Für den Druck sollte natürlich \extrawidth wieder auf Null gesetzt werden.

Mittwoch, 11. November 2009

Die Externalization Library von TikZ

PGF/TikZ ist eine Packagekombination für Latex mit der man mit vertretbarem Auffand hoch-qualitative Grafiken erstellen kann. Leider steigt mit wachsender Anzahl an TikZ-Grafiken und mit wachsender Komplexität der Grafiken, die Kompiliertzeit eines Latex-Dokuments spürbar an. Da einmal fertiggestellte Grafiken nicht immer wieder neu geparsed werden brächten, gibt es seit langem in PGF die Möglichkeit Grafiken extern als PDF zu speichern, sodass beim zweiten Kompilieren nur noch das gespeicherte PDF eingebunden werden muss. Dies spart je nach Komplexität und Anzahl der Grafiken mehr oder minder viel Zeit beim Erstellen der PDF-Datei.

Bislang musste man, um in den Genuss dieses Features zu kommen, auf den PGF-Layer von TikZ zurückgreifen. Desweiteren musste jedes Grafik durch einen separaten Aufruf von PDFLatex erstellt werden. Hier schafft die neue Externalization (external) Library von TikZ abhilfe. Diese Sucht selbstständig nach TikZ-Abbildungen und speichert diese als PDF-Datei. Wenn schon eine PDF-Datei vorhanden ist, so wird das Bild nicht neu erstellt, sondern die PDF eingebunden. Zur Veranschaulichung hier ein Beispiel aus dem TikZ-Manual:

\documentclass{article}

% main document, called main.tex
\usepackage{tikz}
\usetikzlibrary{external}

% provide the file's real name
\tikzexternalize{main}

\begin{document}

% will be written to 'main-figure0.pdf'

\begin{tikzpicture}
  \node {root}
    child {node {left}}
    child {node {right}
      child {node {child}}
      child {node {child}}
    };
\end{tikzpicture}

% will be written to 'main-figure1.pdf'
\begin{tikzpicture}
  \draw (0,0) -- (5,5);
\end{tikzpicture}

\end{document}

Bislang ist dieses Feature noch nicht in der Release-Version von TikZ enthalten. Um in den Genuss der Externalization Library zu kommen, solltet ihr euch also den aktuellen Nightly-Build von www.texample.net herunter laden und in euren texmf-Tree installieren.

Tom