dantefaq:verzeichnisse

%META:TOPICINFO{author=“HerbertVoss” date=“1454446605” format=“1.1” version=“1.9”}% %META:TOPICPARENT{name=“WebHome”}%

Gliederung, Inhalts-, Abbildungs- und andere Verzeichnisse

Inhaltsverzeichnis

Die Seitennummer wird in eine Box der Breite \@pnumwidth gesetzt. Der in den Standardklassen hierfür verwendete Wert von 1.55em kann in manchen Situationen (Seitennummer >=1000, breiterer Font) zu klein sein. Abhilfe:

\renewcommand\@pnumwidth{2em}% statt `2em' evtl. groesserer Wert 

Eventuell muß man dann auch den Wert im Makro \@tocrmarg anpassen. Da man ein internes Makro ändert, ist diese Anweisung in eine .sty-Datei oder mit \makeatletter … \makeatother geklammert in die Dokumentpräambel zu schreiben.

Längere Abschnittsnummern können eine andere Ursache dieses Fehlers sein. Hier muß man in den Definitionen der Makros \l@<type>, wie z.B. \l@section, im Aufruf des Makros \@dottedtocline das dritte Argument entsprechend vergrößern. Näheres hierzu im Buch ,,Der LaTeX-Begleiter`` (siehe Literatur).

In der Datei der verwendeten Klasse wird das Aussehen einer Zeile in den Verzeichnissen durch ein Makro namens ,\l@<typ>` festgelegt. Für eine \subsection ist dies das Makro \<l@subsection>, das z.B. in ,,article.cls`` durch

\newcommand\l@subsection{\@dottedtocline{2}{1.5em}{2.3em}} 

definiert ist. Die Länge 1.5em gibt an, wie breit der Einschub vom linken Rand ist, die Länge 2.3em, wie breit der Platz für die Abschnittsnummer sein soll. Will man diese vergrößern, kann man dies beispielsweise mit <verbatim>\renewcommand\<l@subsection{>\@dottedtocline{2}{1.5em}{3.3em}} </verbatim> in einer .sty-Datei oder mit \makeatletter … \makeatother geklammert in der Dokumentpräambel. Mehr dazu findet man im Buch ,,Der LaTeX-Begleiter``.

Sehr viel einfacher geht dies mit dem Paket ,tocloft`<a name=“4” id=“4”></a>, das einem die volle Kontrolle über die Formatierung der einzelnen Verzeichnisse erlaubt. Es benötigt noch das Paket ,stdclsdv`.

Weitere Möglichkeiten sind in der KOMA-Script-Sammlung gegeben. So unterstützen beispielsweise die KOMA-Script-Klassen die Option,toc=flat`, bei der eine alternative Formatierung des Inhaltsverzeichnisses gewählt wird, bei der der benötigte Platz automatisch bestimmt wird. Darüber hinaus ist in der KOMA-Script-Sammlung das Paket ,tocstyle` enthalten, das unterschiedliche Verzeichnisformatierungen mit automatischer Berechnung des benötigten Platzes für die Nummern bietet. | tocloft: | macros/latex/contrib/tocloft | | stdclsdv: | macros/latex/contrib/stdclsdv | | KOMA-Script: | macros/latex/contrib/koma-script |

Jeder Gliederungsebene ist in LaTeX eine Nummer zugeordnet: <p align=“left”> </p>

-1part 1section 3subsubsection5subparagraph
0 chapter2subsection4paragraph

Bei der Klasse ,article` existiert der Befehl \chapter nicht, und \part erhält die Nummer 0 zugeordnet.

Die Gliederungsebene, bis zu der numeriert wird, legt der Zähler ,secnumdepth` fest. Die Standardklassen setzen diesen Zähler auf den Wert 2, also bis \subsection. Um auch für tieferliegende Ebenen eine Numerierung zu erhalten, muß der Zähler entsprechend erhöht werden. Mit \setcounter{secnumdepth}{4} werden die Überschriften der Ebenen bis \paragraph mit einer Nummer versehen, auch wenn dies nur in den allerwenigsten Fällen sinnvoll ist.

Um die Numerierung von Überschriften im Dokument vollständig zu verhindern, muß man den Zähler ,secnumdepth` auf den Wert -2 gesetzt werden. Ein Inhaltsverzeichnis wird dennoch erzeugt, da dies durch den Zähler ,tocdepth` gesteuert wird.

Die LaTeX-Anweisungen \section, \subsection etc. werden in den Klassendateien wie z.B. ,,article.cls`` definiert. (In LaTeX 2.09 wurden sie dagegen in den Hilfsdateien wie z.B. ,,art10.sty`` definiert.) Die Definitionen verwenden dabei die allgemeinere Anweisung \@startsection, in deren sechstem Argument man Formatieranweisungen angeben kann. Zur Änderung kopiert man sich die Definition aus ,,article.cls`` bzw. die entsprechende Klassendatei in eine .sty-Datei, ändert \newcommand (bzw. \def) zu \renewcommand und fügt die Anweisung \centering zu den bestehenden Formatieranweisungen hinzu:

