TeX
Allgemeines
TeX ist ein Textsatzsystem, das sich vor allem im Hochschulbereich großer Beliebtheit erfreut. Es ist vor allem geeignet, größere Dokumente mit buchartigem Erscheinungsbild zu setzen und wurde von dem amerikanischen Mathematik- und Informatikprofessor Donald E. Knuth zusammen mit diversen weiteren Tools zu diesem Zweck geschrieben. Unter anderem schrieb er ein Makropaket zu TeX, genannt plain TeX oder einfach plain. Wenn man heutzutage von TeX spricht, meint man zumeist plain TeX.
LaTeX entstand aus dem Wunsch vieler Autoren, den Text ihrer Dokumente nach inhaltlichen Gesichtspunkten gliedern zu können, nicht nach visuellen Gesichtspunkten. Beispiel: statt zu sagen "Diese Zeile bitte fett, mit einer Zeilenhöhe Abstand zum Folgetext, und größer" sagt man "diese Zeile als Überschrift". LaTeX ist neben plain ein weiteres Makropaket zu TeX. Es ist nicht vollständig inkompatibel zu plain, aber das Mixen von plain TeX und LaTeX kann, wenn man sich nicht sehr gut auskennt, zu seltsamsten Ergebnissen führen
Inzwischen gibt es mit ConText ein weiteres wichtiges Makropaket. ConText ist noch in ständiger Weiterentwicklung begriffen.
TeX hat eine lange Geschichte hinter sich. Es gibt eine Unzahl von Abwandlungen, Makropaketen, Paketen zu den Makropaketen, Formaten, Fonts in verschiedenen Kodierungen und Fontformaten und vieles mehr.
Daher möchte niemand dies alles heutzutage noch von Hand installieren. Das muss man aber auch nicht. Dafür gibt es Distributionen oder -- im Linux-Bereich -- Pakete.
TeX und LaTeX unter Arch-Linux
Was muss ich installieren: Pakete
Unter Arch gibt es die TeXlive-Distribution, Release 2008 fertig paketiert (Debianer und damit auch Ubuntu-User werden da wohl noch länger drauf warten müssen (schätzungsweise bis Mitte 2009, grins)). tetex, bi vor kurzem noch in [extra], gibt es nur noch im AUR. Die umfangreiche Dokumentation zu Texlive gibt es paketiert im [community]-Repo.
Ich werde aus dem folgenden Grund nicht auf tetex eingehen: Thomas Esser (daher der Name teTeX) hat mit der Version 3.0 alle weitere Pflege der Distribution eingestellt und empfiehlt die Nutzung von TeXlive. Dies ist auch die von der tug (TeX User Group) gepflegte Distribution mit Unterstützung aller gängigen Computerplattformen.
Ich kenne keine andere Linux-Distribution, die hinsichtlich TeX/LaTeX aktueller ist als Arch. Geplant ist außerdem ein Paket in community, mit dem man sich selbst PKGBUILDs generieren kann, umsich die noch aktuelleren CTAN-Sourcen installieren zu können.
Paketgruppen
Es gibt folgende Gruppen.
texlive-most(-doc)
Ein ziemlich komplettes System, in texlive-most-doc sind die Dokus dazu enthalten.
texlive-lang(-doc)
Weitere Sprachen.
texlive-all
Ein Dummy-Paket, das alles oben genannte installiert.
Will man nicht die Gruppen installieren, kann man auch einzelne Pakete nehmen. Die Liste der Pakete ist ellenlang und unter http://wiki.archlinux.org/index.php/Texlive dokumentiert.
Auf jeden Fall braucht man die Binaries (texlive-bin) und die Grundinstallation (texlive-core). Nahezu jeder wird auch texlive-latexextra und texlive-fontsextra brauchen. Was man noch so braucht, hängt dann stark vom Einsatzbereich ab.
Dokumentation
TeXlive2008 enthält eine neues, erheblich schnelleres texdoc. texdoc und texdoctk sind zwei voneinander unabhängige Programme, die beide mit dem Ziel arbeiten, die Dokumentation zu den unzähligen Paketen auf einfache Weise zugängig zu machen. Dieses Ziel versuchen sie jedoch auf völlig unterschiedliche Weise zu erreichen. Es ist also nicht so, dass texdoctk nur eine graphische Oberfläche zu texdoc ist.
texdoc
ist ein in texlua geschrieben. texlua ist ein Symlink von luatex, und das wiederum eine Erweiterung/Weiterentwicklung von pdftex. texdoc gibt man einen Suchstring mit, z.B. den Namen eines LaTeX-Paketes. texdoc such dann in den Verzeichnissen der texmf-Bäumes nach Dateien mit dem Suchstring als Namen und .dvi, .pdf, ps, .txt oder .htm(l) als Endung und ruft Programme auf, die man mit Hilfe von Umgebungsvariablen festlegen kann. Hier die Variablen (erste Spalte), ihr Sinn und Zweck (zweite Spalte) und ihre aus heutiger Sicht seltsam anmutende Vorbelegung.
TEXDOCVIEW_dvi Suche nach .dvi-Dateien Standard: xdvi
TEXDOCVIEW_pdf Suche nach .pdf-Dateien Standard: acroread
TEXDOCVIEW_html Suche nach .html-Dateien Standard: netscape
TEXDOCVIEW_ps Suche nach Postscript-Dateien Standard: ghostview
TEXDOCVIEW_txt Suche nach normalen Textdateien Standard: more
Da diese Programme heute keineswegs überall mehr installiert sind, sollte man diese Variablen irgendwo dauerhaft setzen, etwa in der /etc/profile oder in der ~/.bashrc (falls man mit der bash arbeitet).
Nachteil dieses Ansatzes: Man muss wissen oder erraten, wie die Datei mit der gewünschten Information heißt. Es ist leider nicht immer so, dass aus dem Namen des Paketes auf den namen der Dokumentation geschlossen werden kann. Zum Beispiel heißt die Dokumentation zu KomaScript scrguide.
Daher: Fragen nach der Dokumentation von LaTeX-Paketen sind oft nicht dumm.
texdoctk
ist ein unter Verwendung von perl-tk in Perl geschriebenes Skript und verfolgt einen ganz anderen Ansatz.
Zunächst müssen perl und perl-tk installiert sein.
pacman -S perl-tk
Der Aufruf von texdoctk (ohne Parameter) öffnet dann ein Fenster, in dem eine inhaltiche Gliederung der angebotenen Dokumente vorgenommen wird.
Das sieht dann etwa so aus:
Datei:2008-03-02-182901 736x318 scrot.png
Leider wird texdoctk m.W. nicht mehr gepflegt. Die dahinterliegende Doku aber schon.
Oft gestellte Fragen (FAQ)
F: Wie soll ich anfangen?
A: Um TeX und LaTeX sinnvoll einsetzen zu können, kommt man nicht umhin, Dokumentation dazu zu lesen. Anfangen kann man zum Beispiel mit der http://www.dante.de/faq/de-tex-faq/, der deutschsprachigen FAQ zu TeX und LaTeX. Dort gibt es auch einen Abschnitt zu online erhältlicher Literatur.
Leider ist in der FAQ nicht mehr alles aktuell. Gerade bei den Fonts tut sich in letzter Zeit einiges. Aktueller ist die englischsprachige FAQ http://www.tex.ac.uk/cgi-bin/texfaq2html .
F: Boah, TeXlive hat ja eine total unübersichtliche Verzeichnisstruktur!
A: TeXLive hat in der Tat eine umfangreiche Verzeichnisstruktur. Wenn man da Prinzip aber verstanden hat, dann ist es gar nicht so schlimm.
TeXlive benutzt mindestens drei "Bäume" mit derselben internen Struktur. Diese werden nacheinander durchsucht. Die Suchreihenfolge ist konfigurierbar. Hier ein Auszug aus der Hauptkonfigurationsdatei texmf.cnf ($SELFAUTODIR ist unter ArchLinux auf /opt/texlive gesetzt)
% The tree containing the runtime files closely related to the specific % program version used: TEXMFMAIN = $SELFAUTODIR/texmf % The main distribution tree: TEXMFDIST = $SELFAUTODIR/texmf-dist % A place for local additions to a "standard" texmf tree. % This tree is not used for local configuration maintained by % texconfig, it uses TEXMFCONFIG below. TEXMFLOCAL = $SELFAUTODIR/texmf-local % TEXMFSYSVAR, where texconfig-sys stores variable runtime data. TEXMFSYSVAR = $SELFAUTODIR/texmf-var % TEXMFSYSCONFIG, where texconfig-sys stores configuration data. TEXMFSYSCONFIG = $SELFAUTODIR/texmf-config % User texmf trees are allowed as follows. TEXMFHOME = $HOME/texmf % TEXMFVAR, where texconfig stores variable runtime data. TEXMFVAR = $HOME/.texmf-var % TEXMFCONFIG, where texconfig stores configuration data. TEXMFCONFIG = $HOME/.texmf-config
Zur Pflege dieser Konfigurationsdatei kann man das Skript texconfig (Benutzer) oder texconfig-sys (systemweit) verwenden.
Der TEXMFDIST Baum sollte Dateien vorbehalten bleiben, die durch die [Extra]-Pakete von TeXlive installiert werden. Für Pakete aus dem AUR sollte der TEXMF Baum vorbehalten bleiben. Dateien, die man selber vom CTAN holt, gehören in den TEXMFVAR Baum. Darüber hinaus können Benutzer einen eigenen Baum in ihrem Homeverzeichnis pflegen (TEXMFHOME).
F: Was muss ich für deutsche Texte beachten?
Folgende Sachen sollten mit \usepackage importiert werden:
\usepackage[utf8]{inputenc} \usepackage{ngerman}
Wobei utf8 nur verwendet werden sollte, wenn die Datei auch in UTF-8 kodiert ist. Ansonsten muss man die entsprechende Zeichenkodierung angeben. Wahrscheinlich wird dies latin1 oder latin9 sein.