TeX und LaTeX

Aus ThinkPad-Wiki

Einleitung

Es ist sicherlich nicht leicht, schnell und ohne Aufwand einen Einstieg in das Textsatzsystem TeX bzw. LaTeX zu finden. Es gibt dennoch viele gute Gründe, LaTeX zu verwenden:

  • Die finale Druckqualität ist hervorragend und auf professionellem Niveau.
  • Die Erstellung eines Dokuments ist sehr flexibel. Um das genaue Layout braucht man sich während der Bearbeitung kaum zu kümmern. Bei Bedarf kann man den Stil des Dokuments am Ende beliebig ändern.
  • Große und komplexe Dokumente wie Bücher mit vielen Kapiteln und Anhängen, Inhalts- und Literarturverzeichnissen etc. sind problemlos zu bewältigen. Auch für das Erstellen von Beamerpräsentationen ist es hervorragend geeignet.
  • Formeln mit verschiedensten Symbolen können leicht und flexibel generiert werden, ebenso Grafiken, Diagramme und Tabellen in höchster Qualität.
  • In manchen wissenschaftlichen Fächern (z. B. Mathematik) gehört es zum Standard. Für viele Fächer stehen Spezialpakete zur Verfügung, z. B. für Musik (Notensatz) und Linguistik.

Im folgenden sollen ein paar Tipps und Tricks genannt werden. Obwohl Tex und Latex auf allen Plattformen laufen, beschränkt sich das folgende auf Linux.

TeX Live

Das TeX-System besteht aus unzähligen Dateien und Paketen, von denen man in der Regel nur ein Grundsystem von einigen Paketen benötigt. Das derzeit verbreitetste Gesamtsystem ist sicherlich Tex Live. Leider werden bei vielen Linux-Distributionen nur sehr alte Versionen mitgeliefert. (Beim aktuellen (Sommer 2012) Ubuntu 12.04 ist es Texlive 2009, bei Fedora 17 sogar Texlive 2007.) Es gibt keinen Grund, nicht die neueste Version zu installieren. Das ist derzeit Texlive 2012.

Am einfachsten ist es, wenn man mit einer neuen Linux-Installation gleich das neueste Tex Live installiert. Wenn man schon eine ältere Version installiert hat, scheint es am sichersten, diese vorher komplett zu deinstallieren.

Fedora 18 und höher

Im Gegensatz zu F17 ist hier Texlive 2012/13 bereits in den Fedora-Paketquellen integriert und man kann die gewünschten Pakete direkt installieren. Alle Paketnamen sind nun von der Form texlive-*. Weitere aktuelle Informationen findet man im Fedora Wiki.

Ubuntu 12.04

Bei Ubuntu sieht es so aus:

 sudo add-apt-repository ppa:texlive-backports/ppa
 sudo apt-get update
 sudo apt-get install texlive

Damit wird eine "anständige Auswahl" installiert. Eine Ansicht der Pakete liefert etwa Synaptic.

Sprachen

Durch Installation der (z. B. deutschen) Sprachpakete werden die entsprechenden Trennungsmuster automatisch in die Format-Dateien kompiliert. Man kann im Prinzip beliebig viele Sprachen nebeneinander installieren. Fedora:

 # sudo yum install hyphen-de tex-hyphen-german

bzw. Ubuntu

 # sudo apt-get install texlive-lang-german hyphen-de

Editoren

Prinzipiell kann man in jedem Texteditor einen Latex-Quellcode erzeugen und diesen dann kompilieren. Es gibt aber viele spezielle Programme bzw. Erweiterungen, die mehr Komfort und Unterstützung bieten.

Emacs mit AUCTeX

Der Emacs-Editor liefert mit Auctex eine umfangreiche und komfortable Latex-Erweiterung. Die Installation des GNU Emacs wird hier vorausgesetzt. Mehr als ein

 sudo yum/apt-get install emacs

wird nicht benötigt. Die Auctex-Erweiterung installiert man mit

 sudo yum install emacs-auctex

(Fedora) bzw.

 sudo apt-get install auctex

