Oliver: LaTeX: Überschriften und Inhaltsverzeichnis

Liebe Selfforumsgemeinde,

ich weiß, dass sich dieses Forum auf Webtechnologien spezialisiert hat, trotzdem wage ich eine Frage zu LaTeX zu stellen.

Um Überschriften (section-, subsection, etc.-Umgebungen) nach meinen Wünschen zu formatieren, verwende ich in etwa folgenden Befehl:

\renewenvironment{section}[1]{\Large \bf #1 \addcontentsline{toc}{section}{\numberline{\bf \thesection.}  #1} \ [1mm]}.

Der Befehl "\addtocontentsline", den ich so in einem LaTeX-Buch gefunden habe, ist nötig, da durch die Neuformatierung leider das automatische Hinzufügen der Überschrift ins Inhaltsverzeichnis wegfällt.

Während jedoch eine normale toc-Datei in etwa so aussieht:

\contentsline {section}{\tocsection {}{1}{Überschrift 1}}{1}

und damit das Inhaltsverzeichnis leicht über den Befehl \renewenvironment{tocsection} neu formatiert werden kann, sieht mit Verwendung obigen Befehls zur Neuformatierung von Überschriften die toc-Datei etwa so aus:

\contentsline {section}{\hbox to@tempdima {\bf 1.\hfil } \hskip 2em\relax Überschrift 1}{1}.

Eine Formatierung des Inhaltsverzeichnisses über \renewenvironment{contentsline} schlägt fehl, da LaTeX dann den Befehl zum Hinzufügen des Inhaltsverzeichnisses (\tableofcontents) nicht mehr versteht.

Meine Frage ist nun: Wie kann ich sowohl Überschriften im Text (das, was ich mit \renewenvironment{section} versucht habe) als auch das Inhaltsverzeichnis neu formatieren?

Mögliche Lösungen wären:

  • Ein Befehl, der Überschriften neu formatiert, jedoch das standardmäßige Hinzufügen zum Inhaltsverzeichnis nicht zerstört (würde ich bevorzugen).
  • Eine Möglichkeit, Überschriften manuell (das heißt, durch einen Befehl in \renewenvironment{section}) zum Inhaltsverzeichnis hinzuzufügen, jedoch so, dass in der toc-Datei \tocsection auftaucht.
  • Eine Möglichkeit, \contentsline zu formatieren, so dass LaTeX das weiterhin als Eintrag im Inhaltsverzeichnis anerkennt.

Vielen Dank für alle hilfreichen Antworten.

  1. Hallo,

    Meine Frage ist nun: Wie kann ich sowohl Überschriften im Text (das, was ich mit \renewenvironment{section} versucht habe) als auch das Inhaltsverzeichnis neu formatieren?

    schau Dir mal die Pakete "titlesec" und "titletoc" an, die scheinen genau das zu sein, was Du suchst[1]. Wenn Du Dir das dazugehoerende DVI-File durchliest, beginne ganz hinten (Kap. 10), es koennte sein, dass die dort erwaehnten Pakete auch schon fuer Dich ausreichen.
    http://www.comnets.rwth-aachen.de/doc/tex/titlesec.dvi

    [1] Bevor Du jetzt anfaengst zu googlen, schau erst mal auf Deiner eigenen Platte/LaTeX-Installation nach, zumindest unter Debian gehoeren die Pakete zu einer kompletten tetex-Installation dazu.

    Gruss
    Thomas

    1. Hallo,

      Meine Frage ist nun: Wie kann ich sowohl Überschriften im Text (das, was ich mit \renewenvironment{section} versucht habe) als auch das Inhaltsverzeichnis neu formatieren?

      schau Dir mal die Pakete "titlesec" und "titletoc" an, die scheinen genau das zu sein, was Du suchst[1]. Wenn Du Dir das dazugehoerende DVI-File durchliest, beginne ganz hinten (Kap. 10), es koennte sein, dass die dort erwaehnten Pakete auch schon fuer Dich ausreichen.
      http://www.comnets.rwth-aachen.de/doc/tex/titlesec.dvi

      [1] Bevor Du jetzt anfaengst zu googlen, schau erst mal auf Deiner eigenen Platte/LaTeX-Installation nach, zumindest unter Debian gehoeren die Pakete zu einer kompletten tetex-Installation dazu.

      Na, da ist dann aber CTAN eine bessere Quelle ;-)

      ftp://ftp.informatik.uni-hamburg.de/tex-archive/macros/latex/contrib/supported/titlesec.tar.gz

      so short

      Christoph Zurnieden

      1. Hallo,

        Na, da ist dann aber CTAN eine bessere Quelle ;-)

        mag sein, aber

        1. der Link nach Aachen ist der erste, den Google bei der Suche nach titlesec.dvi ausgespuckt hat
        2. Ich finde CTAN/Dante sehr unuebersichtlich.

        Punkte 2 spricht vermutlich fuer das LaTeX-Paket von Debian, da ist halt so alles dabei, was man/frau braucht und daher kenne ich mich bei Dante auch zugegebenermassen nicht gut aus.

        Gruss
        Thomas

        1. Hallo,

          Na, da ist dann aber CTAN eine bessere Quelle ;-)

          mag sein, aber

          1. der Link nach Aachen ist der erste, den Google bei der Suche nach titlesec.dvi ausgespuckt hat

          Gut. Du mußt aber zugeben nur deshalb Google bemüht zu haben, weil

          1. Ich finde CTAN/Dante sehr unuebersichtlich.

          ;-)

          Obwohl: ich kann Dir da aus vollstem Herzen zustimmen. *sigh*

          Punkte 2 spricht vermutlich fuer das LaTeX-Paket von Debian, da ist halt so alles dabei, was man/frau braucht und daher kenne ich mich bei Dante auch zugegebenermassen nicht gut aus.

          Naja, das ist dann aber auch wieder der nervende Streit, welche Distribution (Tex/Latex/"Gnu/Linux"/"was auch immer") die bessere ist. Irgendwo fehlt immer bei allen irgendetwas, da man es nie _allen_ rechtmachen kann.

          so short

          Christoph Zurnieden

  2. Hi Oliver,

    ich weiß, dass sich dieses Forum auf Webtechnologien spezialisiert hat, trotzdem wage ich eine Frage zu LaTeX zu stellen.

    Da gab,gibt und wird es immer "schlimmeres" geben ;-)

    Um Überschriften (section-, subsection, etc.-Umgebungen) nach meinen Wünschen zu formatieren, verwende ich in etwa folgenden Befehl:

    \renewenvironment{section}[1]{\Large \bf #1 \addcontentsline{toc}{section}{\numberline{\bf \thesection.}  #1} \ [1mm]}.

    Wie heißt es so schön in 'xtem'?:
     *  LaTeX-Anweisungen sollten wegen möglicher Seiteneffekte möglichst nicht umdefiniert werden.
    ;-)

    Das ist in Latex selber schlecht zu machen, fält mir zumindest nichts auf die Schnelle ein. Da wirst Du runter auf Tex gehen müssen.

    (Alle Beispiele zur Dokumentklasse "article" (Quellen sind in "article.cls"))

    Latex selber formatiert Einrückung und Schrift von "section" z.B. so:

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

    (Alles muß in eine Zeile, deshalb die Kommentarzeichen _vor_ dem Zeilenende)

    Also wäre es am einfachsten so vorzugehen (in die Präamble, also vor \begin{document}):

    \makeatletter
    \renewcommand\section{@startsection {section}{1}{\z@}%
                                       {-3.5ex @plus -1ex @minus -.2ex}%
                                       {2.3ex @plus.2ex}%
                                       {\itshape\huge\ttfamily}}
    \makeatother

    Danach wie üblich mindestens zweimal (Latex sagt aber normalerweise Bescheid, ob noch ein weiterer Lauf nötig ist) drüberlaufen lassen, um das Inhaltsverzeichniss zu erzeugen
    Möchte übrigens darauf hinweisen, das die Überschrift vom Inhaltsverzeichnis ("Inhaltsverzeichnis" beim paket german) auch eine "section" bei article ist und das die Formatierung der Inhaltsverzeichniseinträge (das deutsche kann schon schöne Wortmonster bilden, was? ;-) nicht geändert wird.
    Letzteres habe ich jetzt nicht rausgesucht, das versteckt sich etwas besser ;-)

    Die Einrückungsangaben konnte ich jetzt auf die Schnelle nicht rausfummeln, mußt Du also leider selber tun (aber in \z@ ist z.B. die Nummerierung).
    Oder einen _richtigen_ TeX Guru fragen ;-)

    so short

    Christoph Zurnieden

    1. Hi Oliver,

      Nachtrag da unvollständig.
      'tschuldigung.

      Das alles gilt nur für Latx 2e.

      (Alles muß in eine Zeile, deshalb die Kommentarzeichen _vor_ dem Zeilenende)

      Also wäre es am einfachsten so vorzugehen (in die Präamble, also vor \begin{document}):

      \makeatletter
      \renewcommand\section{@startsection {section}{1}{\z@}%
                                         {-3.5ex @plus -1ex @minus -.2ex}%
                                         {2.3ex @plus.2ex}%
                                         {\itshape\huge\ttfamily}}
      \makeatother

      Danach wie üblich mindestens zweimal (Latex sagt aber normalerweise Bescheid, ob noch ein weiterer Lauf nötig ist) drüberlaufen lassen, um das Inhaltsverzeichniss zu erzeugen
      Möchte übrigens darauf hinweisen, das die Überschrift vom Inhaltsverzeichnis ("Inhaltsverzeichnis" beim paket german) auch eine "section" bei article ist und das die Formatierung der Inhaltsverzeichniseinträge (das deutsche kann schon schöne Wortmonster bilden, was? ;-) nicht geändert wird.

      Die Überschrift vom Inhaltsverzeichnis ("Inhaltsverzeichnis" beim paket german) bleibt gleich, wenn obiger Befehl _nach_  \tableofcontents gesetzt wird.
      Die Einträge des Inhaltsverzeichnisses (ohne die Überschrift "Inhaltsverzeichnis") kannst Du ganz grob und allgemein z.B. so ändern:

      \textit{\tableofcontents}

      Davon sind dann aber _alle_ Einträge betroffen.

      Die Einrückungsangaben konnte ich jetzt auf die Schnelle nicht rausfummeln, mußt Du also leider selber tun (aber in \z@ ist z.B. die Nummerierung).

      Das habe ich jetzt nicht mehr getan, dazu bin ich Augenblick viel zu fau^H^H^Hbeschäftigt ;-)

      Oder einen _richtigen_ TeX Guru fragen ;-)

      news:comp.text.tex (In der Hoffnung, daß solch ein Link auch funktioniert ;-)

      Englischsprachige Newsgroup. Die dazugehörigen FAQs reichen in den meisten Fällen sogar schon aus ;-)

      so short

      Christoph Zurnieden

      1. news:comp.text.tex
        (In der Hoffnung, daß solch ein Link auch funktioniert ;-)

        </faq/#Q-19>

        1. Hallo,

          news:comp.text.tex
          (In der Hoffnung, daß solch ein Link auch funktioniert ;-)

          Da ist ein ";-)" dahinter!

          Auszug aus den Jargon-files:

          Applied especially to parodies, absurdities, and ironic jokes that are both intended and perceived to contain a possibly disquieting amount of truth, or truths that are constructed on in-joke and self-parody.

          </faq/#Q-19>

          [ ] Du hast den Thread sorgfältig und vollständig gelesen und Dir ist dabei aufgefallen, das ich insbesondere auf die FAQ der angesprochenen Newsgroup hinwies.

          [ ] Du hast </faq/#Q-19> selber gelesen und weißt deshalb, das Leerzeichen nicht nötig sind.

          [ ] Du weißt, das nach dem Posten das Gepostete noch einmal auftaucht und so kontrolliert werden kann und so durch ein direktes Folgeposting evt Felher ausgebügelt werden können, die streng nach Murphy immer erst direkt nach dem Posten auffallen.

          Alles weitere zum Thema per PM oder am besten gleich > /dev/null.

          so short

          Christoph Zurnieden

  3. Vielen Dank für die Antworten. Ich hab die Vorschläge zwar noch nicht ausprobiert, jedoch war schon das Lesen der Beiträge sehr lehrreich.