TeX

Aus wiki.archlinux.de
Version vom 27. Februar 2013, 12:55 Uhr von Boenki (Diskussion | Beiträge) (Die Einleitung braucht keine Überschrift)

Wechseln zu: Navigation, Suche

Überarbeitung.png Dieser Artikel oder Artikelabschnitt bedarf einer stilistischen Überarbeitung laut Empfehlungen in Artikelstil.


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 fertig paketiert. tetex, bis vor kurzem noch in [extra], gibt es nur noch im AUR.

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. Dadurch kann man sich die noch aktuelleren CTAN-Sourcen installieren.

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.

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 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; welche, kann man mit Hilfe der Konfigurationsdatei texdoc.cnf beeinflussen.

Genaueres erfährt man, fals man das Paketchen texlive-texdoc-doc aus dem AUR installiert hat, mittels

texdoc texdoc

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. Immerhin versteht das texdoc aus TeXlive 2008 die regulären Ausdrücke, die auch Lua versteht.

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:

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 das 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?

Als documentclass sollte eine der Koma-Klassen benutz werden. Diese sind an deutsche Gewohnheiten angepasst.

Die Namen sind:

  • scrartcl (anstatt article)
  • scrreprt (anstatt report)
  • scrbook (anstatt book)

Einer der folgenden Einträge sollte mit in die LaTeX-Präambel d.i. alles was vor \begin{document} kommt:

Bei neue deutscher Rechtschreibung (mit Kommentaren, die kann man natürlich weglassen):

\usepackage[T1]{fontenc}     % T1 ist eine Fontkodieren mit 256 Zeichen, geeignet für westeuropäische Sprachen. 
                             % lässt man dies weg, bekommt man eine Kodierung mit 127 Zeichen, und dann trennt  
                             % TeX deutsche Texte nicht richtig
\usepackage[utf8]{inputenc}  % Erste Wahl, da Arch UTF-8 verwendet. Bekommt man ein Dokument aus einer 
                             % anderen Quelle, kann da etwas anderes stehen (latin1, ansinew), und das kann 
                             % dann durchaus richtig sein.
\usepackage[ngerman]{babel}  % Einstellungen für neue deutsche Rechtschreibung

Bei alter deutscher Rechtschreibung:

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[german]{babel}

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, ansinew oder latin9 sein. Achtung: Bei Dokumenten, die durch verschiedene Personen bearbeitet werden, die verschiedene Betriebssysteme verwenden, muss gewährleistet sein, dass alle Teildokumente gleich kodiert sind. Ist dies nicht der Fall, gibt es Fehlermeldungen. Hier kann ein Tool wie recode helfen.

 recode latin1..utf8 <dateiname> 
konvertiert von latin1 nach utf8,
 recode latin1..latex <dateiname> 
konvertiert nach LaTeX, ersetzt also zum Beispiel ä durch \"a.

F: Wie kann ich eine neue documentclass hinzufügen?

Es ist nicht schwer, neue Pakete oder Klassen zur eigenen Installation hinzuzufügen.

Zunächst sollte man sich sicher sein, ob das Paket nicht schon vorhanden ist. Dabei hilft

kpsewhich sucht auf den gleichen Wegen nach Dateien wie auch tex.

Mit
kpsewhich --help
bekommt man angezeigt, wonach man suchen könnte. Zum Beispiel:
# kpsewhich akletter.cls
/usr/share/texmf-dist/tex/latex/akletter/akletter.cls

Das -dist im Pfad deutet darauf hin, dass akletter bei der offiziellen Distribution dabei war. So wird es mit vielen Paketen und Klassen sein, denen man in Mailinglisten, LaTeX-Foren oder sonstwo begegnet. Sollte dann doch mal eines dabei sein, dass nicht in TeXlive enthalten ist: Manches gibt es im AUR:

(Die Liste ist möglicherweise unvollständig. Wer im AUR ein Paket findet, trage es doch bitte hier ein.)

Wenn man auch dort nicht fündig wird, ist [1], [2] oder einer der CTAN-Mirror erste Anlaufstelle. TeXlive speist sich daraus.

Manche Pakete sind allerdings neuer als in TeXlive oder dürfen dort aus lizenzrechtlichen Gründen nicht mit aufgenommen werden. Diese kann man sich vom CTAN als Zipfile oder dateiweise herunterladen.

Dann verteilt man die ausgepackten oder einzeln heruntergeladenen auf einen der Bäume

~/texmf                          # für einen einzelnen Benutzer 
/usr/local/share/texmf/               # local, aber systemweit 

Dabei gehören *.sty oder *.cls-Dateien unter

~/texmf/tex/latex/(neuesVerzeichnisMitPaketnamen)

bzw.

/usr/local/share/texmf/tex/latex/(neuesVerzeichnisMitPaketnamen)

Meist ist noch Doku dabei, die entsprechend unter

~/texmf/doc/(neuesVerzeichnisMitPaketnamen)

bzw.

/usr/local/share/texmf/doc/(neuesVerzeichnisMitPaketnamen)

untergebracht werden sollte. Je nach Verwendungszweck können noch weitere Verzeichnisse anzulegen sein. Es sollte eine README-Datei oder etwas ähnliches dabei sein, die genaueres verrät.

Man kann sich, wenn man unsicher ist, auch die Verzeichnisstruktur unter /usr/share/texmf-dist anschauen und es analog machen.

Anschließend muss als root

# texhash

ausgeführt werden, damit TeX seine Dateisuchbäume neu generieren kann.

F: Wie kann ich die Rechtschreibung überprüfen lassen?

Da man die TeX Dateien normalerweise nur mit einem Texteditor bearbeitet, kann das Problem bei umfangreicheren Dokumenten auftreten, dass man überprüfen will ob man sich vielleicht das eine oder andere mal vertippt hat. Einfach geht das bei OpenOffice über das Menü. Aber wie macht man das jetzt bei einer Textdatei ohne die Textdatei mit OpenOffice oder ähnlichen großen Programmen öffnen und bearbeiten zu müssen. Dafür gibt es das Programm Aspell. Um eine Textdatei (oder hier *.TeX) zu überprüfen muss man natürlich zu erst Aspell inklusive der benötigten Wörterbücher installieren. Das geht mittels

pacman -S aspell aspell-de

Eine Datei wird wie folgt überprüft:

aspell -c datei.endung

Die Oberfläche von aspell ist jetzt selbsterklärend.