(Ubuntu). Die Möglichkeiten von AUCTeX sind außerordentlich vielfältig und umfassend. Es beinhaltet u. a.

  • Syntax-Highlighting;
  • Menüs und Tastenkürzel für viele Kommandos;
  • Kompilation und Öffnen des Dokument-Readers direkt aus dem Emacs;
  • Synchronisation zwischen Emacs und PDF-Previewer (SyncTeX);
  • Unterstützung von Bibtex und Biber;
  • Unterstützung zum "Debuggen" von Fehlern;
  • Intelligente Unterstützung zum Arbeiten mit Labels, Inhaltsverzeichnissen, Referenzen, Zitaten und Bibliographien (Teilpaket RefTeX);
  • Die Möglichkeit, sich mathematische Formeln grafisch innerhalb des Tex-Dokuments anzeigen zu lassen (Teilpaket preview-latex).

Insbesondere der zuletzt gelistete sogenannte Preview-Style erhöht die Lesbarkeit der .tex-Datei erheblich (auch wenn das Layout deutlich vom Output abweicht).

Leider wird hierfür oft (Stand Herbst 2012) eine fehlerhafte Datei preview.el mitgeliefert (v1.284), obwohl ein Patch schon verfügbar ist. Workaround: Die Datei

 /usr/share/emacs/site-lisp/auctex/preview.el

ersetzt man durch v1.286. Bei Fedora 18 ist dieser Workaround nicht mehr nötig; das mitgelieferte preview.el funktioniert sowohl in AUCTeX 11.86 wie auch in der brandneuen Version 11.87 problemlos. (Es mag sein, dass es in Fedora 17 oder Ubuntu ab 12.04 qua Backport inzwischen (Jan. 2013) auch ohne Workaround funktioniert.)