\renewcommand{\section}{%
  \@startsection {section}{1}{\z@}%
                 {-3.5ex plus -1ex minus -.2ex}%
                 {2.3ex plus.2ex}%
                 {\normalfont\Large\bfseries \centering}}

Man vergesse nicht, diese Definition mit \makeatletter … \makeatother zu klammern oder in eine .sty-Datei zu schreiben!

Mit dem Paket ,titlesec`<a name=“7” id=“7”></a> können Abschnittsüberschriften noch einfacher angepaßt werden. Beispielsweise erhält man mit

\usepackage{titlesec}
\titleformat{\section}%
  {\normalfont\Large\bfseries \filcenter}%
  {\thesection}%
  {1em}%
  {}%

eine Zentrierung der \section-Überschriften. Hierbei wurde \filcenter, eine spezielle Anweisung des Pakets verwendet, jedoch kann auch \centering verwendet werden. Die Anweisung \titleformat hat ein optionales Argument, mit dem man beispielsweise wie bei \paragraph eingebettete oder in den Rand ragende Überschriften erhalten kann. Abstände zwischen Überschrift und Text werden mit der Anweisung \titlespacing vorgegeben.

Ebenso erleichtert das Paket ,sectsty` die Änderung der Abschnittsüberschriften in den LaTeX-Standardklassen.

Bei Verwendung einer aktuellen Version der -Klassen lassen sich beispielweise die Schriftart, die Ausrichtung sowie weiteres ebenfalls leicht anpassen. | titlesec: | macros/latex/contrib/titlesec | | sectsty: | macros/latex/contrib/sectsty | | KOMA-Script: | macros/latex/contrib/koma-script/ |

Ebenso wie der Zähler ,secnumdepth` die Gliederungsebene festlegt, bis zu der Abschnitte numeriert werden, legt der Zähler ,tocdepth` die Gliederungsebene fest, bis zu der Abschnitte in das Inhaltsverzeichnis aufgenommen werden. Beispielsweise werden nach der Anweisung \setcounter{tocdepth}{4} alle Abschnitte einschließlich der \paragraph-Ebene in das Inhaltsverzeichnis aufgenommen (siehe dazu hier). Diese Anweisung muß in der Präambel, auf jeden Fall vor \tableofcontents verwendet werden.

Der Zähler ,tocdepth` wird nur beim \tableofcontents ausgewertet, also nur beim Satz und nicht bei der Erstellung der .toc-Datei. Daher hat eine Änderung von ,tocdepth` nach dem Befehl \appendix keine Wirkung. Stattdessen muß man dafür sorgen, daß die Änderung von ,tocdepth` mit \addtocontents in die .toc-Datei gelangt:

\documentclass{article}
%
\newcommand{\settocdepth}[1]{%
  \addtocontents{toc}{\protect\setcounter{tocdepth}{#1}}}
%
\begin{document}
\tableofcontents
\section{Abschnitt}
\subsection{Unterabschnitt}
blabla
%
\appendix
\settocdepth{1}
%
\section{Abschnitt}
\subsection{Unterabschnitt}
\subsubsection{Unterunterabschnitt}
blabla
\end{document}

Diese Verzeichnisse werden normalerweise nicht in das Inhaltsverzeichnis aufgenommen. Wenn dies dennoch notwendig ist oder erwünscht wird, kann man es am einfachsten mit den Dokumentklassen des KOMA-Script-Paketes erreichen, da diese Klassen die hierfür gedachten Optionen ,liststotoc`, ,bibtotoc` bzw. ,bibtotocnumbered` und ,idxtotoc` kennen.

Bei Verwendung anderer Klassen kann eventuell das Paket ,tocbibind`<a name=“11” id=“11”></a> weiterhelfen. Ansonsten könnte man als letzte Lösung unmittelbar vor die Anweisungen \bibliography, \listoftables, \listoffigures und \printindex die Anweisungen

\clearpage
\addcontentsline{toc}{section}{\refname}

schreiben. Statt \refname ist evtl. \bibname bzw. \listtablename, \listfigurename oder \indexname einzusetzen; ,section` kann bei Verwendung der Dokumentklassen ,report` und ,book` durch ,chapter` ersetzt werden. Außerdem muß bei Verwendung der Klassenoption ,twoside`, die bei ,book` voreingestellt ist, \clearpage durch \cleardoublepage ersetzt werden.

