Diese Seiten sind nicht mehr lange online! Relaunch!

#:~/home/wiss/latex/

LaTeX mit GNU Emacs: ein starkes Gespann

Allgemeines

Um LaTeX sinnvoll einsetzen und damit möglichst ökonomisch arbeiten zu können, sollte ein leistungsfähiger Editor verwendet werden. GNU Emacs, the GNU incarnation of the advanced, self-documenting, customizable, extensible real-time display editor Emacs ist ein erstaunliches Stück freier Software und ein wahres Urgestein: seine Entstehung fällt in den Gründungszeitraum des GNU-Projektes von Richard M. Stallman.
Gleich vorweg: Emacs ist ein Monster. Er hat so viele Features, dass ich fürchte, bis an mein Lebensende nicht alle entdeckt zu haben. Gerade während ich diesen Text schreibe und dafür hin und wieder in die Doku luge, sehe ich neue Sachen, die ich schon früher gut hätte brauchen können (zum Beispiel weiß ich seit gerade eben, dass Alt-Q einen kompletten Absatz je nach Modus strukturgerecht eingerückt und aufgefüllt formatiert). In der Tat kann der GNU Emacs mittlerweile alles mögliche: Dateien managen, Newsgroups abonnieren, im Netz browsen, Tetris spielen oder auch einfach nur Text editieren. Es existieren Versionen für Unix/Linux, Mac, DOS, Windows und andere. Diese Hinweise beziehen sich auf meine eigenen Erfahrungen mit der GNU/Linux-Version des GNU Emacs Version 21 (2002).
Parallel wird der XEmacs entwickelt, der allerdings auch aufgrund diverser Differenzen zwischen den Entwicklern eigenständig bleibt. Nach kurzem Testen bin ich wieder auf den1 etwas übersichtlicheren GNU Emacs umgeschwenkt, zumal mit der 21er-Release eine Reihe benutzerfreundlicher Elemente und endlich auch eine grafische Menüintegration eingebunden wurde.

Diese Seite soll nur Hinweise darauf geben, wo relevante Information zu finden ist. Das Lesen der jeweiligen Dokumentation kann dem geneigten Leser leider nicht abgenommen werden. Dafür sind die Pakete aber hervorragend dokumentiert, einerseits im Web, andererseits bereits bei der Software beiliegend.
GNU Emacs ist Freie Software, lesenswert ist das mitgelieferte umfangreiche Manual. Ein Beispiel für die Unterhaltsamkeit, aus den Antinews:

Variable-size characters are not supported in Emacs 20. You cannot use fonts which contain oversized characters, and using italic fonts can result in illegible display. However, text which uses variable-size fonts is unreadable anyway. With all characters in a frame laid out on a regular grid, each character having the same height and width, text is much easier to read.

Der GNU Emacs bringt hervorragende Unterstützung mit, die den Autoren bei der Erstellung eines auch umfangreichen Textes mit LaTeX unterstützen. Neben einem eingebauten Basis-Modus sind hier vor allem die Zusatzpakete AucTeX und RefTeX zu nennen.

AucTeX

AucTeX ist eine komplette und sehr ausgereifte Arbeitsumgebung für den Emacs. Bei konsequenter Anwendung können die Eingabefehler minimiert werden und effizienter gearbeitet werden.
AucTeX bietet erweiterte Funktionalitäten, so ist es etwa möglich, einen LaTeX-Lauf direkt über das Menü durchzuführen, und bei etwaigen Fehlermeldungen direkt dorthin im Dokument zu springen und es gleich auszubessern. Gleichermaßen werden Dokumente automatisch eingerückt, es existieren diverse Outline-Modi. LaTeX-Syntax-Checks können per Menü ausgeführt werden, es existiert eine Fülle von neuen Macros, die LaTeX-spezifische Befehle und Formatierungen ausführen.

Beispiele

AucTeX-Home: http://mirrors.sunsite.dk/auctex/www/auctex/
AucTeX-Doku: http://mirrors.sunsite.dk/auctex/www/auctex/doc/

RefTeX

Mit RefTeX erhält der Emacs eine ausgedehnte Funktionalität zur stärkeren Autorenunterstützung und strikten Einhaltung der internen Dokumentstruktur. RefTeX bietet Unterstützung für Labels, Referenzen, Zitate und die Indexerstellung. RefTeX automatisiert die einzelnen Aufgaben, die ansonsten dem Autoren unterliegen, umfassend. So können mit wenigen Tastenkürzeln bzw. Menüpunkte Referenzierungspunkte in Kürze aufgefunden und eingefügt werden. Auch gibt es einen Modus, mit dem auf einen Blick eine strukturierte Darstellung des Dokumentes gewechselt werden kann. Dies ist vor allem bei langen Texten wie etwa Diplomarbeiten sinnvoll.

Beispiele

Dokumentation

RefTeX-Home: http://zon.astro.uva.nl/~dominik/Tools/reftex/
RefTeX in a Nutshell: http://zon.astro.uva.nl/~dominik/Tools/reftex/reftex-nutshell.html

