Donnerstag, 18. März 2010

TeX Visual FAQ

Heute gibt es gleich noch einen zweiten Post von mir. Dabei möchte ich alle von euch auf die TeX FAQ aufmerksam machen. Dort findet ihr Antworten auf eine Vielzahl von Fragen. Bevor ihr also das nächste mal nach einer Antwort Google bemüht und wieder nur Hinweise auf veraltete Pakete und unbeantwortete Forenbeiträge bekommt, schaut doch besser gleich in der TeX FAQ nach. Ebenfalls sehr zu empfehlen ist die Visual FAQ. Dies ist ein Beispiel Dokument, welches vieles zeigt, was mit TeX möglich ist. Annotiert ist dieses Dokument mit Hinweisen, wie die einzelnen Features des Dokuments gemacht wurden.

TeX FAQ:
http://www.tex.ac.uk/cgi-bin/texfaq2html?introduction=yes

Visual FAQ:
http://www.tex.ac.uk/tex-archive/info/visualFAQ/visualFAQ.pdf

Gruß, Tom

PDF in LaTeX kommentieren

Vor einiger Zeit hatte ich über das todonotes Paket von LaTeX gesprochen und wie man es nutzen kann, um für sich Anmerkungen im Dokument zu machen. Heute will ich ein weiteres nützliches Paket dafür vorstellen. Das Paket pdfcomment ermöglicht es, die PDF-Kommentar-Funktion direkt in LaTeX zu benutzen. Damit kann man bequem PDF-Kommentare an seine LaTeX-Dokumente setzen. Vorausgesetzt, der PDF-Viewer unterstütz dies. Weitere Information sind unter:

http://www.tug.org/texlive/Contents/live/texmf-dist/doc/latex/pdfcomment/pdfcomment_de.pdf

zu finden.

Beste Grüße,

Tom

Dienstag, 2. März 2010

Pseudocode

Pseudocode wurde entwickelt um gut lesbar und gut programmierbar einen Algorithmus zu beschreiben. Das diese beiden Prämissen nicht immer erfüllt wird, zeigt folgendes Beispiel:

image

Dienstag, 16. Februar 2010

Mittwoch, 16. Dezember 2009

3D-Grafiken mit Sketch

Im Zuge meine Diplomarbeit habe ich in den letzten Tagen mal wieder ein wenig mit Sketch, TikZ und LaTeX gearbeitet und damit eine 3D-Grafik erstellt, welche ich euch unmöglich vorenthalten kann. Diese Grafik wurde hauptsächlich mit Sketch erstellt. Die Beschriftungen wurden über TikZ nodes direkt im Sketch-Code angegeben. Wenn sich jemand für den zugrundeliegenden Code interessiert, sei er aufgefordert, sich einfach bei mir per E-Mail zu melden.

image

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