--- DE-TeX-FAQ Beginn Teil 5 ---



   Fragen und Antworten (FAQ) ber das Textsatzsystem TeX und DANTE,
             Deutschsprachige Anwendervereinigung TeX e.V.


            Bernd Raichle, Rolf Niepraschk und Thomas Hafner


                     Version 72 vom September 2003

------------------------------------------------------------------------


5 TeX, LaTeX, Makros etc. (I)


5.1 LaTeX - Grundlegendes


5.1.1 Was bentige ich, wenn ich von LaTeX 2.09 auf LaTeX2e umsteigen
bzw. eine neuere LaTeX-Version installieren will?

Grundstzlich sollte man sich beim Umstieg von 2.09 oder beim Update
einer lteren 2e-Version immer die komplette LaTeX-Distribution im
Verzeichnis ``base'' besorgen und installieren, nie einzelne Dateien
oder nur einzelne Class-Dateien. Nach dem Entpacken der Distribution und
Installation der einzelnen Dateien ist ein neues Format zu generieren.
Die Anleitung ``install.txt'' enthlt genauere Informationen und
wichtige Hinweise - bitte durchlesen!

  Notwendig:


      * alle Dateien im Verzeichnis ``base''.
      * alle Zusatzpakete wie `graphics' und damit alle Dateien in den
        Verzeichnissen unter dem Verzeichnis ``required''.
      * die zustzlichen CM-Schriften `cmmib' und `cmbsy' in den
        Designgren 5, 6, 7, 8 und 9 Punkt.


  Optional, da schon in ``base'' enthalten:


      * Will man sich, insbesondere auf langsameren Rechnern, das
        Entpacken der dtx-Dateien in ``base'' sparen, bentigt man noch
        zustzlich die Dateien im Verzeichnis ``unpacked''.
      * Ebenso befindet sich im Verzeichnis ``doc'' die schon
        formatierte Dokumentation, also die Dateien
        ``base/???guide.tex''.



base:               CTAN: macros/latex/base/
                    CTAN: macros/latex/required/
line/lcircle/lasy:  CTAN: fonts/latex/mf/
                    CTAN: fonts/latex/tfm/
cmmib/cmbsy:        CTAN: fonts/amsfonts/sources/extracm/
                    CTAN: fonts/amsfonts/tfm/
                    oder
                    CTAN: fonts/cm/sauter/
optional:           CTAN: macros/latex/unpacked/
                    CTAN: macros/latex/doc/
 


5.1.2 Ich habe gehrt, da es fr meine LaTeX-Versionen Patches gibt.
Welche Dateien bentige ich, was mu ich tun?

Fr jeden LaTeX-Patch bentigt man immer zumindest die Datei
``patches.txt''
. Sie beschreibt genau, welche weitere Dateien man noch zu einem
_kompletten_ Patch bentigt. In vielen Fllen gibt es neben der Datei
``ltpatch.ltx''
, die LaTeX-Kernel-Patches enthlt, noch neue Versionen weiterer
Dateien! Nheres in
``patches.txt''
.
Nachdem man die Dateien geholt und installiert hat, mu ein neues Format
erstellt und installiert werden, damit die Patches in ``ltpatch.ltx''
aktiv werden. Zur Kontrolle: Danach sollte beim Formatieren eines
Dokuments nach der Meldung `LaTeX2e <1999/06/01>' noch der Zusatz `patch
level X' erscheinen, wobei `X' mit dem installierten Patch
bereinstimmen mu.

patches.txt:  CTAN: macros/latex/base/patches.txt
 