Die Konfigurationsdatei .emacs sollte etwa folgendes (zusätzlich) enthalten:

 ;;;;Datei .emacs.el im User-Home
 ;;; Anpassungen für AucTeX
 (load "auctex.el" nil t t)
 (load "preview-latex.el" nil t t)
 (require 'tex-site)
 (setq TeX-auto-save t)
 (setq TeX-parse-self t)
 (setq-default TeX-master nil)
 (setq TeX-PDF-mode t) ;; .pdf statt .dvi per default
 ;;Zeilenumbruch
 (add-hook 'LaTeX-mode-hook 'turn-on-auto-fill)
 ;;Syntax Higlight
 (add-hook 'LaTeX-mode-hook 'turn-on-font-lock)
 ;; Mathe Modus
 (add-hook 'LaTeX-mode-hook 'LaTeX-math-mode)
 ;;; Anpassungen für RefTeX
 (require 'reftex)
 (add-hook 'LaTeX-mode-hook 'turn-on-reftex) 
 (add-hook 'latex-mode-hook 'turn-on-reftex) 
 (setq reftex-plug-into-AUCTeX t)
 (setq reftex-external-file-finders
       '(("tex" . "kpsewhich -format=.tex %f")
        ("bib" . "kpsewhich -format=.bib %f")))

Mit diesen Anpassungen sollte das System dann funktionieren. (Funktionalität verifiziert: Versionen Texlive 2012, AUCTeX 11.86, preview.el 1.286, GNU Emacs 23.3 und 24.1, 24.2 auf Ubuntu 12.04 / Mint 13, Fedora 17 und Fedora 18.)

Hier die Ansicht einer Tex-Datei, ohne Preview Screenshot auctex 1.png und mit: Screenshot auctex 2.png

Geht man mit dem Cursor in die Preview-Formel, so sieht man sie wieder im Tex-Code und kann ihn editieren.

Weitere Screenshots findet man hier.

Aufspüren von Fehlern im Dokument

Findet der (La)TeX-Kompiler Syntaxfehler im Dokument, so springt der Cursor bei Klicken auf "Next Error" im Menü oder

 C-c `

per Tastatur zum nächsten Fehler und öffnet ein weiteres Fenster mit Kommentaren zu dem Fehler. Probleme: Diese Funktion scheint sich nicht mit dem hyperref-Paket zu vertragen. Befindet sich

 \usepackage{hyperref}

in der Präambel des Dokuments und funktioniert die Fehler-Funktion nicht, so empfiehlt sich eine Auskommentierung obiger Zeile.

Synchronisation

Sehr komfortabel ist die Synchronisation zwischen Editor/Tex-Code und Viewer/Output, d. h. dass man sich im Tex-Dokument und im (PDF-) Previewer jeweils an der gleichen Stelle befindet. Dazu installiert man die Pakete

 texlive-pdfsync texlive-synctex texlive-synctex-bin

Zum Tex-Kommando fügt man in AUCTeX bei Command --> TeXing Options den Punkt "Correlate I/O" hinzu bzw. per Tastenkombination

 C-c C-t C-s

Dies bewirkt, dass (pdf)latex nun mit der Option --synctex=1 ausgeführt wird. Das folgende Bild zeigt die Aktivierung; im rechten Fenster erkennt man die Option --synctex=1 beim Kompilieren. ScreenShot auctex 3.png

Nach dem Kompilieren springt der PDF-Previewer bei "View" bzw.

 C-c C-c v RET

an die Stelle, an der sich der Cursor im Emacs befindet, und makiert diese Stelle (Vorwärtssuche). Umgekehrt, ein C-leftmouse Klick im Evince lässt den Cursor im Emacs an die entsprechende Stelle springen (Rückwärtssuche). Test-Referenz: AUCTeX 11.87, Emacs 24.2 und Evince 3.6.

Ergänzende Bemerkungen

  • Manchmal kommt man nicht darum herum, in der AUCTeX-Installation gewisse Emacs-Lisp-Dateien für seine eigenen Bedürfnisse anzupassen. Wenn möglich, sollte man solche Anpassungen in seinem Home-Verzeichnis im .emacs.el vornehmen.
  • Man achte darauf, dass AUCTeX oftmals in verschiedenen Pfaden liegt, etwa
 /usr/share/emacs/site-lisp/auctex/

aber manchmal auch in Varianten davon wie:

 /usr/share/emacs/23.3/site-lisp/auctex/

Oft befinden sich Dateien in beiden Verzeichnissen, die dann (teilweise) verlinkt sind. Also darauf achten, die "richtige" .el Datei zu editieren. Weiterhin sollte man beachten, dass meist die entsprechende .elc Datei eingelesen wird; also das Byte-Kompilen nicht vergessen.

  • Beispiel: Einstellen des Default-PDF-Previewers (analog DVI-Previewer): beim Texlive 2012 auf Ubuntu befinden sich in
 /usr/share/emacs/site-lisp/auctex/ 

die Dateien tex.el und tex.elc. In tex.el findet man die Zeile

  (output-pdf "xpdf")

Hier kann man "xpdf" etwa durch "Evince" (oder einem anderen Tool) ersetzen, wie es etwa beim Texlive 2012 auf Fedora schon der Fall ist. Man beachte auch, dass das tex.el ein symbolischer Link auf die Datei

 /usr/share/emacs/23.3/site-lisp/auctex/tex.el

ist. Die entsprechende .elc-Datei liegt aber ohne Verlinkung im selben Pfad. Sofern diese globale Änderung nicht sinnvoll ist, sollte eine lokale Änderung im .emacs.el die bessere und elegantere Wahl sein. Dazu ruft man im Emacs, der sich im auctex-mode befindet

 C-h v TeX-view-program-selection

auf, kann hier die entsprechende Variable ändern (klicken auf "You can customize this variable.") und abspeichern. Dies bewirkt in der Datei .emacs.el im Home-Verzeichnis (nach Änderung von "xpdf" auf "Evince" die zusätzlichen Zeilen

 (custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(TeX-view-program-selection 
 (quote (((output-dvi style-pstricks) "dvips and gv") 
 (output-dvi "xdvi") 
 (output-pdf "Evince") 
 (output-html "xdg-open"))))
 )

die man alternativ natürlich auch per Hand setzen kann.

  • Installiert man sich etwa in Ubuntu aus einem PPA eine neuere Emacs-Version (z. B. derzeit Emacs24 aus ppa:cassou/emacs), so muss man darauf achten, dass die Auctex-Pfade in das entsprechende Emacs-Unterverzeichnis gelegt werden, am besten durch symbolische Links.

LyX

Ein beliebtes Programm zum Erstellen von durch Latex generierten Dokumenten ist LyX. Hierbei arbeitet man nicht (unbedingt) mit dem Latex-Quellcode, sondern in einer Datei in einem eigenen .lyx-Format. Dies hat Vorteile und Nachteile.