Ein Spickzettel mit einigen Notizen zu LaTeX
1 Unicode in LaTeX
1.1 russisch
1.1.1 Minimalbeispiel
1.2 japanisch
1.2.1 Minimalbeispiel
1.3 Unicode erzeugen
2 richtig große Schriftarten
3 eigenes Verzeichnis definieren
3.1 Ähnlich dem Inhaltsverzeichnis
3.2 Ohne Seitenangaben
4 Präsentationen mit beamer.sty
4.1 uncover-Optionen
4.2 Druckversion (Handout)
5 Bäume
5.1 qtree und pdfLaTeX
6 Graphen und Bäume mit tree-dvips.sty
7 Dateistrukturen mit "baum.sty"
8 Einträge in das PDF-Inhaltsverzeichnis (PDF-Bookmarks) hinzufügen
9 Seiten im PDF-Dokument drehen
10 Papiergröße bestimmen
11 Graphen mit GraphViz zeichnen
Einführung in TeX LaTeX
1 Unicode in LaTeX (Index)
Wer mehrsprachige Dokumente verfassen möchte kommt heutzutage um Unicode
(genauer UTF-8) nicht mehr herum. Das ist eigentlich kein Problem,
allerdings ist TeX/LaTeX etwas älter als Unicode und hat daher damit
ein paar kleine Schwierigkeiten. Daher hier ein paar Anmerkungen dazu.
Zuerst beschreibe ich ein Beispiel anhand des Russischen, welches
allerdings auch für unzählige andere Sprachen gilt und anschließend
Japanisch, da sich die CJK-Sprachen etwas anders verhalten.
1.1 russisch (Index)
Um Russisch zu verwenden (und andere Sprachen, wie Vietnamesisch,
Walisisch, Kirgisisch aber kein CJK!) gibt es das UCS Paket von Dominique
Unruh unter
http://www.unruh.de/DniQ/latex/unicode/
zum Download. Das Paket muss nur heruntergeladen, entpackt, in den TeX-Tree kopiert
(/usr/pkg/share/texmf/tex/) und mit mktexlsr propagiert werden.
Anschließend kann man mit
\usepackage{ucs}
\usepackage[utf8x]{inputenc}
\usepackage[russian,ngerman]{babel}
die russisch-Unterstützung in Dokumente einbinden und mit einem kleinen Makro:
\newcommand\ru[1]{\foreignlanguage{russian}{#1}}
als einfache Umgebung einrichten.
1.1.1 Minimalbeispiel (Index)
\documentclass{article}
\usepackage{ucs}
\usepackage[utf8x]{inputenc}
\usepackage[russian,ngerman]{babel}
\newcommand\ru[1]{\foreignlanguage{russian}{#1}}
\begin{document}
\Large{\noindent Guten Tag, Herzlich Willkommen in \LaTeX!\\
\ru{Добрый день, Добро
пожаловать в \LaTeXе!}}
\end{document}
erzeugt :
1.2 japanisch (Index)
CJK (chinesisch/japanisch/koreanisch) Unterstützung ist in UCS nicht direkt enthalten
und etwas komplizierter zu konfigurieren.
Dmit die Pakete auch gesichert werden, bietet es sich an, sie in das texmf-Verzeichnis des
eigenen Benutzers abzulegen. Das ist ~/texmf/.
- pkgsrc/fonts/ttf2pk installieren, wird benötigt um TTF in TFM zu wandeln
- CJK-Paket von http://www.unruh.de/DniQ/latex/unicode/unicode.tgz nach ~/texmf/tex
entpacken:
mkdirhier texmf/tex/ && cd texmf/tex/
ftp -a http://www.unruh.de/DniQ/latex/unicode/unicode.tgz
tar xzf unicode.tgz && rm unicode.tgz
- http://cjk.ffii.org/cjk-4.6.0-doc.tar.gz
von http://cjk.ffii.org/ herunterladen und nach
~/texmf/tex/ entpacken:
ftp -a http://cjk.ffii.org/cjk-4.6.0.tar.gz
tar xzf cjk-4.6.0.tar.gz && rm cjk-4.6.0.tar.gz
- Cyberbit.ttf aus ftp://ftp.netscape.com/pub/communicator/extras/fonts/windows/Cyberbit.ZIP
nach ~/texmf/tex/fonts/truetype/bitstream/ (LaTeX unterscheidet dabei Gross-/Kleinschreibung):
mkdirhier ~/texmf/tex/fonts/truetype/bitstream
cd ~/texmf/tex/fonts/truetype/bitstream/
ftp -a ftp://ftp.netscape.com/pub/communicator/extras/fonts/windows/Cyberbit.ZIP
unzip Cyberbit.ZIP && rm Cyberbit.ZIP && mv Cyberbit.ttf cyberbit.ttf
- in ~/texmf/tex/fonts/truetype/bitstream folgenden Befehl ausführen:
ttf2tfm cyberbit.ttf -w cyberbit@Unicode.sfd@ > cyberbit.log
-
mkdirhier ~/texmf/tex/pdftex/cyberbit/
mv *.enc ~/texmf/tex/pdftex/cyberbit/
mv *.tfm ~/texmf/tex/pdftex/cyberbit/
-
mkdirhier ~/texmf/tex/ttf2tfm/base/
echo "cyberbit@Unicode@ cyberbit.ttf" >> ~/texmf/tex/ttf2tfm/base/ttfonts.map
- die eben erzeugten Dateien in verschiedene Verzeichnisse kopieren:
mkdirhier ~/texmf/tex/fonts/tfm/bitstream/cyberbit/
mv *.tfm ~/texmf/tex/fonts/tfm/bitstream/cyberbit/
mkdirhier ~/texmf/tex/pdftex/cyberb/
mv *.enc ~/texmf/tex/pdftex/cyberb/
- http://delloye.free.fr/cyberbit.map
nach ~/texmf/tex/pdftex/cyberbit/ herunterladen:
cd ~/texmf/tex/pdftex/cyberbit/
ftp -a http://delloye.free.fr/cyberbit.map
- mkdirhier ~/texmf/tex/web2c/
echo "Map cyberbit.map #~/texmf/tex/pdftex/cyberbit/cyberbit.map" >> ~/texmf/tex/web2c/updmap.cfg
-
http://delloye.free.fr/c70cyberbit.fd nach
~/texmf/tex/latex/cyberbit herunterladen:
mkdirhier ~/texmf/tex/latex/cyberbit
cd ~/texmf/tex/latex/cyberbit
ftp -a http://delloye.free.fr/c70cyberbit.fd
- Font Map für TeX aktualisieren und TeX-Dateidatedatenbank aktualisieren:
updmap && mktexlsr
CJK in TeX-Dateien verwenden:
\usepackage[encapsulated]{CJK}
\usepackage{ucs}
\usepackage[utf8x]{inputenc}
und wieder eine kleines Makro:
\newcommand{\cntext}[1]{\begin{CJK}{UTF8}{cyberbit}#1\end{CJK}}
1.2.1 Minimalbeispiel (Index)
\documentclass{article}
\usepackage[encapsulated]{CJK}
\usepackage{ucs}
\usepackage[utf8x]{inputenc}
\newcommand{\cntext}[1]{\begin{CJK}{UTF8}{cyberbit}#1\end{CJK}}
\begin{document}
\Large{\noindent Guten Tag, Herzlich Willkommen in \LaTeX!\\
\Huge \cntext{お早う ご座います!}
\end{document}
erzeugt :
1.3 Unicode erzeugen (Index)
Um Unicode einzugeben benötigt man einen Editor der Unicode unterstützt. In pkgsrc existiert
yudit, der verschiedene Tastaturbelegungen enthält und diese auch editieren kann.
2 richtig große Schriftarten (Index)
Richtig große Schriftarten ohne a0poster.sty bekommt man mit "type1cm".
\documentclass[a4paper,12pt]{article}
\usepackage[latin1]{inputenc}
\usepackage{type1cm}
\begin{document}
{\fontsize{199}{199pt}\selectfont \LaTeX}~\\~\\
Dies ist die normale 12pt-Größe im \LaTeX-Artikel.
\end{document}
erzeugt dann was richtig großes:
Type1cm beißt sich aber mit anderen Schriftarten, wie bspw. den T1-Fonts, die dann entfernt werden müssen.
3 eigenes Verzeichnis definieren (Index)
Für eine Dokumentation benötigte ich ein Verzeichnis eigener Funktionen, dazu erschien mir
algorithm/algorithmic allerdings ungeeignet. Daher habe ich eine eigene Umgebung definiert, die
gleichzeitig auch in einem Verzeichnis gelistet wird.
3.1 Ähnlich dem Inhaltsverzeichnis (Index)
%Zähler für die Nummer der Funktion
\newcounter{fktnr}\setcounter{fktnr}{1}
% Definition des Verzeichnis
\makeatletter
\newcommand{\listoffkt}{%
% Name des Verzeichnis
\section*{Funktionenverzeichnis\@mkboth{FKT}{FKT}}%
\@starttoc{fk}}
\makeatother
%
%Definition der eigentlichen Umgebung
\newcommand{\fkt}[4]{
\parbox{\textwidth}{ %soll Seitenumbruch in der Umgebung verhindern
\addcontentsline{fk}{subsection}{#1} %in das Verzeichnis hinzufügen
%alle Zeilen nach der 1. einrücken
\noindent\hangafter=1\hangindent=1em{\textbf{{Funktion \arabic{fktnr}: }}\smallskip \texttt{#1}}\\
\addtocounter{fktnr}{1}
{\texttt{Argument: }#2}\\
{\texttt{R"uckgabe: }#3}\\[2mm]
#4\\}%parbox
}%umgebung
Aufgerufen wird es folgendermaßen:
\fkt{global\_includes::getPatterns();}{SQL Anfrage}{Ergebnis der
Anfrage}{Führt \texttt{SELECT FROM WHERE} Anfrage in der
Datenbank aus und liefert das Ergebnis zurück}
Und erzeugt dabei folgenden Eintrag:
Mit \addcontentsline{toc}{section}{Funktionenverzeichnis}
\listoffkt
kann man das Verzeichnis in den TOC übernehmen und anzeigen lassen:
3.2 Ohne Seitenangaben (Index)
Etwas modifiziert habe ich das obige Bsp. für ein Verzeichnis der CVS-Tags. Ich verwende CVS um die
Quellcode-Dateien zu verwalten. Da in größeren Projekten meist mehrere Dateien verwand werden,
möchte ich in den Metainformationen zum Buch nicht nur die Hauptdatei angeben, sondern alle
mit \input eingelesenen Dateien. Dies lässt sich ebenfalls über ein Verzeichnis realisieren, das diesmal aber
anders als das Inhaltsverzeichnis (ToC) nicht mit der Punktlinie und der Seitenzahl versehen werden soll. Dies
lässt sich mit einer kleinen Änderung realisieren:
\makeatletter%
\newcommand{\listofcvsid}{%
\section*{\small Dateiverzeichnis:\@mkboth{CVS}{CVS}}%
\@starttoc{cvs}}%
\makeatother%
\newcommand{\cvsid}[1]{%
\addtocontents{cvs}{\$ #1\$~\\}%
}%
Dann wird in allen einzubindenden Dateien der CVS-Tag eingelesen und an geeigneter Stelle das Verzeichnis:
\cvsid{${}$Id: latex-tips.html,v 1.36 2014/08/21 09:24:03 stefan Exp ${}$}
...
\listofcvsid
4 Präsentationen mit beamer.sty (Index)
4.1 uncover-Optionen (Index)
Da beamer.sty einige nette Optionen hat, um Listen oder Aufzählungen einzeln aufzuklappen oder
auch mit alert zu markieren, kann man davon natürlich exzessiv gebrauch machen. Wenn man nun
einei Liste einzeln aufklappen lässt, werden alle folgenden Items komplett ausgeblendet. Das ist
nicht unbedingt wünschenswert, denn so weiß das Publikum nicht, was noch zu erwarten ist.
Daher hat beamer diverse Opaqueness-Optionen, mit denen man noch nicht aufgeklappte Elemente
ausgrauen kann. Dabei wird die Schriftfarbe mit dem jeweiligen Hintergrund vermischt.
Mit \opaqueness kann man die Ebene und den Grad der Vermischung festlegen lassen:
\setbeamercovered{%
still covered={
\opaqueness<1>{60}
\opaqueness<2->{30}},
again covered={
\opaqueness<1->{15}
}
}
Hiermit wir das nächste Item 40% ausgegraut und alle folgenden 70%. Objekte die wieder zugedeckt
weren, werden mit 85% ausgegraut.
Allerdings hängt die Wirkung der ausgegrauten Schriftart immer vom Monitor bzw. Beamer ab, so das
man wohl oder übel vor dem Vortrag die Technik testen sollte.
Mit der \color-Option kann man gewisse zusammenhänge deutlich darstellen. Hier werden nacheinander die
Anfangsbuchstaben des Satzes rot hervorgehoben und aber der 9. Folie alle Anfangszeichen eingefärbt.
Gleichzeitig wird unten auf der Folie das Passwort korrespondierend zur Quelle hervorgehoben.
\frame{\frametitle{Passwörter von Hand generieren}
\begin{itemize}
\item Einen Satz ausdenken und die Initialen zusammenziehen\pause
\item
{\color<3,9>{red}W}em
{\color<4,9>{red}d}er
{\color<5,9>{red}g}roße
{\color<6,9>{red}W}urf
{\color<7,9>{red}g}elungen
{\color<8,9>{red},}~\\
{\color<9>{red}{\color<9>{red}E}}ines {\color<9>{red}F}reundes {\color<9>{red}F}reund {\color<9>{red}z}u
{\color<9>{red}s}ein{\color<9>{red}.}~\\ {\color<9>{red}-} {\color<9>{red}F}riedrich
{\color<9>{red}S}chiller{\color<9>{red},} {\color<9>{red}1805}
\pause
\item $\leadsto$
{\color<9>{red}{\color<3>{red}W} {\color<4>{red}d} {\color<5>{red}g} {\color<6>{red}W}
{\color<7>{red}g} {\color<8>{red},}} {\color<9>{red}E} {\color<9>{red}F} {\color<9>{red}F} {\color<9>{red}z} {\color<9>{red}s} {\color<9>{red}.} {\color<9>{red}-} {\color<9>{red}F} {\color<9>{red}S} {\color<9>{red},} {\color<9>{red}1} {\color<9>{red}8} {\color<9>{red}0} {\color<9>{red}5}
\end{itemize}}
Das selbe kann man auch mit dem Bsp-Block machen. Hier werden gleichzeitig die Erklärung in der
Überschrift und die gesetzte Option im Block eingefärbt.
\begin{frame}
\frametitle{Apg}
\begin{exampleblock}{\small
\begin{itemize}\itemsep-1ex
\item {\color<2>{red}Zufallspasswörter der Länge 10-14}
\item {\color<3>{red}aus Ziffern, Sonderzeichen, großen und kleine Buchstaben aber ohne
''0'', ''1'', ''2'', ''3{''}}
\item {\color<4>{red}ohne Vorkommen in »verbotenePasswörter«}
\item {\color<5>{red}mit Zufallszahlen aus shuffle(1) als Initialisierungsvektor}
\end{itemize}
}
\begin{semiverbatim}
\$ {\color<1>{red}find /etc/ | xargs md5 > /dev/null} \& \newline
\$ apg {\color<2>{red}-m 10 -x 14} {\color<3>{red}-M SNCL -E 0123} \textbackslash \newline
\indent ~~{\color<4>{red}-r /home/stefan/verbotenePasswörter} \textbackslash \newline
\indent ~~{\color<5>{red}-c `shuffle -0 -p 8 0 1 ... 8 9 a b c ... X Y Z`}
5GapsUrEet=\newline
ral+opeapKawf4\newline
EujOtEpOrp;Om8\newline
8ofCotpyulyuf.\newline
devav5KriWeb<\newline
\end{semiverbatim}
\end{exampleblock}
\end{frame}
Man kann aber auch im Democode einfärben. Dazu benötigt man fancyvrb und folgende Optionen:
Zuerst werden zwei neue Befehle definiert, die den Text auf der 2. bzw. 3. Stufe einblenden und
einfärben.
Anschließend wird eine MyVerbatim-Umgebung definiert, in der \, [ und ] als Befehlszeichen definierter
werden. Somit kann man mit \oo[] den oben definierten \oo{}-Befehl im Quellcode verwenden. Deckt man die
Folie auf, wird zuerst "2872" rot markiert angezeigt, auf der nächsten Folie dann stattdessen der Stern
*. Somit lassen sich gut Änderungen an Optionen zeigen.
\newcommand{\oo}[1]{\only<2>{\textcolor{red}{#1}}}
\newcommand{\ooo}[1]{\only<3>{\textcolor{red}{#1}}}
[...]
\DefineVerbatimEnvironment{MyVerbatim}{Verbatim}{numbers=left, commandchars=\\\[\]}
\begin{MyVerbatim}
netbsd-chmod: filename \oo[eq]\ooo[match] "/var/run/httpd.mm.\oo[2872]\ooo[*].sem"
and mode eq "600" then permit \ooo[log]
netbsd-fswrite: filename \oo[eq]\ooo[match] "/var/run/httpd.lock.\oo[1827]\ooo[*]"
then permit \ooo[log]
\end{MyVerbatim}
\end{frame}
4.2 Druckversion (Handout) (Index)
Sollen Folien in eine Ausarbeitung eingefügt oder als Druckversion verügbar gemacht werden, kann
man auf pdfpages zurückgreifen.
Dieses Paket kan PDF-Dateien in ein LaTeX-Dokument integrieren. Dabei werden die PDF-Dateien
automatisch skaliert und angeordnet. Anders als mit psnup, kann man so die Folien sehr leicht zum
Ausdruck aufbereiten.
Die Folien werden mit der Klassenoption "handout" kompiliert, um nicht-druckbare
Effekte auszublenden.
\documentclass{article}
\usepackage{pdfpages}
\begin{document}
\includepdf[turn=false, nup=2x2, delta=2mm 2mm, pages=-,
frame=true, scale=0.73, pagecommand={\thispagestyle{plain}}]{backup-folien.pdf}
\end{document}
Generiert eine PDF-Datei, in der jeweils 4 Folien (2 Spalten, 2 Zeilen) mit 2mm Zwischenabstand,
Rahmen und skaliert auf 73% eingebunden werden.
5 Bäume (Index)
Als Informatiker muss man verständlicherweise den ein oder anderen
Baum zu Papier bringen. Da ich die Dokumentation zu einem
Rot-Schwarz-Baum in LaTeX gesetzt habe, wollte ich verständlicherweise
die Erläuterungen illustrieren - und zwar ohne Xfig.
zum Glück gibt es qtree
- ein TeX Paket für Linguisten, das Syntaxbäume malen kann und die
allseits beliebte geklammerte Notation unterstützt.
Man binde qtree als Paket ein und beginne einen Baum in einer Box
oder Minipage, anschließend kann man geklammert die Knoten angeben:
\Tree
[.1A
[.2A
\fbox{3A}
{3$\frac{1}{2}$B}
].2A
[.2B
3C
[.3D
].3D
].2B
].1A
[. öffnet, ]. schließt einen Knoten, alle Knoten dazwischen werden
Kinder des Vaterknotens. Blätter müssen nicht geklammert angegeben
werden (siehe 3C <-> 3D)
qtree verfügt über vielfältige Möglichkeiten Kanten zu manipulieren
und Pfeile zwischen den Blättern anzugeben, Beispiele dazu gibt es in
der Dokumentation.
5.1 qtree und pdfLaTeX (Index)
qtree hat massive Probleme mit pdfLaTeX, da dort einige PS-Specials
nicht greifen und so bspw. Kanten nicht gezeichnet werden. Dafür habe
ich folgenden Workaround entwickelt:
- für den Baum eine eigene Datei mit "\pagestyle{empty}" und
"\usepackage{vmargin}" erstellen
- mit latex kompilieren
- in PS wandeln: dvips -E -f tree.dvi > tree.ps
- in EPS wandeln: ps2epsi tree.ps
- PS in PDF wandeln: epstopdf tree.epsi
- man hat nun tree.pdf vorliegen und kann diese Datei mit
\includegraphics{} einfügen
6 Graphen und Bäume mit tree-dvips.sty (Index)
qtree ist nett für normale Bäume, aber problematisch bei anderen Graphen, so kann ein qtree eben immer nur genau eine
Wurzel haben. Möchte man andere Graphen, muss man zu dot oder eben tree-dvips.sty greifen.
Graphen werden in tree-dvips.sty anders gesetzt als in qtree. Man definiert eine Tabelle, in der man die Knoten setzt.
Anschließend kann die Kanten zwischen den Knoten setzen und beliebig definieren (mit oder ohne Pfeil, gerade oder als
Kurve ...)
\documentclass[20pt]{scrartcl}
\usepackage{extsizes}
\usepackage{tree-dvips}
\pagestyle{empty}
\begin{document}
\begin{tabular}{ccccccc}
&\node{g}{$\eta$} &\node{h}{$\theta$}& \\[3ex]
&\node{d}{$\delta$} &\node{e}{$\epsilon$}& \node{f}{$\zeta$}\\[3ex]
& &\node{c}{$\gamma$}\\[3ex]
& &\node{b}{$\beta$}\\[3ex]
& &\node{a}{$\alpha$}\\[3ex]
\end{tabular}
\anodeconnect[b]{b}[t]{a}
\anodeconnect[b]{c}[t]{b}
%
\anodeconnect[b]{d}[tl]{c}
\anodeconnect[b]{e}[t]{c}
\anodeconnect[b]{f}[tr]{c}
%
\anodeconnect[b]{g}[t]{d}
\anodeconnect[b]{h}[tr]{d}
\end{document}
Es gibt verschiedene Kantenmöglichkeiten, nodeconnect ist eine einfach Linie, anodeconnect ein Pfeil in der Richtung
der übergebenen Knoten. Zusätzlich kann man die Kantenpunkte auch an verschiedene Ecken des Knoten binden. In den
Knoten c laufen insgesamt drei Pfeile ein, so das es unübersichtlich aussieht, wenn sie im selben Punkt treffen. Daher
habe ich mit [tl] (top left, oben links (10 Uhr)), [t] (top, oben, 12Uhr) und [tr] (top right, oben rechts, 2 Uhr) je
eine Ecke für die Kante übergeben.
Direkt mit pdflatex kann man die Bäume nicht kompilieren, da PSTricks eingesetzt werden um die Kanten zu erzeugen.
Daher kann man den ersten Weg wählen um eine normale Seite mit dem Baum zu kompilieren und in eine PDF-Datei zu
wandeln:
$ latex tree.tex && dvipdf tree.dvi && xpdf tree.pdf
$ latex tree.tex && dvips -E -f tree.dvi > tree.ps && ps2epsi tree.ps && epstopdf tree.epsi && xpdf tree.pdf
Die zweite Variante erzeugt über den Umweg einer EPS-Datei eine PDF-Datei, die nur so groß wie benötigt ist (siehe
Beispielbild). Die so erzeugt PDF-Datei kann man dann mit \includegraphics{} in eine andere TeX-Datei einbinden.
Das obige Beispiel fertig kompiliert und vergrößert
Weitere Anleitungen und Beispiele finden sich in http://www.essex.ac.uk/linguistics/clmt/latex4ling/trees/tree-dvips/
7 Dateistrukturen mit "baum.sty" (Index)
baum.sty
ist ein Makro um Verzeichnisbäume zu setzen.
\beginpicture
\baum {\textasciitilde gui/} structure
\ordner{includes}
\datei{global\_includes.pm}
\endordner
\ordner{gui}
\ordner{bearbeiter}
\datei{bearbeiter-anzeigen.pl}
\datei{bearbeiter-hinzufuegen.pl}
\datei{bearbeiter-loeschen.pl}
\endordner
\ordner{vorgaben}
\datei{vorgaben-anzeigen.pl}
\datei{vorgaben-hinzufuegen-ausfuehren.pl}
\datei{vorgaben-hinzufuegen.pl}
\datei{vorgaben-loeschen-ausfuehren.pl}
\datei{vorgaben-loeschen.pl}
\endordner
\endordner
\ordner{helfer}
\datei{ascii-utf8.pl}
\endordner
/ at 0 0
\endpicture
ein \baum muss hierbei in einer picture-Umgebung gesetzt werden und
kann mit \ordner{} / \endordner{} Verzeichnisse darstellen, in die mit
\datei{} Dateien (also Blätter) übernommen werden.
Hier gibt es ein einfaches Minimalbeispiel zum herunterladen:
Quellcode und Ergebnis als PDF
8 Einträge in das PDF-Inhaltsverzeichnis (PDF-Bookmarks) hinzufügen (Index)
Normalerweise erzeugt pdfLaTeX PDF-Bookmarks, die dann von XPDF oder dem Acrobat Reader links neben dem
Dokument angezeigt werden. In diese Bookmarks werden in der Regel alle Einträge des Inhaltsverzeichnisses
übernommen, also Kapitel, Unterkapitel und Verzeichnisse. Das Inhaltsverzeichnis selbst wird hingegen nicht
als Bookmark angelegt. Das ist bei größeren Dokumenten nicht schön und kann manuell geändert werden:
\pdfbookmark[0]{Inhaltsverzeichnis}{toc}%
\tableofcontents%
Mit \pdfbookmark wir der nachfolgende \tableofcontents in die PDF-Bookmarks übernommen,
dabei wird der Eintrag "Inhaltsverzeichnis" genannt und als Ebene 0 (bei scrbook ein Kapitel) eingefügt.
9 Seiten im PDF-Dokument drehen (Index)
Manchmal muss man eine Tabelle erzeugen, die nicht nur sehr lang, sondern auch sehr breit ist. Daher ist es
erforderlich sie im Querformat zu setzen. Mit dem Paket "pdflscape" kann man die Umgebung
\begin{landscape}
foo bar baz
\end{landscape}
Benutzen. Alles in ihr wird passend zu Dokument im Querformat gesetzt und korrekt gedruckt und angezeigt.
Neben pdflscape kann man auch mit pdfpages ein PDF-Dokument in ein anderes einfügen, dabei kann mit der Option
"turn=" ein Neigungswinkel angegeben werden.
10 Papiergröße bestimmen (Index)
Manchmal ist es notwendig eine PDF-Datei bestimmter Größe zu erzeugen,
bspw. für den oben beschriebenen "qtree mit pdfLaTeX" Hack.
Dazu existiert das vmargin
Paket, welches mit
\usepackage{vmargin}
\setpapersize{A4}
\setmargins{0mm}{0mm}% % linker und oberer Rand
{100mm}{130mm}% % Textbreite und -hoehe
{0pt}{0pt}% % Kopfzeilenhoehe und -abstand
{0pt}{30pt}% % \footheight (egal) und Fusszeilenabstand
die Dimensionen festlegt.
Neben vmargin kann man auch geometry mit seinen Zahlreichen Optionen verwenden:
\usepackage{geometry}
\geometry{margin=10mm}
setzt alle Ränder auf 10mm
\usepackage{geometry}
\geometry{a5paper, top=10mm, left=30mm, right=5mm, bottom=10mm,
headsep=10mm, footskip=0mm}
benutzt A5-Papier, setzt oberen und unteren Rand auf 10mm, links auf 30 und rechts auf 5mm,
Abstand zwischen Kopf und Text sowie Text und Fußzeile auf 10mm.
\usepackage{geometry}
\geometry{ paperheight=60mm, paperwidth=120mm,
textheight=50mm, textwidth=112mm,
top=5mm, bottom=5mm, left=4mm, right=4mm,
noheadfoot
}
Setzt das Papierformat auf 60*120mm, den Textkörper auf 50*112mm, die Ränder entsprechend, außerdem werden
Kopf- und Fußzeilen deaktiviert.
11 Graphen mit GraphViz zeichnen (Index)
Desöftern benötigt man einen Graphen um bspw. ein Kommunikationsnetz
oder eine Hierarchie zu illustrieren. Hierzu existiert
AT&T GraphViz,
ein Graphengenerator, der aus einer Beschreibungssprache Bilder
erzeugen kann.
Die Beschreibungssprache ist auf der Projektseite sehr gut
dokumentiert und meiner Meinung nach auch einfach verständlich.
Außerdem verfügt GraphViz über sehr viele Grafikwidgets, die
verschiedenste Graphentypen erzeugen lassen.
Ein weiterer Vorteil der Beschreibungssprache ist die
algortihmisierbarkeit der Erzeugung, man kann bspw. mit Perl aus
PostgreSQL Daten auslesen und für GraphViz aufbereiten.
dot kann verschiedene Grafikformate erzeugen, bspw. PS, JPG, GIF, PNG,
HTML-Imagemap (sic!) usw. usf.
Ein Quellcode und der passende Graph finden sich unter:
http://www-e.uni-magdeburg.de/steschum/ntp/include/ntp5.dot
http://www-e.uni-magdeburg.de/steschum/ntp/include/ntp5.dot.jpeg
net-tex.de, Index
$Id: latex-tips.html,v 1.36 2014/08/21 09:24:03 stefan Exp $
Autor: Stefan Schumacher,
stefan@net-tex.de, PGP-Key 0xB3FBAE33
für net-tex.de/cryptomancer.de
Bitte beachten Sie, das die Seite inhaltlich seit Ende 2007 nicht mehr gepflegt wird!
Aktuellere Informationen erhalten Sie auf Kaishakunin.com