BibTeX-Unterstützung

Für die Erstellung von BibTeX-Dateien bietet der Emacs eine hervorragende Unterstützung. Das oben genannte Paket RefTeX hält diverse Makros bereit, die das Erstellen und Editieren von BibTeX-Datenbanken sehr vereinfacht. Eine automatische Syntaxprüfung ist implementiert; so können Eingabefehler, die bei einem späteren BibTeX-Lauf durchaus nicht immer ganz einfach zu lokalisieren sind (wie etwa fehlende Maskierung von Umlauten), sofort vermieden werden.
Eine automatische Suche oder Sortierung der Einträge geschieht ebenso schnell wie die Auswahl verschiedener Eintragstypen aus dem Menü oder durch Shortcuts. So werden gleichzeitig auch die benötigten Felder eingefügt, und die nicht-erlaubten weggelassen. Durch Makros kann schnell zwischen den Einträgen navigiert werden, es ist auch möglich, bereits geschriebene Einträge auf Knopfdruck aus dem vorherigen Datensatz in das richtige Feld zu übernehmen. Dies ist zum Beispiel sinnvoll, wenn aus einer Zeitschrift mehrere Artikel aufgenommen werden, um den Titel nicht mehrmals schreiben zu müssen oder die Maus um Copy & Paste zu bemühen. Es lohnt sich, diese Kürzel sofort zu verinnerlichen, damit ist eine optimale, schnelle Arbeit möglich, die nicht mit technischen Details und Unzulänglichkeiten ablenkt. Es ist natürlich möglich, gleich mehrere BibTeX-Datenbanken von mehreren Dokumenten aus einzubeziehen.

Erstellung eines Registers (Index) mit Emacs

Die Registererstellung ist über eine Schnittstelle zu MakeIndex sehr konsequent umgesetzt. Ich habe bisher nur mit MakeIndex gearbeitet und kann zu Xindy etc. leider nichts beitragen. Ein Register ist nicht ohne Schmerzen zu erstellen -- zumindest, wenn es aussagekräftig sein soll. Mein eigenes ist bei weitem nicht perfekt geworden, ein gutes Register erfordert also ebenso gute Planung. Automatische Stichwortgeneratoren sind ohne anschließende manuelle Überprüfung nutzlos, die semantischen Zusammenhänge sind bei weitem komplexer als es anfangs scheinen mag.
RefTeX bietet ein Makro, mit dem bestimmte Begriffe oder Phrasen bereits beim Schreiben in einen Buffer zwischengespeichert werden. Dieser Buffer erhält die Endung .rip. Zwar dürfte es bei gelegentlich auftretendem Diplomarbeits-Überdruss auch mal mit Rest in Peace übersetzt werden, sonst steht es für RefTeX-Index-Phrases. Aus diesem separaten Buffer wiederum kann dann jede Phrase in den gewünschten Dateien überprüft und in einem interaktiven Menü mit einem LaTeX-Index-Befehl versehen werden. Eine Hierarchisierung der Begriffe kann vorher erfolgen. Um hier Arbeit zu sparen, unbedingt die sehr gute, knappe RefTeX-Doku lesen!
Ich habe den Modus sehr zu schätzen gelernt, und man hat es wirklich schnell drauf. Haariger ist die intellektuelle Arbeit, die unvermeidlich ist: Wie soll mit Synonymen umgegangen werden? Welches hierarchische Schema, Ober- und Unterbegriffe werden gewählt? RefTeX kann einem diese Arbeit natürlich nicht abnehmen, die letztendliche Ausführung jedoch ist besser kaum denkbar.

Achtung: Unbedingt vorher auch die MakeIndex-Doku lesen! Die Eigenheiten des Programms verlangen leider für eine korrekte deutsche Sortierung (Option -g) eine spezielle Maskierung der Umlaute, Umlaute in Index-Befehlen müssen in Sections etc. vor dem Zerbrechen geschützt werden! Ich habe Umlaute in Index-Befehlen mit > maskiert und dies in eine MakeIndex-Style-Datei geschrieben. Diese heißt dann zum Beispiel deutsch.ist, die Anweisung quote '>'.

Konfiguration

Hier ist meine eigene Emacs-Konfigurationsdatei, die ich für meine Diplomarbeit benutzt habe. Sie sorgt zum Beispiel auch dafür, dass Umlaute automatisch in die Tex-Notation ("a) umgewandelt werden (für bessere Portabilität), oder Anführungszeichen für die korrekte Form nach dem German-Paket nicht umständlich durch zwei Tasten eingegeben werden müssen ("`), sondern auf der normalen Taste liegen. Die Teile stammen aus der Dante-TeX-FAQ, die immer gute Tipps bietet.

Dante TeX-FAQ: http://www.dante.de/faq/de-tex-faq/
Lisp-Code-Seiten/Emacs-Wiki: http://www.emacswiki.org/

Daniel Zimmel 2001 - 2012 | written in GNU Emacs  | last modified 10/08/03 (12:57)