Grundsätzlich 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`` enthält genauere Informationen und wichtige Hinweise - bitte durchlesen!
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/ |
|
Für jeden LaTeX-Patch benötigt man immer zumindest die Datei ,,patches.txt``. Sie beschreibt genau, welche weitere Dateien man noch zu einem kompletten Patch benötigt. In vielen Fällen gibt es neben der Datei ,,ltpatch.ltx``, die LaTeX-Kernel-Patches enthält, noch neue Versionen weiterer Dateien! Näheres 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 |
Dateien mit ,.dtx` sind sogenannte ,docstrip archive files`, also ein Archiv, aus dem man mit dem Programm ,docstrip` verschiedene Dateien entpacken kann. Zum Entpacken benötigen Sie nur die Datei ,,docstrip.tex`` oder ,,docstrip.dtx`` und das Programm TeX. ,,docstrip.tex`` können Sie mit LaTeX 2.09, LaTeX2e und auch mit Plain-TeX verwenden.
Wie Sie eine ,.dtx`-Datei entpacken müssen, sollten Sie aus einer Beschreibung zu Beginn der ,.dtx`-Datei oder einer separaten README-Datei entnehmen können. Existiert eine gleichnamige Datei mit Endung ,.ins`, so können Sie in den meisten Fällen 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. Näheres 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 benötigen Sie jedoch ein installiertes LaTeX2e - für 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 fileund einen anschließenden erneuten LaTeX-Lauf erzeugt werden.
Bei der Erzeugung der Dokumentation wird der dokumentierte Quellcode meist nicht aufgenommen; um ihn einzuschließen, kann vor dem LaTeX-Lauf im aktuellen Verzeichnis eine Datei ,,ltxdoc.cfg`` angelegt werden, die die folgende Zeile enthält:
\AtBeginDocument{\AlsoImplementation}Näheres 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!) |
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.
Für nachträglich 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. Gehören 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. Näheres sollte in der README-Datei des Pakets erläutert 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. Näheres finden Sie in der Dokumentation Ihres TeX-Systems und unter Frage 8.5.10.
Einige TeX-Systeme bieten ein Konfigurations-Werkzeug, um zusätzliche Pakete nachträglich 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 für die Aktualisierung der Dateinamens-Datenbank.
Managing a one-person TeX system: | http://www.ctan.org/installationadvice/ |
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 anschließend alle notwendigen Änderungen durchzuführen. Hierzu bietet LaTeX eine Reihe von Möglichkeiten, die in der Dokumentation für Klassen-Autoren ,,clsguide.tex`` beschrieben sind. Als einfaches Beispiel hätte 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 enthält nur die notwendigen Änderungen und Ergänzungen. Ändert sich an der verwendeten Klasse etwas, z.B. werden Fehler korrigiert, so sind in den meisten Fällen 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 eingefügten \listfiles auftauchen.
clsguide.tex: | CTAN: macros/latex/base/ |
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. Nähere Informationen finden sich in der Dokumentation für Autoren ,,usrguide.tex``.
usrguide.tex: | CTAN: macros/latex/base/ |
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/ |
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 nächste Makro aufrufen.
Hier ist ein Beispiel für 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 Möglichkeit 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/ |
Im Unterschied zu den geschwungenen Klammern {...}
, die immer
paarweise und korrekt geschachtelt werden müssen, sucht LaTeX bei
eckigen Klammern einfach nach der nächsten schließenden eckigen
Klammer ]
, ohne auf korrekte Schachtelung dieser Klammern zu
achten. Um dies zu verhindern, muß man einfach innerhalb der eckigen
Klammern [...]
ein geschweiftes Klammerpaar einfügen, wie
dies hier als Beispiel für \twocolumn gezeigt wird:
\twocolumn[{ ... \sqrt[3]{x^2} ... }]
Diese Namen für 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}für PiCTeX.
rawfonts.sty: | CTAN: macros/latex/required/ |
Mit dem Paket ,newlfont` erhält man das Verhalten von NFSS v1, ohne daß man in den meisten Fällen das Dokument ändern muß:
\usepackage{newlfont}
Für neue Dokumente sollte man jedoch besser gleich die neuen
Anweisungen \textrm{...}
, \textbf{...}
,
\textit{...}
etc. verwenden. Diese Anweisungen haben darüber
hinaus den Vorteil, daß eine eventuell notwendige ,italic
correction` automatisch eingefügt wird.
newlfont.sty: | CTAN: macros/latex/required/ |
Die LaTeX-Symbolschriften ,lasy10` und ,lasyb10` enthalten nur sehr wenige relativ selten benutzte Symbole. Daher werden diese Schriften in LaTeX2e nicht mehr standardmäßig geladen, sondern müssen vom Benutzer durch Laden von ,latexsym` aktiviert werden:
\usepackage{latexsym}
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 Längenregister für andere Zwecke einsetzen zu können.
Zur Anpassung von alten Dokumentstilen an LaTeX2e kann man daher
eine Zuweisung an diese Parameter einfach ersatzlos streichen.
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, angepaßt werden
müssen. Bei den Standard-Dokumentklassen hat das niemand bemerkt, da die
notwendigen Anpassungen dieser Dateien automatisch mit einer neuen
LaTeX-Version mitinstalliert werden.
Die ,,alten`` Trennmuster wurden von Hand so angepaßt, 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``) verfügbar. Um diese Trennmuster nutzen zu können, benötigt man ,,german.sty`` ab Version 2.5e.
dehyphn: | CTAN: language/hyphenation/dehyphn.tex |
german.sty: | CTAN: language/german/ |
Wie TeX Worte mit Umlauten trennt, hängt davon ab, ob die verwendete Schrift Umlaute als eigene Lettern enthält 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 für 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 hierfür 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 Präambel des Dokuments verwenden.
Auch hier gilt, daß man in \hyphenation in den Trennungsausnahmen nur Zeichen verwenden kann, für 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 müssen, kann man für Wörter 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 für 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}
TeX kennt die Parameter \widowpenalty und \clubpenalty, mit denen man die ,Strafpunkte` festlegen kann, falls ein Hurenkind bzw. ein Schusterjunge beim Seitenumbruch entstehen sollte. Außerdem gibt es noch den Parameter \displaywidowpenalty für Hurenkinder nach einer abgesetzten mathematischen Formel. Da TeX den Wert 10000 als unendlich große Strafe interpretiert, kann man mit den Zeilen
\clubpenalty = 10000 \widowpenalty = 10000 \displaywidowpenalty = 10000Hurenkinder und Schusterjungen komplett unterdrücken. (Das Paket ,schuster` enthält genau diese Zeilen.)
Man sollte jedoch bedenken, daß man bei einem Satzspiegel mit fester Höhe (\flushbottom) und registerhaltigem Satz Hurenkinder und Schusterjungen nur schwerlich verhindern kann - insbesondere wenn man dies bei zweiseitigem Druck für jede Doppelseite beachten muß. Hier ist es oft besser, die einzelne Zeile zuzulassen oder zu versuchen, einen Absatz durch geringfügige Umformulierung eine Zeile länger oder kürzer zu machen.
Weiterhin gibt es die Möglichkeit, Absätze, die schon sehr voll
sind, mit \looseness=1
um eine Zeile zu dehnen oder Absätze,
die recht leer sind, mit \looseness=-1
um eine Zeile zu
kürzen. Manchmal führt dies jedoch zu merklichen Änderungen des
Grauwerts des Absatzes. (Achtung: Der Wert von \looseness gilt
außerhalb von Listen-Umgebungen nur für 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 für einen Absatz gelten soll.)
Eine Anleitung zur Installation der deutschen Trennmuster enthält ,,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`` für 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. Außerdem wurde meist ,,hyphen.tex`` in ,,ushyph1.tex`` umbenannt, um unter dem Namen ,,hyphen.tex`` die Datei ,,hyphen.cfg`` aus Babel auch für Plain-TeX einbinden zu können. In diesem Fall führt ein ,,\input hyphen``, wie im obigen Beispiel beschrieben, zu einer Endlosschleife!
gerdoc: | CTAN: language/german/gerdoc.tex |
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
für diese Schriften unterdrückt, was in den meisten Fällen auch
sinnvoll ist.
Will man dennoch, daß TeX einen in ,typewriter` gesetzten
Textteil automatisch trennt, so muß man den \hyphenchar für
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 könnte 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 geänderten ,*.fd`-Dateien mitzugeben.
Für LaTeX 2.09 (oder analog auch für 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 lädt und für 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 ausgeführt. Außerdem sieht sich TeX diesen Parameter erst am Absatzende beim Umbruch dieses Absatzes an, so daß mit obiger Änderung nicht möglich ist, die Trennung für einen in ,typewriter` gesetzten Textteil zu ermöglichen, für einen anderen im selben Absatz zu verbieten.
Eine weitere Methode, Trennungen für ,typewriter`-Schriften zu erlauben, bietet das Paket ,hyphenat`:
\usepackage[htt]{hyphenat}
Darüber hinaus kann es auch benutzt werden, um Trennung selektiv zu erlauben oder zu verbieten.
hyphenat: | CTAN: macros/latex/contrib/hyphenat/ |
TeX fügt nach dem aktuellen Trennzeichen implizit (fast) immer einen sogenannten \discretionary ein, der wie \- eine explizite Trennstelle angibt. Da sowohl \- als auch \discretionary dazu führen, daß die Trennung in den übrigen Wortteilen unterdrückt wird, werden solche Wörter außer am Trennstrich nicht mehr getrennt. Dieses eigenwillige Verhalten von TeX ist für Sprachen, in denen wenige Bindestriche verwendet werden, günstig und sinnvoll, da zusätzliche Trennungen in solchen Wörtern meist die Lesbarkeit erschweren.
Um Wörter mit Bindestrichen dennoch zu trennen, existieren zwei
Möglichkeiten: Man gibt im Dokumenttext bei diesen Wörtern,
insbesondere wo schlecht getrennt werden kann, mit \- oder
"-
weitere mögliche Trennstellen vor oder man verwendet
"=
anstelle des Bindestrichs. Näheres ist hierzu der
Dokumentation des Paketes ,german` zu entnehmen.
Die andere Möglichkeit, die bislang nur von Experten umgesetzt werden kann, besteht bei Schriften, die eine zweite Letter für einen Bindestrich besitzen. Für diese Schriften kann man diese zweite Letter als Trennstrich deklarieren. Zusammen mit den zusätzlichen Trennmustern in ,,hypht1.tex`` ist damit eine automatische Trennung von Wörtern mit Bindestrichen und deren Aufnahme in die Trennausnahmeliste möglich.
german.sty: | CTAN: language/german/ |
hypht1.tex: | CTAN: language/hyphenation/hypht1.tex |
Die NTG hat verschiedene Klassen entwickelt, die im Vergleich zum Layout der Standard-LaTeX-Klassen kleinere Überschriften und eine einheitlichere Einrückung der Absätze und Listen definieren.
Das KOMA-Script-Paket enthält ebenfalls Klassen (,scrartcl`, ,scrreprt`, ,scrbook` und ,scrlettr`), die die Standardklassen ersetzen. Es wurden dort eine Vielzahl von Änderungen eingeführt, die ein günstigeres Aussehen bewirken. So wird z.B. der Satzspiegel besser an das Papierformat angeglichen. Nähere Einzelheiten enthält die ausführliche Beschreibung in der beigefügten Datei ,,scrguide.dvi``.
KOMA-Script: | CTAN: macros/latex/contrib/koma-script/ |
NTG-Klassen: | CTAN: macros/latex/contrib/ntgclass/ |
Unter LaTeX 2.09 ist ,dinbrief` weit verbreitet, der von anderen Autoren auch für LaTeX2e verfügbar gemacht wurde. Darüber hinaus findet man im KOMA-Script-Paket die Klasse ,scrlettr` und es gibt mit ,g-brief` und ,akletter` noch weitere Beispiele für angepaßte 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 früheren Version ,myletter`, ein schlechter, | |
weil häufig gewählter Name.) |
Mit dem Paket ,typearea` aus dem KOMA-Script-Paket kann man den Anteil des Textbereichs an der Gesamtseite abhängig von der Schriftgröße nach Tschicholds (siehe Frage 2.4.2) n-Teilung der 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 Ränder erfolgt dabei automatisch nach typographischen Gesichtspunkten. Diverse Papiergrößen sowie Hoch- und Querformat werden unterstützt, zusätzliche Formate können definiert werden, und auch die Option ,twoside` wird korrekt behandelt. Ausführliche Informationen dazu findet man in der beigefügten Datei ,,scrguide.dvi``.
Mit diesem Paket, das einem die Berechnung eines wohldefinierten Satzspiegels abnehmen kann, kann man auch die LaTeX-Parameter für 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 können:
\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 FusszeilenabstandEine gute Möglichkeit 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 |
Bei doppelseitiger Formatierung werden die Seitenränder so gewählt, daß sie nicht für eine einzelne Seite sondern für eine aufgeschlagene Doppelseite passen. Bei dieser bilden die Ränder der beiden Seiten drei vertikale weiße Streifen (links außen, mittig, rechts außen), die gleich breit sein sollen. Da der mittlere Streifen aus den Rändern zweier Seiten gebildet wird, sind diese auch nur halb so breit. Aus diesem Grund legt man unter LaTeX die Werte für \evensidemargin und \oddsidemargin, also für den linken Rand der geraden (linken) und den der ungeraden (rechten) Seite, entsprechend fest. Näheres findet sich u.a. in der Dokumentation der KOMA-Script-Klassen.
KOMA-Script: | CTAN: macros/latex/contrib/koma-script/ |
Mit dem Paket ,lastpage` erhält 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 können 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 Fußzeilen eingefügt 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/ |
Mit dem Paket ,scrpage` und den Klassen aus dem KOMA-Script-Paket oder mit dem Paket ,fancyhdr` kann man die Kopf- und Fußzeile einer Seite fast beliebig festlegen. Beide Pakete enthalten eine ausführliche Dokumentation, die auch auf andere Probleme eingeht und dafür Lösungen und Tips hat.
KOMA-Script: | CTAN: macros/latex/contrib/koma-script/ |
fancyhdr: | CTAN: macros/latex/contrib/fancyhdr/ |
Kurzbeschreibung: | CTAN: info/german/fancyhdr/ |
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 zusätzlich 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 Fußnoten und damit tauchen auch für die Anweisung \thanks in der Autorenliste keine Fußnoten auf. Werden diese benötigt, muß man sie von Hand mit \footnotetext nach dem optionalen Argument setzen.
Meist kommt auf diese Frage
Weitergehende Lösungen 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 gehören ,artikel3`, ,rapport3` und ,boek3`, die ebenfalls ein Layout ohne Absatzeinzug und mit zusätzlichen Durchschuß bieten.
Ob man nun den Beginn eines neuen Absatzes mit einem Einzug oder mit einem zusätzlichen Durchschuß markiert, ist immer wieder Anlaß zu mehr oder weniger ausgiebigen Diskussionen. Um einen weitverbreiteten Irrtum auszuräumen: Der einzuglose Satz hat im ,,deutschen Buchsatz`` keine Tradition. Einzugloser Satz, ob nun mit oder ohne zusätzlichen 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/ |
Abgesehen davon, daß man eine solch starke Vergrößerung des Zeilenabstand vermeiden sollte, hilft das Paket ,setspace`:
\usepackage{setspace} \doublespacing % doppelzeilig oder %\onehalfspacing % anderthalbzeilig
setspace: | CTAN: macros/latex/contrib/setspace/ |
Fast alle LaTeX-Klassen definieren die Anweisung \maketitle so, daß für diese Seite mit \thispagestyle auf den Seitenstil ,plain` umgeschalten wird. \thispagestyle überschreibt damit den gewählten Seitenstil für diese eine Seite. Um dies zu verhindern, muß man entweder eine besser geeignete Klasse wählen, die Definition in der Klasse ändern oder folgenden Trick anwenden: Direkt nach der Anweisung \maketitle wird \thispagestyle{empty} eingefügt. Alternativ kann das Paket ,nopageno` verwendet werden.
nopageno: | CTAN: macros/latex/contrib/carlisle/nopageno.sty |
Zu diesem Zweck ist bei der Dokumentenklasse die Klassen-Option ,landscape` anzugeben. Zusätzlich muß dem verwendeten dvi-Treiber die nun vom Standard abweichende Seitengröße 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/ |
Dokumentteile können nur gedreht werden, wenn dies auch vom verwendeten dvi-Gerätetreiber unterstützt wird. In den meisten Fällen 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` enthält das Paket ,lscape`, das eine ,landscape`-Umgebung zur Verfügung 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 ausgeführt:
\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, wäre es wünschenswert, wenn die gedrehten Seiten bei Betrachtung mit ,Acrobat Reader` in aufrechter Schrift, also um 90 Grad gedreht, dargestellt würden. In diesem Fall ist das Paket ,pdflscape` zu verwenden, das wiederum das Paket ,lscape` lädt und um entsprechende PDF-Anweisungen ergänzt:
\usepackage{pdflscape} % ...
Will man nicht ganze Seiten drehen oder stören die implizit ausgeführten \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. Für den Spezialfall, daß eine Abbildung bzw. Tafel wie mit der Umgebung ,landscape` eine komplette Seite füllt und um 90 Grad gegen den Uhrzeigersinn gedreht werden soll, gibt es die den ,figure`- und ,table`- entsprechenden ,sidewaysfigure`- und ,sidewaystable`-Umgebungen. Außerdem ist eine ältere Version dieses Pakets auch für LaTeX 2.09 verfügbar.
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 |
|
detexfaq@dante.de
`
- bitte keine Fragen zu TeX!