Skip to content

Praktikumsprotokolle mit LaTeX

Ich habe ein Problem mit LaTeX. Das funzt nicht!!11!11!!elf, so oder ähnlich lauten Anfragen, die mich hin und wieder per E-Mail erreichen. In der Regel ist klar, wo der Fehler liegt und ich verweise dann auf die entsprechende Dokumentation. Bei größeren Problemen zeige ich dann Richtung der entsprechenden Mailinglisten, Newsgroups etc.

Kürzlich erreichte mich eine Anfrage eines Studenten, der seine Protokolle mit LaTeX setzen möchte. Den Ansatz finde ich recht löblich. Die Herangehensweise war, sagen wir, verbesserungswürdig. Untenstehend findet ihr das (verfremdete) Originaldokument. Anhand dessen will ich Verbesserungen diskutieren.

\documentclass[german]{article}
\linespread{1.5}
\usepackage[ngerman]{babel}
\usepackage{amsmath}
\usepackage{graphics}
\pagestyle{headings}
\usepackage{geometry}
\geometry{a4paper,left=25mm,right=25mm, top=4cm, bottom=3cm}
\begin{document}
\begin{center}
  {\Huge Synthese von Aquamarins"aure-$\textit{n}$-hexylester}${^{^\mathrm{^{[1]}}}}$
   \end{center}\vspace{20mm}
 \begin{tabular}{ll}
  Name:&Peter Meier\\
  Assistent:&Hanno Lehmann\\
  Datum des Versuches:&19.05.10
 \end{tabular}\vspace{10mm}  

\underline{\textbf{Reaktionsgleichung}}
\begin{figure}[h]
	\centering
		\rotatebox{0}{\scalebox{0.7}[0.7]{\includegraphics{bild1.jpg}}}
	\label{fig:Aquamarins"aure-\textit{n}-hexylester}
\end{figure}\\
\noindent \underline{\textbf{Sicherheitsdaten}}\\ \\
 \begin{tabular}{ll}
 Aquamarins"auredehydrid (C)&R 34\\
 &S (1/2)-26-45\\
 1-Methanol (Xn)&R 22\\
 &S (2)-24/25\\
 Schwefels"aure (C)&R 35\\
 &S (1/2)-26-30-45\\
 Methylether (F+, Xn)&R 12-19-22-66-67\\
 &S (2)-9-16-29-33\\
 \end{tabular}
\vspace{0,5cm}\\
\noindent\underline{\textbf{Entsorgung}}\\ \\
 \begin{tabular}{ll}
 Aquamarins“auredehydrid&Organische L”osungsmittelabf"alle\\
 1-Methanol&Organische L“osungsmittelabf”alle\\
 Schwefels“aure&Neutralisieren, dann kommunale Abf”alle\\
 Methylether&gesonderde Abf"alle\\
 \end{tabular}\\ \\
\vspace{0,5cm}\\ 
\newpage
\noindent\underline{\textbf{Durchf"uhrung}}$^{[1]}$\\ 
\begin{sloppypar}
\noindent 
Eine L“osung von Aquamarins”auredehydrid (22.1~g, 170~mmol, 1.00~"Aq.)
und 1-Methanol (15.3~mL, 150~mmol, 1.00~"Aq.) wurde mit 96~\%iger
Schwefels"aure (2.0~ml) versetzt und 1 h bei 100~$\mathrm{^{o}}$C
ger“uhrt, nach abk”uhlen mit Eiswasser (75 ml) versetzt und 30 min bei
18-25~$\mathrm{^{o}}$C ger"uhrt. Die Phasen wurden getrennt, die
w"assrige Phase mit Methylether (2~x~50~ml) extrahiert und die
vereinigten organischen Phasen mit 10~\%iger w"assriger
Polycarbonat-L"osung (150~ml) langsam versetzt. Die organische
Phase wurde mit 10~\%iger w“assriger Polycarbonat-L”osung (2 x
50~ml) und Wasser (50~ml) gewaschen und “uber dem W”aschetrockner
getrocknet. Das L"osungsmittel wurde unter Vakuum entfernt und
fraktionierende Destillation des Rohprodukts lieferte die
Zielverbindung (27.9~g, 117~mmol, 73~\%[Lit.$\mathrm{^{[1]}}$: 90\%)
als farblose Fl"ussigkeit.\\ \\
\end{sloppypar}
%\vspace{0,5cm}
\noindent \underline{\textbf{Analytische Daten}}\\ \\
\textbf{Sdp.}: 107 $\mathrm{^{o}}$C (15~Torr) [Lit.$\mathrm{^{[1]}}$: 75-78~$\mathrm{^{o}}$C (15~Torr)].\\
\textbf{Brechungsindex}: n$\mathrm{_{D}^{20}}=1.4135$ [Lit.$\mathrm{^{[1]}}$: n$\mathrm{_{D}^{20}}=1.4128$].\\
\textbf{$^{1}$H-NMR} (300 MHz, CDCl$_{3}$): $\mathrm{\delta}$ = 
0.83 (t, \textit{J} = 7.5 Hz, 3~H, C\underline{H}$_3$CH$_2$COO-), 
1.08 (t, \textit{J} = 7.5 Hz , 3~H, -CH$_2$CH$_2$C\underline{H}$_3$),
1.20-1.40~(m, 6~H, -CH$_2$-(C\underline{H}$_2$)$_3$-CH$_3$)
1.52-1.59 (m, 2~H, -O-CH$_2$-C\underline{H}$_2$-CH$_2$)
2.26 (q, \textit{J}~=~7.5 Hz, 2~H, CH$_{3}$-C\underline{H}$_{2}$-CO-) 
4.01 (t, \textit{J} = 7.5 Hz, 2~H,-OC\underline{H}$_{2}$-)ppm.\\
\vspace{7mm}  \\
\noindent \underline{\textbf{Mechanismus (Veresterung)}}\\ 
\begin{figure}[h]
	\centering
		\rotatebox{0}{\scalebox{0.7}[0.7]{\includegraphics{bild2.jpg}}}
	\label{fig:}
\end{figure}
\\
\noindent \underline{\textbf{Literatur}}\\ \\
$\mathrm{\left[1\right]}$ A. B. Schulze \textit{Organisch-Chemisches
Grundpraktikum}, \textbf{2005}, Verlag Erfunden, 7. Auflage, S. 135.
\end{document}

Als Dokumentklasse wird article benutzt. Ich halte es generell für sinnvoller scrartcl bzw. eine äquivalente Klasse aus KOMA-Script zu verwenden. Dann kann man weiter unten statt headings das Paket scrpage2 verwenden. Das finde ich angenehmer zu nutzen und ist naturgemäß gut in KOMA-Script integriert. :-)

Die Zeile \geometry{a4paper,left=25mm,right=25mm, top=4cm, bottom=3cm} riecht ja sehr stark nach dem Standart (sic!) von Word. Wahrscheinlich sind das die Vorgaben des Lehrstuhls. Wem’s gefällt. Unter Umständen kann man da auch mit den DIV- und BCOR-Werten von KOMA-Script mehr erreichen.

Im Haupttext fällt auf, dass der Autor immer Umschreibungen für Umlaute verwendet. Dort empfiehlt es sich, das Paket inputenc mit der korrekten Option (wahrscheinlich utf8 oder latin1) zu laden. Das macht das Schreiben einfacher.

Kommen wir zum Hauptteil des Dokuments. Zuerst stehen dort Angaben zu Titel, Autor etc. Diese sind, wie vieles anderes, manuell formatiert. Üblicherweise packt man das in die entsprechenden Befehle und lässt die Titelei automatisch erzeugen:

\title{Synthese von Aquamethansäure-\textit{n}-hexylester}
\author{Name: Peter Meier\\
Assistent: Hanno Lehman}
\date{19.\,April~2010}
\maketitle

Ich habe dabei beim Datum darauf geachtet, dass die korrekten Leerzeichen verwendet werden. Ebenso habe ich im Rest des Dokuments versucht, korrekte Abstände zu verwenden. Im Originaldokument stand des Weiteren am Ende des Titels eine hochgestellte [1]. Ich vermute, dass der Autor damit auf die Literatur am Ende des Dokuments verweisen wollte. In dem Fall empfiehlt es sich, hier auch die entsprechende Umgebung zu benutzen und dann mittels \cite{schu05} das Buch zu zitieren:

\begin{thebibliography}{99}
\bibitem{schu05} A.\,B.\,Schulze \textit{Organistisches
Profipraktikum}, \textbf{2005}, Verlag Erfunden, 7.\,Auflage, S.\,135.
\end{thebibliography}

Im weiteren Text finden sich immer Zeilen der Art \underline{\textbf{..}}. Nach meiner Deutung sind das Überschriften zu dem jeweiligen Teil des Protokolls. Daher sollte man auch \section{..} verwenden. Wenn wirklich unterstrichener Text verwendet werden soll, muss im Dokumentkopf \addtokomafont{section}{\bfseries\underline} ergänzt werden. Ich kann mich jedoch nur der Warnung der Autoren des KOMA-Script-Handbuches anschließen, die schreiben:

Ich möchte Sie eindringlich davor warnen, die Möglichkeit zur Schriftumschaltung zu missbrauchen, um wild Schriften, Schriftgrößen und Schriftattribute miteinander zu mischen. Die Auswahl der richtigen Schrift für die richtige Aufgabe ist eine Sache für Experten und hat sehr, sehr wenig mit dem persönlichem Geschmack eines Laien zu tun.

Die Beschreibung der Durchführung schreit nach der Verwendung eines Pakets zum Setzen von Einheiten. Ich nutze gern siunitx. Nachdem das Paket eingebunden ist, lassen sich Einheiten einfach setzen:

\SI{22.1}{\gram}, \SI{170}{\mmol},
\SI{100}{°C}, \SI{15.3}{\milli\liter}

Für chemische Angaben gibt es zahlreiche LaTeX-Pakete. Es ist nicht ausgeschlossen, dass eines davon die Bedürfnisse besser trifft. Außerdem gibt es unter der obigen URL vorgefertigte Pakete für Praktikumsprotokolle. Diese erleichtern unter Umständen ebenfalls die Arbeit.

Mit den Veränderungen lassen sich doch starke Verbesserungen erreichen. Vielleicht sind meine Kommentare für den einen oder anderen Leser ebenso hilfreich.

Geany mit dem LaTeX-Plugin

Heute geht es in der Reihe mit einem grafischen Programm weiter. Frank bewirbt schon lange sein Baby Geany. Das ist ein Gtk-basierter Editor. Ich kenne einige Leute, die den gern nutzen. Frank hat für Geany ein LaTeX-Plugin geschrieben. Daher kann der Editor bequem mit LaTeX umgehen.

Nach dem ersten Öffnen des Programms sieht man die Menüleiste und drei Flächen, Symbole, Statusfenster und die Eingabefläche für den Text. Das LaTeX-Plugin arbeitet nicht kontextbezogen, d.h. es ist entweder immer an oder immer aus. Um es zu aktivieren, klickt man auf Werkzeuge -> Plugin Manager (Wieso fehlt hier eigentlich der Trennstrich?) und aktiviert das Feld LaTeX. Damit erscheint im Menü Werkzeuge ein neuer Eintrag LaTeX. Fortan steht das Plugin zur Verfügung.

Beim Öffnen einer leeren Datei passiert zunächst nichts. Startet man beispielsweise mit der Eingabe von \documentclass, so bietet Geany nach den ersten drei Zeichen eine Vervollständigung an. Bei mehreren Optionen kann der Nutzer mit der Cursor- oder Maustaste das Gewünschte wählen. Schön wäre, wenn zusätzlich zum Namen des Befehls geschweifte Klammern eingebaut werden würden. Weiterhin würde ich mir bei Befehlen wie \documentclass oder \usepackage eine Auswahlliste wünschen. Das vereinfacht die Eingabe und vermeidet Fehler.

Eine bequemere Variante ist der LaTeX-Assistent. Er ist über Werkzeuge -> LaTeX -> LaTeX-Assistent zu erreichen. Über ein grafisches Menü kann der Nutzer wählen, welche Klasse, Zeichensatz etc. er benutzen will. Bei der Dokumentklasse bleibt im Menü unklar, welche Klassen (KOMA-Script, Beamer etc.) verwendet werden. Weiterhin gibt es genau eine Brief-, Artikelklasse usw. Während bei der Auswahl von Buch, Artikel und Bericht die KOMA-Script-Klassen benutzt werden, wird bei der Auswahl von Brief die Klasse letter eingebunden. Ich würde mir entweder mehr Auswahlmöglichkeiten oder eine bessere Bezeichnung im Menü wünschen. Die Auswahl des Zeichensatzes birgt einen Bug. Wählt der Nutzer Sonstiges als Zeichensatz (Was soll das sein?), so ergibt sich im Dokument die Ausgabe \usepackage[% \title{}, d.h. hier fehlt eine schließende Klammer und LaTeX wird beim Übersetzen auf die Nase fallen. Das Menüfeld Schriftgröße bietet zum einen eine Vorauswahl, lässt sich aber auch frei beschreiben. Der Grund wird mir nicht so recht klar. Schließlich sind als Papiergröße nur A4, A5 und A6 gelistet. Gerade die gängigere Letter-Größe fehlt.

Für den regelmäßigen Schreiber von LaTeX-Texten empfiehlt sich ein Template. Diese Datei sollte im Verzeichnis ~/.config/geany/templates/files liegen und die Dateiendung .tex besitzen. In dem Falle kann die Vorlage über Datei -> Neu (aus Vorlage) gewählt werden.

Schließlich kann Geany bestehende Dateien öffnen. ;-) Dabei liest der Editor die Datei einmal komplett durch und versucht, Informationen zu extrahieren. Diese finden sich in der linken Fläche Symbole. Dort sind Kommandos, Abschnittsüberschriften, Labels etc. gelistet. Ich finde, gerade die Auflistung der Abschnittsüberschriften hinterlässt mehr Verwirrung als Klarheit. Denn zum einen sind diese alphabetisch geordnet und dann auch getrennt nach Überschriftsebenen. Mir wäre es lieber, wenn sie nach dem Vorkommen im Text geordnet wären. Die Liste der Umgebungen ist für mich ebenfalls ohne Nutzwert, denn diese ist wieder alphabetisch geordnet und verzeichnet nur den Namen der Umgebung (itemize, figure, table etc.).

Nun kommt der große Moment, wo wir Text eingeben können. Doch schon die Eingabe einer Überschrift erscheint schwierig. Ich fand keine Hilfe bei der Eingabe, außer der bereits oben erwähnten Auswahlliste bei der Eingabe von drei Buchstaben. Doch gerade auf einer deutschen Tastatur führt die häufige Eingabe des Backslash bei mir zu Schmerzen in der Hand. Daher versuche ich das zu umgehen und Geany ist dann direkt körperlich anstrengend. Umgebungen können mittels des Menüs eingegeben werden. Meines Wissens gibt es hierfür keine standardmäßige Tastaturkombination. Wenn man sich eine anlegt, wird die Arbeit zumindest ein wenig erleichtert. Jedoch wäre es sehr wünschenswert, wenn bei der Auswahl einer Liste gleich ein erstes \item eingefügt würde und bei der table-Umgebung könnten ähnlich zu AUCTeX gleich diverse Optionen abgefragt werden.

Beim Mathesatz sieht die Lage nicht viel besser aus. Im wesentlichen muss jedes Zeichen per Hand eingegeben werden. Das ist eine Menge Tipparbeit und recht umständlich. Gerade für Anfänger kann ich daher Geany nicht empfehlen. Denn ich vermute, die werden schnell gefrustet sein.

Alles in allem ist Geany für mich der erste Editor, den ich im wesentlichen für nicht benutzbar halte (wohlgemerkt für meine Zwecke!). Außer wenigen kleinen Änderungen in einer Datei möchte ich keine größeren Änderungen an einer LaTeX-Datei vornehmen müssen. Denn das fühlt sich umständlich an und wird in meinem Fall mit der Zeit schmerzvoll.

Syntaxdiagramme mit TikZ

Heute wollte ich ein Syntaxdiagramm ähnlich zu der Pythonvariante unten in LaTeX setzen. Zum Zeichnen nutze ich meist TikZ.

Syntaxdiagramm Python if-then-else

Für das Syntaxdiagramm ist die chains-Bibliothek recht nützlich. Jedoch wurden alle meine Versuche mit diversen Fehlermeldungen quittiert. Selbst die Beispiele aus der Dokumentation liefen nicht durch. Entweder es erschien die Meldung Undefined control sequence \chainin. oder Package PGF Math Error: Unknown function `of’.. Nach einigem Googeln musste ich nun feststellen, dass TikZ zwei weitere Bibliotheken braucht. Wenn die eingebunden sind, läuft alles problemlos durch:

\usetikzlibrary{chains}
\usetikzlibrary{positioning}
\usetikzlibrary{scopes}

Update: Das Original der Grafik stammt wohl von Ludger Humbert. Der Quellcode steht unter CC BY-NC-SA.

Die vim-LaTeXSuite

Die LaTeX-Suite für den Editor vim war mein Einstieg in die LaTeX-Welt unter GNU/Linux. Denn ich nutz(t)e vim und da lag es nahe, den für LaTeX-Dokumente zu verwenden. Jedoch fühlte sich die Bearbeitung der Texte immer irgendwie umständlich an. Daher ging ich damals schnell auf die Suche nach Alternativen. Im folgenden will ich euch die Grundprinzipien mal näherbringen.

Wie AUCTeX sollte auch die LaTeX-Suite ein Teil des Paketmanagements sein. Im Idealfalle lässt es sich direkt nach der Installation nutzen. Bei Debian, Ubuntu und den abgeleiteten Distributionen ist eventuell Handarbeit nötig. Denn diese aktivieren das Paket nicht sofort. Der Nutzer muss auf der Kommandozeile den Befehl vim-addons install latex-suite (oder als Root vim-addons -w install latex-suite) eingeben. Damit werden diverse Symlinks in das .vim-Verzeichnis gelegt. Wer es lieber manuell hat, kann den Anweisungen auf der Download-Seite folgen. Im wesentlichen ist da nur das Paket herunterzuladen, zu entpacken und schließlich müssen die Dateien an die richtige Stelle kopiert werden.

Die LaTeX-Suite sollte nun (La)Tex-Dateien beim Öffnen erkennen. Das ist jedoch nicht immer der Fall. Die wichtigste Einstellung ist dabei filetype plugin on. Sie sollte entweder in der globalen oder zumindest in der lokalen vimrc gesetzt sein. Damit werden dann die Dateien mit den üblichen Endungen korrekt identifiziert und die LaTeX-Suite steht zur Verfügung. Die Autoren der Software empfehlen weiterhin folgende Einstellungen zu setzen.

set grepprg=grep\ -nH\ $*
filetype indent on
let g:tex_flavor=’latex’

Die erste Zeile benutzt das Programm grep mit Optionen, die den Dateinamen mit anzeigen. Diese Angabe benötigt LaTeX-Suite für die Verarbeitung bestimmter Informationen. Die zweite Zeile bringt automatische Einrückung des Quellcodes und erhöht so die Lesbarkeit des Codes. Ab der Version 7 von vim werden Dateien mit der Endung .tex als Plain-TeX behandelt und die LaTeX-Suite steht nicht zur Verfügung. Meist wird diese Endung auch für LaTeX-Dateien verwendet (Wer es besser machen will, nutzt .ltx.). Daher empfiehlt sich diese Einstellung für alle, die die Endung .tex für die LaTeX-Dateien nutzen.

Beim Öffnen einer leeren Datei passiert zunächst nichts. Wenn ihr die grafische Version des Vim benutzt, dann seht ihr drei neue Menüeinträge. Am einfachsten ist es, nach meiner Auffassung, mit i in den Eingabemodus zu wechseln und dort EDO einzugeben. Dann erscheint das Grundgerüst einer LaTeX-Datei versehen mit Markern der Art: <+..+>. Diese könnt ihr mit der Tastenkombination Strg+j anspringen und in die entsprechenden Felder Werte eintragen. Gerade bei der Dokumentklasse wäre es wünschenswert, wenn die Software eine Auswahlliste präsentieren würde bzw. wenn es eine Art Vervollständigung gäbe. Denn manuelle Eingabe ist eine Fehlerquelle. Im nächsten Schritt will der Nutzer vermutlich diverse Pakete einbinden. Dazu reicht es, auf einer leere Zeile den Paketnamen gefolgt von der Taste F5 einzugeben. LaTeX-Suite macht daraus automatisch die korrekte Zeile. Bei grafischen Vim könnt ihr auch das Menü verwenden. Ähnlich wie bei AUCTeX muss der Cursor zum Einfügen eines neuen Paketes an der richtigen Stelle stehen.

Wie der jed, kann auch die LaTeX-Suite gut mit Templates umgehen. Legt dazu einfach die entsprechende Datei in das templates-Verzeichnis. Mit dem Befehl :TTemplate name lässt sich das gewünschte Template einbinden.

Schließlich werdet ihr sicher bereits bestehende Dokumente öffnen. Hier liest die Software die Datei ein und versucht, diverse Informationen über eingebundene Pakete, selbst definierte Kommandos etc. zu extrahieren. Die Informationen stehen dann im Dokument in Form von Vervollständigung zur Verfügung.

Nachdem das Dokument geöffnet ist und der Dokumentkopf steht, kann der eigentliche Text bearbeitet werden. Die LaTeX-Suite bietet diverse dreibuchstabige Abkürzungen zum Einfügen von Befehlen oder Umgebungen. Oben sahen wir bereits EDO für die Dokumentklasse. Der erste Buchstabe zeigt an, ob ein Environment oder eine Section verwendet wird. Die weiteren beiden Buchstaben sind dann eine typische Abkürzung. So steht SSE für section, SPA für part, EIT für itemize. Standardmäßig setzen die Entwickler beim Mathesatz auf displaymath, eqnarray und auch equation. Laut l2tabu ergibt das falsche Abstände und sollte daher vermieden werden. Will man daher eher gather oder align verwenden, ist noch ein wenig Konfigurationsarbeit vonnöten. Die einfachste Möglichkeit, eine der obigen Umgebungen zu nutzen, wäre gather*+F5 einzugeben. Die Software setzt automatisch die begin- und end-Tags. Das artet schnell in vie Tippaufwand aus. Daher sollte es ebenso einen dreibuchstabigen Code geben. Dazu könnt ihr beispielsweise :call IMAP (’EGA’,“\\begin{gather*}\<CR><++>\<CR>\\end{gather*}<++>”,’tex’) eingeben. Dann ergibt die Eingabe von EGA folgende Ausgabe (Der Cursor wird an die korrekte Stelle platziert.):

\begin{gather*}

\end{gather*}<++>

Bei jedem Neustart des Vim müsste die Anweisung jedoch erneut eingegeben werden. Daher empfiehlt es sich die Einstellung permanent zu setzen:

augroup MyIMAPs
  au!
  au VimEnter * call IMAP (’EGA’,“\\begin{gather*}\<CR><++>\<CR>\\end{gather*}<++>”,’tex’)
augroup END

Nachdem diese Schwierigkeiten überwunden sind, bleibt der Mathesatz eine große Stolperfalle. So existieren zwar für griechische Buchstaben Abkürzungen (Beispiel: `s für σ). Aber standardmäßig gibt es nichts für Integrale, Summen, Sinus/Kosinus etc. Das heißt hier muss der Nutzer anfangs viel Aufwand in eine vernünftige Konfiguration stecken. Ich fände es wesentlich besser, wenn es für oft benutzte Mathbefehle vorkonfigurierte Einstellungen gäbe (oder mich jemand auf diese Einstellungen hinweist).

Der oben beschriebene Aufwand war für mich eines der Hauptgründe, auf LaTeX-Suite als permanenten Editor zu verzichten. Weiterhin fühlt sich die Bearbeitung von Texten irgendwie umständlicher an. Zudem gibt es einiges, was laut Dokumentation problemlos geht und bei einem Test mit Standardeinstellungen eben nicht funktioniert. Dazu gehört:

  • Einfügen von Paketen mit F5: Wenn in einer leeren Zeile im Dokumentkopf die Taste F5 gedrückt wird, soll man einfach ein Paket einbauen können. Bei mir resultiert das jedes Mal in <++>]{PAKETNAME}``usepackage[X anstatt \usepackage{PAKETNAME}.
  • LaTeX-Suite rät laut Dokumentation passende Standardwerte für Anführungszeichen. Bei mir wird jedoch immer die Kombination ``’’ eingefügt.
  • Je nach Umgebung sollen verschiedene Auslassungszeichen bei der Eingabe von ... verwendet werden. Bei mir kommt immer \dots.

Wahrscheinlich existiert da draußen für jedes Problem eine Lösung. Aber im Allgemeinen habe ich keine Lust, beim Mitschreiben einer Vorlesung von solche einem Bug überrascht zu werden und mich minutenlang mit der Behebung aufzuhalten. Daher habe ich damals gegen die Software entschieden und auch beim Testen für den Blogbeitrag blieb mein Eindruck von damals weitgehend bestätigt.

AUCTeX mit GNU/Emacs

Preview
  eines LaTeX-Dokuments im Emacs

AUCTeX ist eine weitere Hilfe für die Berabeitung von LaTeX-Dokumenten. Die Software selbst ist kein Editor, sondern eine Art Erweiterung (Modus) für den GNU/Emacs oder XEmacs. Ich nutze den GNU/Emacs und werde daher im weiteren auch nur auf diesen eingehen.

Unter GNU/Linux ist der Modus meist in der Paketverwaltung der Distribution enthalten. Sucht dort einfach nach dem Wort auctex. Wahrscheinlich werdet ihr schnell fündig und könnt das Paket installieren. Wer es nicht findet oder lieber Software aus den Quellen baut, kann sich diese herunterladen und mit dem üblichen Dreisatz (./configure && make && make install) an den Start bringen.

Mit Microsoft Windows kenne ich mich nicht so gut aus. Die Webseite von AUCTeX hat jedoch eine gute Anleitung zur Installation. Als ich AUCTeX das letzte Mal unter Windows installierte, ging das ohne Probleme.

Nachdem AUCTeX seinen Weg auf euer System gefunden hat, muss der Emacs eventuell wissen, dass er den Modus bei LaTeX-Dokumenten aktivieren soll. Dazu muss die Zeile (load “auctex.el” nil t t) in die .emacs eingetragen werden. Der Schritt ist aber nicht in jedem Fall nötig. Diverse Distributionen haben globale Einstellungen, die den Schritt bereits vornehmen.

Des Weiteren ist es sehr nützlich, wenn AUCTeX das Dokument beim Öffnen scannt, um selbst definierte Befehle, eingebundene Pakete etc. zu finden. Hierfür müssen die unten stehenden Zeilen ihren Weg in die Konfigurationsdatei finden:

(setq TeX-auto-save t)
(setq TeX-parse-self t)

Ich schreibe naturgemäß viele mathematische Texte. Daher möchte ich den Mathemodus in AUCTeX aktiv haben und der RefTeX-Modus zum Verwalten von Referenzen soll aktiv sein. Daher habe ich meine .emacs um die folgenden Zeilen ergänzt.

(add-hook ‘LaTeX-mode-hook ‘LaTeX-math-mode)
(add-hook ‘LaTeX-mode-hook ‘turn-on-reftex)

AUCTeX behandelt Dateien mit den üblichen Endungen (.tex, .ltx, .sty etc.) als LaTeX-Dateien. Hin und wieder habe ich es mit der Endung .latex zu tun. Damit AUCTeX auch hier seine Stärken ausspielen kann, muss ich eine Zeile in der Konfiguration ergänzen.

(add-to-list ‘auto-mode-alist ‘(“\\.latex” . tex-mode))

Nach diesen Einstellungen könnt ihr mit der Bearbeitung der Texte loslegen. Einige finden es unter Umständen schöner, wenn bestimmte Schlüsselworte bunt sind (Syntax Highlighting) oder das der Text nach einer bestimmten Anzahl Zeichen umbrochen wird. Dies lässt sich in den allgemeinen Einstellungen des Editors festsetzen.

Wenn ihr eine leere Datei öffnet, bleibt diese zunächst leer. Mit der Tastenkombination Strg+c Strg+e öffnet sich im Minibuffer das Menü zum Einfügen einer neuen Umgebung. AUCTeX erkennt, dass das Dokument leer ist und bietet automatisch die document-Umgebung zum Einfügen an. Wenn das bestätigt ist, müsst ihr eine Dokumentklasse und eventuell Optionen angeben. Dann steht der Grundrahmen des Dokuments. Wahrscheinlich willst du nun weitere Pakete einfügen. Hierzu bewegst du den Cursor an die korrekte Stelle und kannst dann mittels Strg+c RET usepackage RET foopaket RET das foopaket einbauen. In der Regel reicht die Eingabe von usep+TAB und Paketnamen vervollständigt AUCTeX ebenfalls. Der jjm ist hier jedoch wesentlich besser. Dort genügt die Tastenkombination Strg+c p, um ein Paket von einer beliebigen Stelle im Dokument einzubauen. Weiterhin ergänzt der jjm automatisch fehlende Pakete. Wenn du einen Befehl nutzt, der zu einem bisher nicht eingebundenen Paket gehört, so fügt jjm automatisch das Paket ein. Einen derartigen Automatismus würde ich mir für AUCTeX ebenso wünschen.

Die Bearbeitung des Textes ist recht einfach. Überschriften können mittels Strg+c Strg+s sowie dem Namen der Überschriften (chapter, section etc.) eingefügt werden. Bei jeder neuen Überschrift schlägt AUCTeX das Level der zuletzt benutzten vor. Dies vereinfacht unter Umständen die Eingabe. Jedoch ist jjm wieder einen Schritt weiter. Wie ich schrieb, dient dort beispielsweise die Kombination Strg+c s s zum Einfügen einer neuen section. Das heißt, nach dem initialen Aufwand, die Kürzel für die Abschnittsebene zu lernen, ist eine Überschrift schneller gesetzt. Der Vorteil bei AUCTeX liegt wiederum beim autoamtischen Setzen eines Labels. Bei jeder Überschrift schlägt die Software vor, ein Label zu vergeben. Ich benötige jedoch nur recht selten einen Verweis auf bestimmte Kapitel. Daher stellt das für mich keinen besonderen Vorteil dar.

Bereits oben beschrieb ich, wie eine Umgebung einzufügen ist (Strg+c Strg+e). Für Befehle ist Strg-c RET nützlich. Im Minibuffer wird der Name eingegeben und eventuelle Parameter abgefragt. Eine weitere Möglichkeit wäre, den Backslash sowie einen Teil des Befehlsnamen einzugeben und mit Meta+TAB zu vervollständigen. Dabei fehlen die geschweiften Klammer und eventuelle Parameter muss der Nutzer selbst eingeben. Insofern finde ich die erste Variante angenehmer. Natürlich steht zur Bearbeitung des Textes die gesamte Palette an Emacs-Features zur Verfügung.

Eine der großen Stärken von AUCTeX bzw. korrekter preview-latex liegt in einer Art Dokumentvorschau. Das Bild oben zeigt einen Ausschnitt des GNU/Emacs mit aktiviertem AUCTeX und einer Vorschau. Die Vorschau zeigt dabei Überschriften, Mathetext sowie einige andere Onjekte an. Gerade bei mathematischen Texten ist die Vorschau ganz nützlich. Denn größere Formeln werden im Mathesatz schnell unübersichtlich. Mit preview-latex behält jeder den Überblick und kann eventuelle Fehler schnell erkennen.

Insgesamt ist AUCTeX mit preview-latex ein guter Modus zur Bearbeitung von LaTeX-Dateien. Gerade für Nutzer, die neu beginnen, ist er sicher eine große Hilfe.

jed mit JörgsLaTeXMode

Der erste Editor in der Reihe soll jed sein. Er ist in etwa der kleine Bruder des Emacs. Wobei jed ein Editor geblieben ist und nicht das Betriebssystem mit implementiert. :-)

Jörg Sommer hat für den Editor einen LaTeX-Modus geschrieben. Dieser vereinfacht gerade beim Mathesatz vieles. Daher setze ich jed überwiegend beim Editieren von mathematischen Texten ein.

Das Programm jed sollte in den üblichen Linux-Distriutionen enthalten sein. Ansonsten lässt es sich auf gewohnte Weise herunterladen und kompilieren. Daneben muss der LaTeX-Mode aus dem git geclonet werden. Schließlich benötigt man noch x-keydefs.sl. Nun muss dem jed der Modus bekannt gemacht werden. Dazu ist die Zeile ()=evalfile(“/pfad/zu/latexmode/doc/latex-jed.rc”$); in der jed.rc zu ergänzen. Danach kann es losgehen.

Wenn eine entsprechende Dateiendung angegeben wurde, lädt der Editor den LaTeX-Modus. Beim Öffnen einer neuen Datei ist noch nichts im Programm zu sehen. Der Nutzer kann entweder per Hand \documentclass etc. eingeben oder ein Tastenkürzel verwenden. Mittels Strg-c d wird ein Befehl eingegeben. Jedoch scheint der Editor \documentclass nicht zu kennen. Jedenfalls erfolgt keine Vervollständigung. Wie bei AUCTeX könnte man auf die Idee kommen, die document-Umgebung einzubauen und der Editor fragt in seiner unendlichen Intelligenz nach der Dokumentklasse. Jedoch funktioniert dies ebenfalls nicht. Denn ohne den Eintrag der Dokumentklasse verweigert jed die Vervollständigung der document-Umgebung. Eine letzte Startmöglichkeit ergibt sich über Templates. Das sind Formatvorlagen, die als Datei abgelegt werden. jed kann diese einlesen. Wer immer wieder Dokumente mit einer bestimmten Anfangsstruktur benötigt, wird hier sicher glücklich werden. Über den Menüpunkt Mode --> Templates werden diese eingefügt und die Dateien selbst liegen im Unterverzeichnis latex-templ der jjm-Installation.

Wenn ihr eine bestehende Datei öffnet, versucht der Modus anhand der Dateiendung zu erkennen, ob es sich um eine LaTeX-Datei handelt. Standardmäßig sind das die Endungen tex, ltx, sty und cls.

Nachdem nun eine LaTeX-Datei mit Inhalten vorliegt, geht die eigentliche Arbeit los. Überschriften werden mit dem Tastenkürzel Strg+c s sowie einem weiteren für den Grad (section, chapter etc.) eingefügt. Der Text kann nun wie gewohnt bearbeitet werden. Die Tastenkürzel orientieren sich dabei am Emacs.

Die große Stärke des jjm liegt meiner Meinung nach beim Bearbeiten von mathematischen Texten. Denn hier erleichtert mir der Modus die Schreibarbeit enorm. Ein Beispiel gefällig? Nehmen wir an, du willst folgenden Ausdruck schreiben:

(a_{1}+a_{2}+...+a_{n})=\sum_{i=1}^{n} a_i

Wie macht man das im jed? $(a_1+a_2+...n)=Strg-cnsi=1^na_i$, d.h. gegenüber dem obigen Beispiel habe ich mehr als zehn Zeichen Tipperei gespart. Noch besser wird es, wenn ich das Summensymbol nochmal benötige. Dann tippe ich Strg-cns_ und erhalte eine automatische Vervollständigung zu den zuletzt eingegebenen Indexwerten. Gerade in der Mathematik wiederholen sich bei Beweisen die Indizes oft. Daher ist das recht nützlich. Der Modus fügt weiterhin nach Befehlen wie \sin, \lim etc. ein Leerzeichen ein, falls ein Buchstabe folgt. Das vermeidet Fehler.

Schon selbstverständlich ist, dass die griechischen Buchstaben sowie oft benutzte Befehle auf Tastenkombinationen liegen und so sehr gut zugänglich sind.

Alles in allem ist der jed mit JörgsLaTeXMode für mich perfekt zum Editieren (mathematischer) Texte. Unter allen bisher verwendeten Programmen ist das eindeutig mein Favorit und ich kann Jörg Sommer nur danken, dass er diesen Modus erweitert hat.

Vorstellung diverser LaTeX-Editoren

Durch den Vortrag zu LaTeX und die damit aufgetretenen Fragen kam ich auf die Idee, mir mal einige Editoren für LaTeX anzuschauen. In den folgenden Beiträgen will ich euch daher mal meine Erfahrungen mit den verschiedenen Programmen schildern und darstellen, wo aus meiner Sicht die Stärken und Schwächen der Einzelnen liegen. Diese Schilderung ist natürlich subjektiv. Denn im Laufe der Zeit habe ich mir eine bestimmte Benutzung angelernt und werde die Programme daher aus dieser Sichtweise beurteilen.

In der Vergangenheit nutzte ich eine Vielzahl von Programmen, um LaTeX-Quelltexte zu erstellen. Angefangen hat es mit dem Standard-Editor von Microsoft Windows. Danach probierte ich WinEdt aus. Durch den Wechsel zu GNU/Linux kam ich dann mit vim, jed und dem GNU Emacs (mit dem XEmacs konnte ich mich nie anfreunden) in Verbindung. Alle diese Programme haben einen Modus für LaTeX-Dateien und kommen in die nähere Betrachtung. Weiterhin bewirbt Frank sein Baby namens Geany. Das Programm schaute ich mir also ebenfalls genauer an. Weitere Programme, wie beispielsweise Kile oder TeXmaker, kamen bisher noch nicht unter meine Finger. Gibt es unter meinen Lesern Nutzer dieser oder anderer Programme? Wie sind eure Erfahrungen damit?

Worauf kommt es mir nun an? In den meisten Fällen öffne ich ein bestehendes Dokument, um dort weiterzuarbeiten oder Verbesserungen vorzunehmen. Dabei sind viele Pakete eingebunden bzw. eigene Befehle und Umgebungen definiert. Innerhalb des Editors wie auch bei einer Shell ist die Vervollständigung eine wichtige Erleichterung. Deshalb sollte der Editor meine eigenen Erweiterungen und auch die der eingebundenen Pakete kennen.

Weiterhin sollte er Wörter expandieren können. Das heißt, ich will in einem Text nicht jedes Mal das Wort Gruppenhomomorphismus tippen. Stattdessen gebe ich die ersten Zeichen des Wortes ein und nach einer Tastenkombination wird das Wort ergänzt.

Wenn wir schon bei Vervollständigung sind, sollte der LaTeX-Editor möglichst die installierten LaTeX-Paket kennen und mir diese bei der Eingabe von \usepackage anbieten. Noch besser wäre es, wenn dem Editor Optionen zu einzelnen Paketen bekannt sind. Aber das ist nicht immer (einfach) möglich.

Beim Öffnen eines Dokumentes gehe ich davon aus, dass der Editor die definierten \labels erkennt und ich diese dann referenzieren kann, ohne mir selbst die Namen zu merken.

Wahrscheinlich gibt es noch weitere Merkmale, auf die ich implizit Wert lege. Sollten mir weitere einfallen, werde ich die hier ergänzen. Editoren müssen sich daran messen lassen. Ich werde in den Beiträgen immer etwas dazu schreibe.

Nun hätte ich gern von euch gehört, welche Editoren ihr gern nutzt, worauf ihr Wert legt etc. Bitte lasst euch bei den Kommentaren aus. ;-)

cronjob