5.1.3 Was kann ich mit einer Datei mit Endung `.dtx' anfangen? Bentige
ich dazu auf alle Flle LaTeX?

Dateien mit `.dtx' sind sogenannte `docstrip archive files', also ein
Archiv, aus dem man mit dem Programm `docstrip' verschiedene Dateien
entpacken kann. Zum Entpacken bentigen Sie nur die Datei
``docstrip.tex''
 oder
``docstrip.dtx''
 und das Programm TeX. ``docstrip.tex'' knnen Sie mit LaTeX 2.09,
LaTeX2e und auch mit Plain-TeX verwenden.
Wie Sie eine `.dtx'-Datei entpacken mssen, sollten Sie aus einer
Beschreibung zu Beginn der `.dtx'-Datei oder einer separaten
README-Datei entnehmen knnen. Existiert eine gleichnamige Datei mit
Endung `.ins', so knnen Sie in den meisten Fllen das `.dtx'-Archiv
``file.dtx'' mit ``tex file.ins'' entpacken. In der Regel erzeugt dieser
Aufruf eine oder mehrere `.sty'-Dateien sowie weitere Hilfs- und
Beispieldateien. Nheres entnehmen Sie bitte der Beschreibung des
Archivs.
Die Dokumentation eines Pakets und der Makros sind ebenso in einem
`.dtx'-Archiv enthalten. Zum Formatieren dieser Dokumentation bentigen
Sie jedoch ein installiertes LaTeX2e - fr einige ltere Archive reicht
auch noch das alte LaTeX 2.09. blicherweise kann die Dokumentation
(`.dvi'-Datei) durch ``latex file.dtx'' oder ``latex file.drv'' erzeugt
werden.
Ein Befehlsindex eines Paketes kann i.d.R. durch

  makeindex -s gind.ist file

und einen anschlieenden erneuten LaTeX-Lauf erzeugt werden.
Bei der Erzeugung der Dokumentation wird der dokumentierte Quellcode
meist nicht aufgenommen; um ihn einzuschlieen, kann vor dem LaTeX-Lauf
im aktuellen Verzeichnis eine Datei ``ltxdoc.cfg'' angelegt werden, die
die folgende Zeile enthlt:

  \AtBeginDocument{\AlsoImplementation}

Nheres ist, falls vorhanden, der mitgelieferten Beschreibung des
Archivs zu entnehmen.
Hinweis: Mit LaTeX ab Dezember 1995 wurde eine Version des Tool
``docstrip.dtx'' verteilt, das gleichzeitig mehrere Dateien aus einem
Archiv entpacken kann und damit um einiges schneller ist. Deshalb lohnt
es sich, wenn Sie eine ltere Version benutzen, diese durch die neue
Version zu ersetzen.

docstrip:  CTAN: macros/latex/base/docstrip.dtx
           CTAN: macros/latex/base/docstrip.ins
           (Bestandteil von LaTeX, kann aber auch mit Plain-TeX
           verwendet
           werden!)


5.1.4 Wie installiert man am besten ein neues Paket, eine neue Klasse
oder eine neue Schrift in einem bestehenden TeX-System?

Aktuelle TeX-Systeme legen alle Dateien in einer hierarchischen Struktur
gem dem TeX-Directory-Structure-Standard (TDS, siehe Frage 3.1.7) an.
Das Wurzelverzeichnis eines solchen Baumes lautet meist ``texmf''. Unter
teTeX, fpTeX und anderen TeX-Systemen werden die Suchpfade in der Datei
``texmf.cnf'' angegeben, deren Ort man mit ``kpsewhich texmf.cnf''
herausfinden kann.
Fr nachtrglich installierte Pakete empfiehlt es sich, diese in einer
eigenen lokalen Verzeichnishierarchie zu installieren (beispielsweise
unter dem Verzeichnis ``texmf.local'', siehe Variable TEXMFLOCAL in
``texmf.cnf'').
Besteht ein LaTeX-Paket nach dem eventuell notwendigen Entpacken der
dtx-Dateien aus einer Einzeldatei, so wird diese in der TDS-Hierarchie
in ``texmf.local/tex/latex/misc/'' abgelegt. Gehren zu dem Paket
mehrere sty-, cls-, fd- oder hnliche Dateien, so werden diese in ein
neu erzeugtes Verzeichnis unter ``texmf.local/tex/latex/_Paketname_''
verschoben.
Schriften, Dokumentation, BibTeX-Dateien, dvips-Konfigurationsdateien
u.. werden analog gem TDS in entsprechende Unterverzeichnisse unter
``texmf.local'' verschoben. Nheres sollte in der README-Datei des
Pakets erlutert sein.
Zum Abschluss darf man nicht vergessen, die sogenannte
_Filename-Database_ auf den aktuellen Stand zu bringen, da sonst die neu
installierten Dateien nicht gefunden werden. Nheres finden Sie in der
Dokumentation Ihres TeX-Systems und unter Frage 8.5.10.
Einige TeX-Systeme bieten ein Konfigurations-Werkzeug, um zustzliche
Pakete nachtrglich zu installieren oder vorhandene Pakete zu
aktualisieren. Unter fpTeX geht dies ber das Setup-Men, unter MikTeX
verwendet man das Options-Tool. Beide sorgen nach der nderung
automatisch fr die Aktualisierung der Dateinamens-Datenbank.

Managing a one-person TeX http://www.ctan.org/installationadvice/
system: 
 


5.1.5 Wie gehe ich am besten vor, wenn ich eine bestehende LaTeX-Klasse
ndern bzw. an meine eigenen Vorgaben anpassen will?

Statt von einer bestehenden Klasse wie ``article.cls'' eine Kopie unter
eigenem Namen, hier als Beispiel ``detexfaq.cls'', anzulegen, empfiehlt
es sich, eine schon bestehende Klasse zu laden und anschlieend alle
notwendigen nderungen durchzufhren. Hierzu bietet LaTeX eine Reihe von
Mglichkeiten, die in der Dokumentation fr Klassen-Autoren
``clsguide.tex'' beschrieben sind. Als einfaches Beispiel htte damit
die neue Klasse ``detexfaq.cls'', in der als Standard-Optionen
`11pt,a4paper' verwendet werden und die beiden Pakete `german' und
`remreset' bereits implizit geladen werden, folgendes Aussehen:

  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% CUT HERE
  %% detexfaq.cls -- DE-TeX-FAQ's modified ``article.cls''
  \NeedsTeXFormat{LaTeX2e}\relax
  \ProvidesClass{detexfaq}[2000/05/11 Article Class from DE-TeX-FAQ]
  %% Lade nun ``article.cls'', wobei als Default-Optionen ``11pt'' und
  %% A4-Papierformat als Default gesetzt werden (fuer diese muss
  explizit
  %% eine Deklaration hier vorhanden sein) und alle weiteren vom Autor
  %% gegebenen Optionen einfach `durchgereicht' werden:
  \DeclareOption{a4paper}{\PassOptionsToClass{\CurrentOption}{article}}
  \DeclareOption{11pt}{\PassOptionsToClass{\CurrentOption}{article}}
  \DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
  \ExecuteOptions{a4paper,11pt}
  \ProcessOptions\relax
  \LoadClass{article}
  %% Ab hier kann man Aenderungen an den Makros der geladenen Klasse
  %% durchfuehren (bitte mit \renewenvironment oder \renewcommand!),
  %% Pakete hinzuladen und/oder eigene Anweisungen und Umgebungen
  %% definieren:
  \RequirePackage{german}
  \RequirePackage{remreset}
  %% Schliesslich wird die Klassendatei `sauber' beendet':
  \endinput
  %% End of ``detexfaq.cls''
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% CUT HERE

Diese Vorgehensweise hat einige Vorteile. So bleibt die eigene
Klassendatei relativ klein und enthlt nur die notwendigen nderungen
und Ergnzungen. ndert sich an der verwendeten Klasse etwas, z.B.
werden Fehler korrigiert, so sind in den meisten Fllen keinerlei
nderung an der eigenen Klassendatei zum Nachvollziehen dieser
nderungen notwendig. Daneben dokumentiert man explizit, von welcher
Klasse und Versionsnummer man als Basis ausgegangen ist, zumal diese
Klasse und alle geladenen Pakete mit ihren Versionsnummern bei einem im
Dokumentkopf eingefgten \listfiles auftauchen.

clsguide.tex:  CTAN: macros/latex/base/
 


5.1.6 Wie kann ich unter LaTeX eine Anweisung mit optionalem Parameter
definieren?

In LaTeX kann man mit den Anweisungen \newcommand, \renewcommand,
\newenvironment und \renewenvironment eigene Anweisungen und Umgebungen
definieren, die einen optionalen Parameter als erstes Argument besitzen.
Nhere Informationen finden sich in der Dokumentation fr Autoren
``usrguide.tex''.

usrguide.tex:  CTAN: macros/latex/base/
 


5.1.7 Wie erkenne ich bei einer Anweisung mit optionalem Parameter, ob
dieser vom Autor angegeben wurde?

Mit Hilfe des im Paket `ifthen' definierten Vergleichs \equal kann man
das optionale Argument mit dem voreingestellten Wert vergleichen. Das
folgende Beispiel geht davon aus, da der voreingestellte Wert leer sein
soll:

  \usepackage{ifthen}
  \newcommand{\meineanweisung}[2][]{% #1 = optional, #2 = notwendig
    \ifthenelse{\equal{#1}{}}{%
       % Autor hat kein oder leeres optionales Argument angegeben
    }{%
       % Autor hat optionales Argument angegeben
    }}


ifthen:  CTAN: macros/latex/base/
 


5.1.8 Wie kann ich in LaTeX eine Anweisung mit mehr als einem optionalen
Parameter definieren?

Mit \newcommand kann man nur ein Makro mit einem einzigen optionalen
Parameter definieren. Will man ein Makro mit mehr als einem optionalen
Parameter definieren, so mu man hierzu mehrere Makros mit jeweils einem
optionalen Parameter definieren, die den Wert des Parameters
zwischenspeichern und das nchste Makro aufrufen.
Hier ist ein Beispiel fr ein Makro \cubic[a][b][c]{d} mit drei
optionalen Argumenten:

  \newcommand{\erstesargument}{}
  \newcommand{\zweitesargument}{}

  \newcommand{\cubic}[1][a]{% erstes optionales Argument
    \begingroup  % Definitionen von \...argument lokal halten
      \renewcommand{\erstesargument}{#1}% opt. Argument speichern
      \cubicZwei}
  \newcommand{\cubicZwei}[1][b]{% zweites optionales Argument
      \renewcommand{\zweitesargument}{#1}% opt. Argument speichern
      \cubicDrei}
  \newcommand{\cubicDrei}[2][c]{% drittes opt. + notwendiges Argument
      \({\erstesargument}x^3+{\zweitesargument}x^2+#1x+#2\)%
    \endgroup}

Eine weitere Mglichkeit bietet das Paket `twoopt':

  \newcommandtwoopt{\Cmd}[3][DefaultA][DefaultB]{Args: #1, #2, #3}

In Anlehnung an die Standard-LaTeX-Definitionen existieren auch die
Anweisungen \renewcommandtwoopt und \providecommandtwoopt.

twoopt:  CTAN: macros/latex/contrib/oberdiek/
 


5.1.9 Wie kann ich innerhalb des optionalen Arguments einer Anweisung
zustzliche eckige Klammern, beispielsweise die eines optionalen
Arguments einer anderen Anweisung, verwenden?

Im Unterschied zu den geschwungenen Klammern {...}, die immer paarweise
und korrekt geschachtelt werden mssen, sucht LaTeX bei eckigen Klammern
einfach nach der nchsten schlieenden eckigen Klammer ], ohne auf
korrekte Schachtelung dieser Klammern zu achten. Um dies zu verhindern,
mu man einfach innerhalb der eckigen Klammern [...] ein geschweiftes
Klammerpaar einfgen, wie dies hier als Beispiel fr \twocolumn gezeigt
wird:

  \twocolumn[{  ... \sqrt[3]{x^2} ...  }]


5.2 LaTeX - Probleme beim Umstieg von LaTeX 2.09


5.2.1 Anweisungen wie \tenrm, \twlrm, \fivrm etc., die von einigen
Paketen wie PiCTeX verwendet werden, sind nicht mehr definiert. Was mu
ich da ndern?

Diese Namen fr Schriften wurden nie dokumentiert und sollten im alten
LaTeX 2.09 nur LaTeX-intern verwendet werden. Da das Fontauswahlschema
namens NFSS2 in LaTeX2e komplett neu geschrieben wurde, sind diese
ehemals internen Namen nicht mehr vorhanden. Es ist daher am besten,
diese alten Pakete so umzuschreiben, da diese internen Schriftnamen
nicht mehr verwendet werden. In der Zwischenzeit kann man mit Hilfe des
Paketes `rawfonts' diese Namen nachdefinieren, wie z.B. mit

  \usepackage[only,fivrm]{rawfonts}

fr PiCTeX.

rawfonts.sty:  CTAN: macros/latex/required/
 


5.2.2 Beim Umstieg von LaTeX 2.09 mit NFSS (Version 1) auf LaTeX2e
ndert sich auch das Verhalten der Anweisungen \rm, \bf, \it etc. auf
das Verhalten des Original-LaTeX 2.09. Wie bekomme ich das alte
inkompatible Verhalten von NFSS Version 1?

Mit dem Paket `newlfont' erhlt man das Verhalten von NFSS v1, ohne da
man in den meisten Fllen das Dokument ndern mu:

  \usepackage{newlfont}

Fr neue Dokumente sollte man jedoch besser gleich die neuen Anweisungen
\textrm{...}, \textbf{...}, \textit{...} etc. verwenden. Diese
Anweisungen haben darber hinaus den Vorteil, da eine eventuell
notwendige `italic correction' automatisch eingefgt wird.

newlfont.sty:  CTAN: macros/latex/required/
 


5.2.3 Einige mathematische Symbole (\Box, \lhd, \leadsto, \Join, \mho,
\sqsubset etc.) sind nicht mehr definiert - wieso?

Die LaTeX-Symbolschriften `lasy10' und `lasyb10' enthalten nur sehr
wenige relativ selten benutzte Symbole. Daher werden diese Schriften in
LaTeX2e nicht mehr standardmig geladen, sondern mssen vom Benutzer
durch Laden von `latexsym' aktiviert werden:

  \usepackage{latexsym}


5.2.4 Kann es sein, da es in LaTeX2e den Parameter \footheight und die
internen Parameter \@maxsep und \@dblmaxsep nicht mehr gibt? Gibt es
einen Ersatz?

Der Parameter \footheight und die internen Parameter \@maxsep und
\@dblmaxsep wurden in LaTeX 2.09 nie ausgewertet. Deshalb wurden sie in
LaTeX2e entfernt, um die dadurch gesparten Lngenregister fr andere
Zwecke einsetzen zu knnen. Zur Anpassung von alten Dokumentstilen an
LaTeX2e kann man daher eine Zuweisung an diese Parameter einfach
ersatzlos streichen.

5.2.5 Mit lteren Dokumentklassen bekomme ich den Fehler `! Undefined
control sequence.' oder `! LaTeX Error: \mit undefined.' fr die
Schriften \mit und \cal. Wieso?

Bis LaTeX2e <1994/12/01> wurden \cal und \mit im Kernel definiert. Weil
diese Definitionen aber in jeder Standard-Dokumentklasse durch robustere
Varianten ersetzt werden, hat das LaTeX-Team beschlossen, \cal und \mit
nicht mehr im Kernel vorzudefinieren. Damit ist es aber erforderlich,
da alle Dokumentklassen, die \cal und \mit nicht definieren oder mit
\renewcommand umdefinieren, angepat werden mssen. Bei den
Standard-Dokumentklassen hat das niemand bemerkt, da die notwendigen
Anpassungen dieser Dateien automatisch mit einer neuen LaTeX-Version
mitinstalliert werden.

5.3 (Silben-)Trennung, Absatz-, Seitenumbruch


5.3.1 Wie kann ich LaTeX an die neue deutsche Rechtschreibung anpassen?
Gibt es Trennmuster fr die neuen Trennregeln?

Die ``alten'' Trennmuster wurden von Hand so angepat, da die neuen
Trennregeln beachtet werden, wobei die Trennung weiterhin eher nach
Wortherkunft und nicht nach strikter Silbentrennung, die ebenfalls
erlaubt ist, erfolgt. Diese Trennmuster sind in der Datei
``dehyphn.tex'' (vormals ``gnhyph01.tex'') verfgbar. Um diese
Trennmuster nutzen zu knnen, bentigt man ``german.sty'' ab
Version 2.5e.

dehyphn:     CTAN: language/hyphenation/dehyphn.tex
german.sty:  CTAN: language/german/
 


5.3.2 Warum trennt (La)TeX Worte mit Umlauten nicht oder nicht korrekt?

Wie TeX Worte mit Umlauten trennt, hngt davon ab, ob die verwendete
Schrift Umlaute als eigene Lettern enthlt und ob man auf diese Lettern
durch entsprechende Paket-Deklarationen beim Setzen eines Textes auch
zugreift.
Bei den alten CM-Schriften mu TeX Umlaute aus einem Buchstaben und
einem Akzent zusammenbasteln, da diese keine Lettern fr Umlaute
enthalten. Diese Akzent-Konstruktion irritiert TeXs Trennalgorithmus,
und so trennt TeX nur den Wortteil bis zum ersten Umlaut. Im Paket
`german' und _einigen_ Babel-Versionen wird durch einen aus dem TeXbook
(Anhang D, S. 394, \allowhyphens) entnommenen Trick erreicht, da alle
Wortteile zwischen den Umlauten einzeln getrennt werden. Bei dieser
Vorgehensweise werden nicht alle Trennstellen gefunden oder es treten
teilweise falsche Trennungen (Bsp.: "ubert-ragen statt "uber-tra-gen)
auf.
Abhilfe schaffen nur Schriften, die die Umlaute und andere akzentuierte
Zeichen als einzelne Lettern enthalten. Ein Beispiel hierfr sind alle
T1-kodierten Schriften, darunter die EC-Schriftfamilie (siehe Frage
10.1.3) und die T1-kodierten PostScript-Schriften. Unter neueren
Versionen von LaTeX und `german.sty' bzw. Babel lassen sich T1-kodierte
Schriften recht einfach durch die Deklaration

  \usepackage[T1]{fontenc}

in der Prambel des Dokuments verwenden.

5.3.3 Wie kann ich Trennungsausnahmen mit Umlauten in \hyphenation
verwenden?

Auch hier gilt, da man in \hyphenation in den Trennungsausnahmen nur
Zeichen verwenden kann, fr die auch Lettern in der momentan benutzten
Schrift existieren (siehe Frage 5.3.2). Da mit CM-Schriften die Umlaute
aus zwei Lettern zusammengesetzt werden mssen, kann man fr Wrter mit
Umlauten keine Trennungsausnahmen angeben. Erst bei Verwendung von
T1-kodierten Schriften, wie der EC-Schriftfamilie, oder auch von
Schriften in einer entsprechenden anderen Kodierung, die eigene Lettern
fr Umlaute enthalten, kann man Trennungsausnahmen angeben.
Hier ist ein einfaches Beispiel (`german.sty' ist hier nur zum
Umschalten auf die deutschen Trennmuster ``dehypht.tex'' notwendig):

  \documentclass{article}
    \usepackage{german}
    \usepackage[T1]{fontenc}
    \hyphenation{Ver-st\"ar-ker-aus-gang}
  \begin{document}
  \showhyphens{Verst\"arkerausgang}
  % ohne Trennausnahme:  Ver-st^^e4r-ke-r-aus-gang
  % mit Trennausnahme:   Ver-st^^e4r-ker-aus-gang
  \end{document}


5.3.4 Wie kann ich `Hurenkinder' (engl. widows), also einzelne Zeilen
eines Absatzes am Kopf von Buchseiten, bzw.
`Schusterjungen/Waisenkinder' (engl. clubs), einzelne Absatzzeilen auf
der Seite unten, verhindern?

TeX kennt die Parameter \widowpenalty und \clubpenalty, mit denen man
die `Strafpunkte' festlegen kann, falls ein Hurenkind bzw. ein
Schusterjunge beim Seitenumbruch entstehen sollte. Auerdem gibt es noch
den Parameter \displaywidowpenalty fr Hurenkinder nach einer
abgesetzten mathematischen Formel. Da TeX den Wert 10000 als unendlich
groe Strafe interpretiert, kann man mit den Zeilen

  \clubpenalty = 10000
  \widowpenalty = 10000 \displaywidowpenalty = 10000

Hurenkinder und Schusterjungen komplett unterdrcken. (Das Paket
`schuster' enthlt genau diese Zeilen.)
Man sollte jedoch bedenken, da man bei einem Satzspiegel mit fester
Hhe (\flushbottom) und registerhaltigem Satz Hurenkinder und
Schusterjungen nur schwerlich verhindern kann - insbesondere wenn man
dies bei zweiseitigem Druck fr jede Doppelseite beachten mu. Hier ist
es oft besser, die einzelne Zeile zuzulassen oder zu versuchen, einen
Absatz durch geringfgige Umformulierung eine Zeile lnger oder krzer
zu machen.
Weiterhin gibt es die Mglichkeit, Abstze, die schon sehr voll sind,
mit \looseness=1 um eine Zeile zu dehnen oder Abstze, die recht leer
sind, mit \looseness=-1 um eine Zeile zu krzen. Manchmal fhrt dies
jedoch zu merklichen nderungen des Grauwerts des Absatzes. (Achtung:
Der Wert von \looseness gilt auerhalb von Listen-Umgebungen nur fr den
aktuellen Absatz. Innerhalb einer Listen-Umgebung mu die Zuweisung
zusammen mit \par durch eine Gruppe lokal gehalten werden {\looseness=1
\par}, wenn die nderung nur fr einen Absatz gelten soll.)

5.3.5 Wie mu in LaTeX die Datei ``hyphen.cfg'' aussehen, um die
deutschen Trennmuster ``dehypht.tex'' (vormals ``ghyph31.tex'') in das
LaTeX-Format einzubinden?

Eine Anleitung zur Installation der deutschen Trennmuster enthlt
``gerdoc'', die Kurzbeschreibung des German-Styles vom Mai 1997. Diese
Anleitung beschreibt auch die Installation der Trennmuster in Plain-TeX
und LaTeX 2.09. Beispiel von ``hyphen.cfg'' fr LaTeX:

  %% Konfigurationsdatei -- Trennmuster: `hyphen.cfg'
  \message{== Loading hyphenation patterns:}

  \chardef\l@USenglish=\language
  \chardef\l@english=\l@USenglish %% british english als `Dialekt'
  \input hyphen

  \newlanguage\l@german \language=\l@german
  \chardef\l@austrian=\l@german
  \input dehypht

  \newlanguage\l@ngerman \language=\l@ngerman
  \input dehyphn

  %% weitere Sprachen nach folgendem Schema:
  % \newlanguage\l@SPRACHE \language=\l@SPRACHE
  % \chardef\l@DIALEKT=\l@SPRACHE
  % \input SPRACHhyphen

  %% Default-Trennmuster: USenglish
  \language=\l@USenglish \lefthyphenmin=2 \righthyphenmin=3
  \endinput

_Hinweis:_ Einige Distributionen benutzen stillschweigend die Datei
``hyphen.cfg'' aus dem Babel-Paket. Auerdem wurde meist ``hyphen.tex''
in ``ushyph1.tex'' umbenannt, um unter dem Namen ``hyphen.tex'' die
Datei ``hyphen.cfg'' aus Babel auch fr Plain-TeX einbinden zu knnen.
In diesem Fall fhrt ein ``\input hyphen'', wie im obigen Beispiel
beschrieben, zu einer Endlosschleife!

gerdoc:  CTAN: language/german/gerdoc.tex
 


5.3.6 Wieso werden Texte in `typewriter'-Schriften nicht getrennt? Gibt
es eine Mglichkeit, da doch getrennt werden kann?

TeX trennt nur, wenn die aktuell verwendete Schrift einen Divis
(Trennungsstrich) besitzt. Dazu ist jeder Schrift ein Divis durch den
Parameter \hyphenchar<font> zugeordnet, der bei den meisten Schriften
auf den Wert `\-, also auf das Zeichen ``-'', gesetzt ist. Bei den
`typewriter'-Schriften ist dieser Wert aber auf -1 gesetzt, d.h. auf ein
nicht vorhandenes Zeichen. Damit ist die Trennung fr diese Schriften
unterdrckt, was in den meisten Fllen auch sinnvoll ist.
Will man dennoch, da TeX einen in `typewriter' gesetzten Textteil
automatisch trennt, so mu man den \hyphenchar fr diese Schriften auf
`\- setzen. Dies geht in LaTeX am einfachsten, wenn man die Anweisung
\ttfamily umdefiniert:

  \newcommand{\origttfamily}{}% sollte noch nicht definiert sein!
  \let\origttfamily=\ttfamily % alte Definition von \ttfamily sichern
  \renewcommand{\ttfamily}{\origttfamily \hyphenchar\font=`\-}

Man knnte alternativ dazu auch die Dateien ``*cmtt*.fd'' ndern und die
Anweisung \hyphenchar\font\m@ne in \DeclareFontFamily entfernen. Dies
ist jedoch nicht ratsam, wenn man Texte an andere weitergeben will, da
man dann nicht vergessen darf, die so genderten `*.fd'-Dateien
mitzugeben.
Fr LaTeX 2.09 (oder analog auch fr Plain-TeX) mu das Makro \tt
umdefiniert werden:

  \newcommand{\origtt}{}
  \let\origtt=\tt
  \renewcommand{\tt}{\origtt \hyphenchar\font=`\-}

Wichtiger Hinweis: TeX kann eine Schrift unter unterschiedlichen Namen
laden, wobei TeX alle diese Schriften nur ein einziges Mal ldt und fr
die anderen Schriften nur `Aliases' anlegt. Daher gibt es
\hyphenchar<font> nur einmal pro `echten' Font und \hyphenchar<font> ist
wie auch \fontdimen<font> ein besonderer Parameter: Alle Zuweisungen an
\hyphenchar<font> werden _immer_ global ausgefhrt. Auerdem sieht sich
TeX diesen Parameter erst am Absatzende beim Umbruch dieses Absatzes an,
so da mit obiger nderung nicht mglich ist, die Trennung fr einen in
`typewriter' gesetzten Textteil zu ermglichen, fr einen anderen im
selben Absatz zu verbieten.
Eine weitere Methode, Trennungen fr `typewriter'-Schriften zu erlauben,
bietet das Paket `hyphenat':

  \usepackage[htt]{hyphenat}

Darber hinaus kann es auch benutzt werden, um Trennung selektiv zu
erlauben oder zu verbieten.

hyphenat:  CTAN: macros/latex/contrib/hyphenat/
 


5.3.7 Warum trennt LaTeX Wrter mit Bindestrich nicht bzw. nur am
Bindestrich, auch wenn die Trennausnahmeliste diese enthlt?

TeX fgt nach dem aktuellen Trennzeichen implizit (fast) immer einen
sogenannten \discretionary ein, der wie \- eine explizite Trennstelle
angibt. Da sowohl \- als auch \discretionary dazu fhren, da die
Trennung in den brigen Wortteilen unterdrckt wird, werden solche
Wrter auer am Trennstrich nicht mehr getrennt. Dieses eigenwillige
Verhalten von TeX ist fr Sprachen, in denen wenige Bindestriche
verwendet werden, gnstig und sinnvoll, da zustzliche Trennungen in
solchen Wrtern meist die Lesbarkeit erschweren.
Um Wrter mit Bindestrichen dennoch zu trennen, existieren zwei
Mglichkeiten: Man gibt im Dokumenttext bei diesen Wrtern, insbesondere
wo schlecht getrennt werden kann, mit \- oder "- weitere mgliche
Trennstellen vor oder man verwendet "= anstelle des Bindestrichs.
Nheres ist hierzu der Dokumentation des Paketes `german' zu entnehmen.
Die andere Mglichkeit, die bislang nur von Experten umgesetzt werden
kann, besteht bei Schriften, die eine zweite Letter fr einen
Bindestrich besitzen. Fr diese Schriften kann man diese zweite Letter
als Trennstrich deklarieren. Zusammen mit den zustzlichen Trennmustern
in ``hypht1.tex'' ist damit eine automatische Trennung von Wrtern mit
Bindestrichen und deren Aufnahme in die Trennausnahmeliste mglich.

german.sty:  CTAN: language/german/
hypht1.tex:  CTAN: language/hyphenation/hypht1.tex
 


5.4 Seitenlayout, Layout allgemein, Kopf- und Fuzeilen (*)


5.4.1 Gibt es neben den Standard-LaTeX-Klassen auch Klassen mit einem
`europischeren' Design?

Die NTG hat verschiedene Klassenentwickelt, die im Vergleich zum Layout
der Standard-LaTeX-Klassen kleinere berschriften und eine
einheitlichere Einrckung der Abstze und Listen definieren.
Das KOMA-Script-Paket enthlt ebenfalls Klassen (`scrartcl', `scrreprt',
`scrbook' und `scrlettr'), die die Standardklassen ersetzen. Es wurden
dort eine Vielzahl von nderungen eingefhrt, die ein gnstigeres
Aussehen bewirken. So wird z.B. der Satzspiegel besser an das
Papierformat angeglichen. Nhere Einzelheiten enthlt die ausfhrliche
Beschreibung in der beigefgten Datei ``scrguide.dvi''.

KOMA-Script:  CTAN: macros/latex/contrib/koma-script/
NTG-Klassen:  CTAN: macros/latex/contrib/ntgclass/
 


5.4.2 Ich suche eine Klasse fr Briefe, die weitgehend die verschiedenen
DIN-Normen und deutschen Gepflogenheiten bercksichtigt.

Unter LaTeX 2.09 ist `dinbrief' weit verbreitet, der von anderen Autoren
auch fr LaTeX2e verfgbar gemacht wurde. Darber hinaus findet man im
KOMA-Script-Paket die Klasse `scrlettr' und es gibt mit `g-brief' und
`akletter' noch weitere Beispiele fr angepate Klassen.

dinbrief:     CTAN: macros/latex/contrib/dinbrief/
KOMA-Script:  CTAN: macros/latex/contrib/koma-script/
g-brief:      CTAN: macros/latex/contrib/g-brief/
akletter:     CTAN: macros/latex/contrib/akletter/
              (Anm.: `akletter' hie in frheren Version `myletter', ein
              schlechter,
              weil hufig gewhlter Name.)


5.4.3 Gibt es eine bequemere Mglichkeit, ein Seitenlayout anzugeben,
als dadurch, Parameter, wie \textheight, einzeln zu verndern?

Mit dem Paket `typearea' aus dem KOMA-Script-Paket kann man den Anteil
des Textbereichs an der Gesamtseite abhngig von der Schriftgre nach
Tschicholds (siehe Frage 2.4.2) n-Teilungder Seite berechnen lassen

  \documentclass[a4paper,11pt]{...}   % Ausgangspapiergroesse
  % BCOR1cm: zusaetzlich 1cm Rand fuer die Bindung.
  % DIV10: fuer 11pt-Schrift wird 10-Teilung verwendet, bei `oneside'
  %        nimmt der Text 7/10 der Restseite ein.
  \usepackage[BCOR1cm]{typearea}

Die Verteilung der Rnder erfolgt dabei automatisch nach typographischen
Gesichtspunkten. Diverse Papiergren sowie Hoch- und Querformat werden
untersttzt, zustzliche Formate knnen definiert werden, und auch die
Option `twoside' wird korrekt behandelt. Ausfhrliche Informationen dazu
findet man in der beigefgten Datei ``scrguide.dvi''.
Mit diesem Paket, das einem die Berechnung eines wohldefinierten
Satzspiegels abnehmen kann, kann man auch die LaTeX-Parameter fr den
Textbereich durch eine einfache Schnittstelle setzen:

  \documentclass[a4paper]{...} % Ausgangspapiergroesse
  \usepackage{typearea}
  \areaset[1cm]%               % Zusaetzlicher Rand fuer die Bindung
          {18cm}{25cm}         % Textbreite und Hoehe

Neben `typearea' gibt es mit `vmargin' und `geometry' drei weitere
Pakete, mit denen man die LaTeX-Parameter leichter setzen kann. Bei
`vmargin' haben die Makroaufrufe eine festgelegte Parameterreihenfolge,
`geometry' dagegen benutzt das Paket `keyval', mit dem die Parameter in
beliebiger Reihenfolge angegeben werden knnen:

  \usepackage{geometry}
  \geometry{left=1.5cm,textwidth=18cm,top=1.5cm,textheight=25cm}


  \usepackage{vmargin}
  \setpapersize{A4}
  \setmargins{1.5cm}{1.5cm}% % linker & oberer Rand
             {18cm}{25cm}%   % Textbreite und -hoehe
             {12pt}{25pt}%   % Kopfzeilenhoehe und -abstand
             {0pt}{30pt}%    % \footheight (egal) und Fusszeilenabstand

Eine gute Mglichkeit der visuellen Kontrolle des Ergebnisses bietet das
Paket `layouts'.

KOMA-Script:  CTAN: macros/latex/contrib/koma-script/
script:       CTAN: macros/latex209/contrib/script/
geometry:     CTAN: macros/latex/contrib/geometry/
vmargin:      CTAN: macros/latex/contrib/vmargin/
layouts:      CTAN: macros/latex/contrib/layouts
 


5.4.4 Wieso ist mit der Klasse `book' oder mit der Klassenoption
`twoside' der innere Rand kleiner als der uere?

Bei doppelseitiger Formatierung werden die Seitenrnder so gewhlt, da
sie nicht fr eine einzelne Seite sondern fr eine aufgeschlagene
Doppelseite passen. Bei dieser bilden die Rnder der beiden Seiten drei
vertikale weie Streifen (links auen, mittig, rechts auen), die gleich
breit sein sollen. Da der mittlere Streifen aus den Rndern zweier
Seiten gebildet wird, sind diese auch nur halb so breit. Aus diesem
Grund legt man unter LaTeX die Werte fr \evensidemargin und
\oddsidemargin, also fr den linken Rand der geraden (linken) und den
der ungeraden (rechten) Seite, entsprechend fest. Nheres findet sich
u.a. in der Dokumentation der KOMA-Script-Klassen.

KOMA-Script:  CTAN: macros/latex/contrib/koma-script/
 


5.4.5 Gibt es einen einfachen Weg, die Seitennummer als `Seite 1 von 16'
anzugeben?

Mit dem Paket `lastpage' erhlt man durch ``\pageref{LastPage}'' eine
Referenz auf die Seitennummer der letzten Seite. Das Paket `count1to'
bietet mit ``\pageref{TotalPages}'' eine Referenz auf die Gesamtzahl der
Seiten. Selbiges leistet das Paket `totpages', wobei man mit
``\ref{TotPages}'' die Gesamtzahl aller Seiten, mit
``\pageref{TotPages}'' die Seitennummer der letzten Seite erhalten kann.
Diese `pageref'-Anweisungen knnen unter Zuhilfenahme des Paketes
`fancyhdr' oder des Paketes `scrpage' aus dem KOMA-Script-Paket in der
Form `\thepage{} von \pageref{LastPage}' in die Kopf- oder Fuzeilen
eingefgt werden.

lastpage:          CTAN: macros/latex/contrib/lastpage/
count1to:          CTAN: macros/latex/contrib/ms/
totpages:          CTAN: macros/latex/contrib/totpages/
fancyhdr:          CTAN: macros/latex/contrib/fancyhdr/
Kurzbeschreibung:  CTAN: info/german/fancyhdr/
KOMA-Script:       CTAN: macros/latex/contrib/koma-script/
 


5.4.6 Wie kann ich den Kolumnentitel, die Kopfzeile der Seite, oder die
Fuzeile nach meinen Wnschen gestalten, z.B. mit einem Strich versehen?

Mit dem Paket `scrpage' und den Klassen aus dem KOMA-Script-Paket oder
mit dem Paket `fancyhdr' kann man die Kopf- und Fuzeile einer Seite
fast beliebig festlegen. Beide Pakete enthalten eine ausfhrliche
Dokumentation, die auch auf andere Probleme eingeht und dafr Lsungen
und Tips hat.

KOMA-Script:       CTAN: macros/latex/contrib/koma-script/
fancyhdr:          CTAN: macros/latex/contrib/fancyhdr/
Kurzbeschreibung:  CTAN: info/german/fancyhdr/
 


5.4.7 Wie kann ich einem zweispaltig gesetzten Text (Klassenoption
`twocolumn') eine beide Spalten bergreifende berschrift und
Zusammenfassung voransetzen?

Will man nur mit \maketitle eine berschrift mit den Autorenangaben
einspaltig in voller Breite ber beide Spalten setzen, so verwendet man
die Klassenoption `twocolumn' und ndert sonst nichts, da dies bei den
Standard-Klassen und den meisten anderen Klassen automatisch vorgesehen
ist.
Soll jedoch zustzlich zur berschrift noch weiterer Text wie eine
Zusammenfassung einspaltig gesetzt werden, mu man auf die Klassenoption
`twocolumn' verzichten und stattdessen die Anweisung \twocolumn
verwenden. Diese hat ein optionales Argument, in der man diejenigen
Textteile angibt, die einspaltig ber die gesamte Breite gesetzt werden
sollen. Da die Anweisung \maketitle und die Umgebung `abstract' jedoch
nicht einfach im optionalen Argument von \twocolumn verwendet werden
kann, mu man zu einem kleinen, leider nicht ganz sauberen Trick mit
\csname@twocolumnfalse\endcsname greifen.

  \documentclass[...]{article}
  ...
  \begin{document}
  \twocolumn[{\csname @twocolumnfalse\endcsname
    \maketitle
    \begin{abstract}
      ...
    \end{abstract}
  }]
  ...
  \end{document}

Innerhalb des optionalen Arguments von \twocolumn funktionieren leider
keine Funoten und damit tauchen auch fr die Anweisung \thanks in der
Autorenliste keine Funoten auf. Werden diese bentigt, mu man sie von
Hand mit \footnotetext nach dem optionalen Argument setzen.

5.4.8 Wie kann ich verhindern, da der Beginn eines Absatzes eingezogen
wird? Ich will Abstze stattdessen mit zustzlichem Durchschu
markieren. (*)

Meist kommt auf diese Frage
    \setlength{\parskip}{\baselineskip} \setlength{\parindent}{0pt}
als Antwort, jedoch fgt LaTeX \parskip auch an verschiedenen anderen
Pltzen ein, u.a. auch zu Beginn und am Ende einer Liste und zwischen
den Listenelementen. Dies kann man mit dem Paket `parskip' von Hubert
Partl zum Teil verhindern, wenn auch nicht komplett.
Weitergehende Lsungen finden sich in den KOMA-Script- und NTG-Klassen.
Die KOMA-Script-Klassen kennen die Klassenoption `parskip' und
verschiedene Varianten davon. Zu den NTG-Klassen gehren `artikel3',
`rapport3' und `boek3', die ebenfalls ein Layout ohne Absatzeinzug und
mit zustzlichen Durchschu bieten.
Ob man nun den Beginn eines neuen Absatzes mit einem Einzug oder mit
einem zustzlichen Durchschu markiert, ist immer wieder Anla zu mehr
oder weniger ausgiebigen Diskussionen. Um einen weitverbreiteten Irrtum
auszurumen: Der einzuglose Satz hat im ``deutschen Buchsatz'' keine
Tradition. Einzugloser Satz, ob nun mit oder ohne zustzlichen
Durchschu, ist im Zeitungs- und Zeitschriftensatz weit verbreitet, so
da er manchen vertrauter erscheint als der traditionelle Buchsatz mit
Einzug. Letztendlich sollte man bei der Wahl, ob mit oder ohne Einzug,
an den Leser denken; wie einfach dieser einen neuen Absatz, den Beginn
eines neuen Teils der niedergeschriebenen Gedankenfolge, immer klar und
deutlich erkennen kann.

parskip.sty:  CTAN: macros/latex/contrib/misc/parskip.sty
KOMA-Script:  CTAN: macros/latex/contrib/koma-script/
NTG-Klassen:  CTAN: macros/latex/contrib/ntgclass/
 


5.4.9 Wie kann ich den Durchschu meines Dokuments vergrern, wenn ich
beispielsweise ein Dokument mit 1,5- oder 2-fachem Zeilenabstand
abliefern soll?

Abgesehen davon, da man eine solch starke Vergrerung des
Zeilenabstand vermeiden sollte, hilft das Paket `setspace':

  \usepackage{setspace}
  \doublespacing    % doppelzeilig oder
  %\onehalfspacing  % anderthalbzeilig


setspace:  CTAN: macros/latex/contrib/setspace/
 


5.4.10 Wieso bekomme ich mit \pagestyle{empty} dennoch eine Seitennummer
auf der ersten Seite mit dem Artikeltitel?

Fast alle LaTeX-Klassen definieren die Anweisung \maketitle so, da fr
diese Seite mit \thispagestyle auf den Seitenstil `plain' umgeschalten
wird. \thispagestyle berschreibt damit den gewhlten Seitenstil fr
diese eine Seite. Um dies zu verhindern, mu man entweder eine besser
geeignete Klasse whlen, die Definition in der Klasse ndern oder
folgenden Trick anwenden: _Direkt_ nach der Anweisung \maketitle wird
\thispagestyle{empty} eingefgt. Alternativ kann das Paket `nopageno'
verwendet werden.

nopageno:  CTAN: macros/latex/contrib/carlisle/nopageno.sty
 


5.4.11 Wie kann ich mein gesamtes LaTeX-Dokument im Querformat setzen?

Zu diesem Zweck ist bei der Dokumentenklasse die Klassen-Option
`landscape' anzugeben. Zustzlich mu dem verwendeten dvi-Treiber die
nun vom Standard abweichende Seitengre mitgeteilt werden. Im Falle von
`dvips' kann man dies statt per Kommandozeilenoption mit Hilfe des
Pakets `geometry' erreichen.

  \usepackage[dvips]{geometry}


geometry:  CTAN: macros/latex/contrib/geometry/
 


5.4.12 Wie kann ich Teile meines Dokumentes im Querformat setzen?

Dokumentteile knnen nur gedreht werden, wenn dies auch vom verwendeten
dvi-Gertetreiber untersttzt wird. In den meisten Fllen bedeutet dies,
da die dvi-Datei nach PostScript zu konvertieren ist. Zum Betrachten
und Ausdrucken ist ein PostScript-Viewer wie beispielsweise `gv' oder
`gsview' unter Verwendung von `Ghostscript' geeignet.
Das LaTeX-Bundle `graphics' enthlt das Paket `lscape', das eine
`landscape'-Umgebung zur Verfgung stellt. Der Inhalt dieser Umgebung
wird um 90 Grad gegen den Uhrzeigersinn gedreht und auf eine eigene
Seite plaziert. Zu Beginn und am Ende der Umgebung wird ein \clearpage
ausgefhrt:

  \usepackage{lscape}
  % etc.
  \begin{landscape}
    \begin{figure}
      gedrehte Abbildung
      \caption{gedrehte Unterschrift}
    \end{figure}
    % evtl. noch weitere Abbildungen/normaler Text/etc.
  \end{landscape}
  % etc.

Wird ein Dokument mit solcherart gedrehten Seiten per pdfLaTeX zu einer
pdf-Datei kompiliert, wre es wnschenswert, wenn die gedrehten Seiten
bei Betrachtung mit `Acrobat Reader' in aufrechter Schrift, also um
90 Grad gedreht, dargestellt wrden. In diesem Fall ist das Paket
`pdflscape' zu verwenden, das wiederum das Paket `lscape' ldt und um
entsprechende PDF-Anweisungen ergnzt:

  \usepackage{pdflscape}
  % ...

Will man nicht ganze Seiten drehen oder stren die implizit ausgefhrten
\clearpage-Anweisungen, so kann man auch nur die Anweisung \rotatebox
aus dem Paket `graphics' verwenden:

  \usepackage{graphics} % oder `graphicx'
  % etc.
  \begin{figure}
    \rotatebox{90}{%
      \begin{minipage}{.6\textheight}
      gedrehte Abbildung
      \caption{gedrehte Unterschrift}
      \end{minipage}%
    }
  \end{figure}

Das Paket `rotating' bietet statt der einfachen \rotatebox-Anweisung mit
all ihren Nachteilen (Stichwort: `verbatim'!) die Umgebungen `rotate',
`turn' und `sideways', innerhalb der man (fast) beliebigen Text
plazieren kann. Fr den Spezialfall, da eine Abbildung bzw. Tafel wie
mit der Umgebung `landscape' eine komplette Seite fllt und um 90 Grad
gegen den Uhrzeigersinn gedreht werden soll, gibt es die den `figure'-
und `table'- entsprechenden `sidewaysfigure'- und
`sidewaystable'-Umgebungen. Auerdem ist eine ltere Version dieses
Pakets auch fr LaTeX 2.09 verfgbar.
Mehr ber diese Pakete findet man in der Dokumentation ``grfguide.tex''
des `graphics'-Bundle, der mit `rotating' mitgelieferten Dokumentation
und dem Buch `Der LaTeX-Begleiter' (siehe Frage 2.4.1) sowie in Keith
Reckdahls Artikel `Using Imported Graphics in LaTeX2e' (siehe Frage
2.4.2).

lscape:     CTAN: macros/latex/required/graphics/
pdflscape:  CTAN: macros/latex/contrib/oberdiek/
rotating:   CTAN: macros/latex/contrib/rotating
epslatex:   CTAN: info/epslatex.ps
            CTAN: info/epslatex.pdf
 


--- DE-TeX-FAQ Ende Teil 5 ---