Mit dem Paket ,titletoc`<a name=“13” id=“13”></a>, das zusammen mit dem Paket ,titlesec` verteilt und dokumentiert wird, kann man sehr frei die Formatierung der Inhaltsverzeichniseinträge ändern. Daneben gibt es noch das Paket ,tocloft`, mit dem man ebenso die Formatierung des Inhalts-, Abbildungs- und Tabellenverzeichnisses anpassen kann. | titletoc/titlesec: | macros/latex/contrib/titlesec/ | | tocloft: | macros/latex/contrib/tocloft/ |

Das Paket ,titleref`<a name=“15” id=“15”></a> stellt hierzu die Anweisung \titleref, der analog zu \ref und \pageref den Text einer Abschnittsüberschrift oder Abbildungsunterschrift liefert. Hierzu muß die Anweisung \label nach den Abschnittsanweisungen und \caption erfolgen und darf nicht im Argument angegeben werden.

Im ,hyperref`-Bündel existiert mit ,nameref` ein weiteres Paket, das diese Funktionalität anbietet. Dieses definiert die Anweisung \nameref. Insbesondere im Zusammenhang mit der Erzeugung von pdf-Dateien sollte diese Lösung bevorzugt werden. | titleref: | macros/latex/contrib/misc/titleref.sty | | nameref: | macros/latex/contrib/hyperref/ |

Hierfür muß man die Umgebung ,thebibliography`<a name=“17” id=“17”></a> bzw. ,theindex` umdefinieren. Man kopiert sich dazu die Definition dieser Umgebungen aus der Klassendatei in eine eigene Paketdatei, ersetzt die Anweisung \newenvironment durch \renewenvironment. Anschließend fügt man zwischen der Überschrift, die mit \section oder \chapter erzeugt wird und der Listen-Umgebung die Anweisungen

<verbatim>\renewenvironment{\thebibliography}[1]{%
  \section*{\refname
    \@mkboth{\MakeUppercase\refname}{\MakeUppercase\refname}}%
  % vvvv--- neu
  \thebibliographyhook
  \renewcommand{\thebibliographyhook}{}%  Hook ruecksetzen
  % ^^^^--- neu
  \list{\@biblabel{\arabic{enumiv}}}%
</verbatim> ... 

wie hier für ,thebibliography` gezeigt, ein.

Für das Stichwortverzeichnis werden diese Zeilen, diesmal mit \theindexhook, in die entsprechend zu ändernde Definition der Umgebung ,theindex` eingefügt. Bei dieser muß man darauf achten, die beiden Zeilen in das optionale Argument der Anweisung \twocolumn einzufügen, wenn der Text über beide Spalten gehen soll.

Schließlich werden diese ,,Haken`` mit der neuen Definition

\newcommand{\thebibliographyhook}{} % Standard-Wert: kein Text
\newcommand{\theindexhook}{} % Standard-Wert: kein Text

auf einen Wert gesetzt, der das bisherige Verhalten nicht verändert. Will man nun zusätzlichen Text einfügen, so wird der jeweilige Hook direkt vor dem entsprechenden Verzeichnis per \renewcommand auf den gewünschten Text gesetzt.

Von Version 2.6c an bieten die Dokumentklassen des KOMA-Script-Paketes einen noch einfacheren Weg mit den Anweisungen ,\setbibpreamble` und ,\setindexpreamble`. | KOMA-Script: | macros/latex/contrib/koma-script/ |

Die Zweispaltigkeit des Stichwortverzeichnisses ist in vielen Klassen (article, KOMA-Klassen u. a.) fest codiert. Eine Möglichkeit ist, die theindex-Umgebung der verwendeten Klasse zu ändern. Eine andere Möglichkeit ist, \twocolumn vorübergehend wirkungslos zu machen: Schreibe dort, wo Du \printindex schreiben würdest:

{\renewcommand\twocolumn[1][]{#1}\printindex} 

Zu diesem Zweck geeignet sind die LaTeX-Pakete ,camel`<a name=“19” id=“19”></a> und ,multind`. | camel: | macros/latex/contrib/camel/ | | multind: | macros/latex209/contrib/misc/multind.sty |

Diese Besonderheit verschwindet mit einer aktuelleren Version des Paketes ,fanycbox`<a name=“21” id=“21”></a>, mindestens Version 1.3. Um sicherzustellen, daß man eine einigermaßen aktuelle Version benützt, kann man beim Laden des Pakets das Datum angeben:

\usepackage{fancybox}[2000/09/19] 

Mit dem Paket ,showkeys`<a name=“23” id=“23”></a> aus dem ,tools`-Bündel werden alle Querverweise im Dokument als Marginalien gesetzt.

Eine Liste der Labels eines Dokuments erhält man mit Hilfsdokument ,,lablst.tex``, das zu Beginn den Namen des Dokuments, die Dokumentklasse als auch die durch Kommata getrennte Liste aller verwendeten Pakete erfrägt. Dieses Hilfsdokument liegt jeder LaTeX-Verteilung bei. | lablst.tex: | macros/latex/base/ | | showkeys: | macros/latex/required/tools/ |

All dies und vieles mehr wird automatisch von dem Paket ,hyperref`<a name=“25” id=“25”></a> erledigt. Neben der automatischen Erzeugung von Hyperlinks und Bookmarks stellt das Paket zusätzliche Befehle zur Verfügung, mit denen Benutzer ihren Dokumenten weitere Hypertext-Elemente hinzufügen können. Auch das Setzen bestimmter PDF-Dokumenteigenschaften (Autorinformationen, Seitenübergänge) und die ,,Steuerung`` des ,acroread` aus einem Dokument heraus sind mit dem Paket möglich. | hyperref: | macros/latex/contrib/hyperref/ | | hyperref ( beta -Version): | http://www.tug.org/applications/hyperref/ |

Da es sehr viele Methoden gibt, LaTeX-Dokumente in PDF zu wandeln, wobei die dafür verwendeten Programme jeweils eine andere Notation verwenden, wie Links angegeben werden, ist ,hyperref`<a name=“27” id=“27”></a> auf die Verwendung von ,Treibern` angeweisen, die für jede Methode der PDF-Erstellung festlegen, wie Links spezifiziert werden.

Wird kein Treiber explizit angegeben (als Paketoption; die Dokumentation erklärt, wie das geht), so muss ,hyperref` raten, welcher Treiber zu verwenden ist. Wird pdfTeX zur Übersetzung verwendet, so wird automatisch der passende Treiber verwendet; bei Benutzung von LaTeX ist der Standardtreiber jedoch fast immer ,hypertex`, was beispielsweise von ,xdvi` und ,yap` verstanden wird, jedoch zur Umwandlung in PDF ungeeignet ist.

Wenn dieser (falsche) Treiber verwendet wird, so ist in der Protokolldatei die Zeile

  *hyperref using default driver hypertex* 

zu finden.

In diesem Fall muss das Paket breakurl geladen werden:

\usepackage{hyperref}
\usepackage{breakurl}

Das Paket ,hyperref`<a name"29" id="29"></a> kennt die Option =breaklinks, die festlegt, ob Links umbrochen werden dürfen. Diese Option ist bei Verwendung von pdfLaTeX automatisch aktiv, bei dvips oder ps2pdf aber nicht, da der im letzteren Fall verwendete pdfmark-Mechanismus einen Umbruch von Links nicht zulässt. In diesem Fall muss dann das Paket breakurl nach hyperref geladen werden:

\usepackage{hyperref}
\usepackage{breakurl}

Um ein Wortverzeichnis mit Erklärungen oder im weiteren Sinne ein Verzeichnis von benutzten Begriffen mit Erklärungen, wie beispielsweise von Formelzeichen oder von Abkürzungen, zu erstellen, bietet LaTeX mit den Anweisungen \makeglossary und \glossary die Möglichkeit, Einträge vorzunehmen. Jedoch verbleibt es beim Autor, diese Einträge zu sortieren und zu formatieren.

Um die Einträge zu sortieren wird meist ,makeindex`<a name=“31” id=“31”></a>, ,xindy` oder BibTeX, eventuell ergänzt um ein Zusatzprogramm, verwendet. Zur Formatierung und zur leichteren oder differenzierteren Eingabe verwendet man ein entsprechendes LaTeX-Paket.

Das Paket ,nomencl` ist entstanden, um Verzeichnisse von Formelzeichen anzulegen, kann aber darüberhinaus noch mehr. Datenbanken mit Abkürzungen etc. verwaltet das Paket ,gloss` mit Hilfe von BibTeX. Das Tool ,glosstex` erstellt automatisch ein Glossar, ein Abkürzungsverzeichnis oder ganz allgemein sortierte Listen. Es kombiniert die Funktionalität von ,acronym`, ,nomencl` und ,glotex` und kann ebenfalls Datenbanken verwalten. Mit dem Paket ,makeglos` kann in ein Dokument ein Glossar eingebunden werden, das beispielsweise mit ,makeindex` oder ,xindy` erstellt wurde. Dieses Paket ist weniger umfangreich als ,glosstex`. | nomencl: | macros/latex/contrib/nomencl | | gloss: | macros/latex/contrib/gloss | | glosstex: | support/glosstex/ | | acronym: | macros/latex/contrib/acronym | | glotex: | indexing/glo+idxtex/ | | makeglos: | macros/latex/contrib/makeglos |

– Main.HerbertVoss - 17 Mar 2009

  • dantefaq/verzeichnisse.txt
  • Last modified: 2023/02/28 10:39
  • by 127.0.0.1