Mehrere Inhaltsverzeichnisse

Inhalt, Abbildungen, Tabellen, Quellcodes und andere Verzeichnisse


Hilfe
Forum-Newbie
Forum-Newbie
Beiträge: 2
Registriert: Sa 30. Jan 2021, 16:05

Mehrere Inhaltsverzeichnisse

Beitrag von Hilfe »

Hallo,

ich habe für meine Masterarbeit ein vorgegebenes Schema für die Gestaltung des Inhaltsverzeichnisses.
Es ist gewünscht, dass es ein "globales" Inhaltsverzeichnis zu Beginn gibt. In diesem sollen nur die Kapitelüberschriften aufgeführt werden. In jedem Kapitel soll es ein kapiteleigenes Verzeichnis geben, in dem eine Vielzahl von Unterkapitel aufgeführt werden soll.
Ungefähr so:

Inhaltsverzeichnis

  1. Schubladen

  2. Schränke

  3. Regal

  4. Schubladen
    1.1 Obere Schublade
    1.1.1 Besteckfach
    1.1.1.1 Gabelsorten
    1.1.1.1.1 Kuchengabeln
    1.1.1.1.1.1 Besondere Kuchengabeln
    1.1.1.1.1.1.1 Außergewöhnliche Kuchengabeln

  5. Schränke
    2.1 analog wie oben

  6. Regal
    3.1 analog wie oben

Dabei habe ich nun verschiedene Probleme (die ich in Teilen lösen konnte):

Gelöst:
Das globale Verzeichnis soll nur die Kapitel enthalten. Das konnte ich über \setcounter{tocdepth}{0} realisieren.

Teilgelöst:
Die "tiefe" Nummerierung von Kapiteln ging über \setcounter{secnumdepth}{5}. Damit kann ich bis \subparagraph (1.1.1.1.1.1, also 6 Ebenen tief) zählen. Geht da irgendwie noch mehr?

Mit dem Paket minitoc habe ich es schon geschafft, die Unterverzeichnisse anzulegen. Als Dokumentenklasse hatte ich mir eigentlich vorgestellt, mit scrreport zu arbeiten. Das Programm wirft allerdings folgende Warnung aus:

Class scrreprt Warning: Usage of package minitoc' together
(scrreprt) with a KOMA-Script class is not recommended.
(scrreprt) Nevertheless, using requested
(scrreprt) packageminitoc' on input line 13.

Deswegen habe ich die Klasse zunächst auf report geändert. Das hat jetzt aber zur Folge, dass über jedem Kapitel fett "Kapitel" steht. Das will ich nun aber auch nicht.

Außerdem steht über jedem Unterverzeichnis "Content", auch das gefällt mir nicht. Besser wäre "Inhaltsverzeichnis" oä. Außerdem sind die Unterverzeichnisse mit Linien begrenzt, ich hätte lieber die gleiche Gestaltung wie im "globalen" Hauptverzeichnis.

Kann mir jemand helfen, wie ich diese Sachen gelöst bekomme?

Hier mein Beispielcode bis jetzt:

\documentclass[12pt,a4paper, toc=listof]{scrreport} % Papierformat
\usepackage[utf8]{inputenc}							% Zeichenkodierung

\usepackage[]{minitoc}

\usepackage[ngerman]{babel}							 %deutsche Silbentrennung
\usepackage[style=numeric ]{ biblatex}


%Beginn Dokument
\begin{document}
%--------------------------------Inhaltsverzeichnis-----------------------------------------------------
\dominitoc														%zu minitoc
\label{Inhaltsverzeichnis}
\setcounter{tocdepth}{0}										%Angezeigte Verzeichnistiefe
\tableofcontents 												%Verzeichnis erzeugen
\setcounter{secnumdepth}{5}								%Nummerierungstiefe Einträge
\newpage 

%-------------------1. Kapitel--------------
\chapter{Erstes Kapitel Name}

\setcounter{minitocdepth}{5}	
\minitoc

\section{Passende Überschrift}
Text
\subsection{Und die danach}
Text
\subsubsection{Und die nach der davor}
Text
\paragraph{Und noch eine} $~$ \\ 
Text
%----------------------------------------------2. Kapitel---------------------
\chapter{Zweites Kapitel Name}

\setcounter{minitocdepth}{5}
\minitoc

\section{Passende Überschrift 2}
Text
\subsection{Und die danach 2}
Text

\end{document}

gast

Re: Mehrere Inhaltsverzeichnisse

Beitrag von gast »

Mit Hilfe von LuaTeX ist es relativ einfach, indem man durch Umdefinierung von \defaulttocentry in jedem Kapitel zusätzlich mit \DeclareNewTOC ein Verzeichnis anlegt, in das die Einträge ebenfalls kopiert werden. LuaTeX ist deshalb notwendig, weil sonst nach spätestens 10 Kapiteln no room for new \write Fehler auftreten. Irgendwo wurde auch mal ausgeführt, wie das konkret zu machen ist. Ich finde es nur gerade nicht.


Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Re: Mehrere Inhaltsverzeichnisse

Beitrag von KOMA »

Kleiner Hinweis: Wenn eine Frage zu KOMA-Script im Forum KOMA-Script gestellt wird, werde ich eher darauf aufmerksam.

Wenn man bei den Verzeichniseinträgen Disziplin walten lässt und nicht irgendwelche Dinge einfach mal so eben in die toc-Datei schreibt, geht kann man Kapitelverzeichnisse sogar ohne Änderung an der toc-Datei und ohne zusätzliche Dateien für die Kapitelverzeichnisse realisieren. Ich habe noch einen älteren Entwurf zu einem Paket (eigentlich eher eine Art Vorstudie, um eine Idee auszutesten) auf meinem Rechner gefunden, die noch aus den frühen Tagen von tocbasic stammt. Ich habe daran nur mal eben eine Hook-Anweisung ausgetauscht und zwei Zähler anders gesetzt. Vielleicht hilft Dir das ja als ersten Ansatz weiter:

\documentclass{scrbook}
\usepackage{xpatch}
\usepackage{mwe}

\makeatletter
\def\@currname{chaptertoc}% Only for the prototyping (remove it later)
% \title{Package \textsf{chaptertoc}}
% \author{Markus Kohm}
% \maketitle
% \begin{abstract}
% Providing ToCs per chapter (or part or section etc.) in addition to the
% general ToC.
% \end{abstract}.
%
% The name of the game will change, because sometimes it should ToCs for every
% section level you want. But currently only chapters are supported, so the
% working name is \textsf{chaptertoc}
%    \begin{macrocode}
\ProvidesPackage{chaptertoc}[2021/02/01 v0.0 prototype package]
%     \end{macrocode}
%
% We are using package \textsf{tocbasic}.
%    \begin{macrocode}
\RequirePackage{tocbasic}
%    \end{macrocode}
%
% First of all, we don't allow \tableofcontents to open the toc auxialliary
% file for writing, because this would not allow us, to read it several
% times. Instead, it should be opened just after the last page.
%     \begin{macrocode}
\BeforeStartingTOC[toc]{\@fileswfalse}
\AddToHook{enddocument/afterlastpage}{%
  \if@filesw
    \newwrite\tf@toc
    \immediate\openout \tf@toc \jobname.toc\relax
  \fi
}
%    \end{macrocode}
%
% \begin{macro}{\tableofchaptercontents}
% This command prints a chapter ToC. Several commands and counters are locally
% changed.
%    \begin{macrocode}
\newcommand*{\tableofchaptercontents}{%
  \begingroup
    \value{tocdepth}=\value{chaptertoctocdepth}\relax
    \value{chaptertocentry}=\z@
    \let\real@contentsline\contentsline
    \let\contentsline\chaptertoc@contentsline
    \typeout{CToC No. \thechapterintoc}%
    \tocbasic@starttoc{toc}%
  \endgroup
  \bigskip  
\@afterindentfalse\@afterheading } % \end{macrocode} % The number of the current chapter ToC entry \texttt{chaptertocentry} is % needed inside \cs{chaptertoc@conentsline} to detect, whether this % contentsline has to be added inside the current chapter ToC or has to be % ignored, because it is outside the current chapter. We also need a counter % \texttt{chapterintoc}, that is increased by every chapter, that is added to % the main ToC, because only those chapters can have their own ToCs. To a % chapter without ToC entry like the table of contents can never have it's own % ToC. % \begin{macrocode} \newcounter{chaptertocentry} \newcounter{chapterintoc} \xpretocmd{\addchaptertocentry}{\stepcounter{chapterintoc}}{}{% \PackageError{chaptertoc}{Cannot patch \string\addchaptertocentry}% {This is an internal error and should never happen}% } % \end{macrocode} % The chapter ToCs have their own \texttt{tocdepth} counter named % \texttt{chaptertoctocdeth}. It is initialized with \texttt{tocdepth} if it % is still -\cs{maxdimen} at \cs{begin{document}}. % \begin{macrocode} \newcounter{chaptertoctocdepth} \setcounter{chaptertoctocdepth}{-\maxdimen} \AtBeginDocument{% \ifnum \value{chaptertoctocdepth}=-\maxdimen\relax \value{chaptertoctocdepth}=\value{tocdepth}\relax \fi } % \end{macrocode} % \begin{macro}{chaptertoc@contentsline} % Used inside \cs{tableofchaptertoc} instead of \cs{contentsline}. It calls % \cs{contentsline} only, if the entry is inside the current chapter. % \begin{macrocode} \newcommand*{\chaptertoc@contentsline}[4]{% \Ifstr{#1}{chapter}{\stepcounter{chaptertocentry}}{}% \ifnum \value{chaptertocentry}=\value{chapterintoc}\relax \ifnum \csname #1tocdepth\endcsname>\chaptertocdepth\relax \typeout{#1 inside wanted chapter}% \real@contentsline{#1}{#2}{#3}{#4}% \else \typeout{#1 is not inside any chapter}% \fi \else \typeout{#1 in chapter \thechaptertocentry}% \fi
} % \end{macrocode} % \end{macro} % \end{macro} \let\@currname\@empty% Only for the prototyping \makeatother \setcounter{secnumdepth}{\subparagraphnumdepth} \setcounter{tocdepth}{\chaptertocdepth} \setcounter{chaptertoctocdepth}{\subparagraphtocdepth} \begin{document} \tableofcontents \chapter{Test Chapter One} \tableofchaptercontents \blindtext \section{Test Section One} \Blindtext \section{Test Section Two} \Blindtext \section{Test Section Three} \Blindtext \Blinddocument \chapter{Test Chapter Three} \tableofchaptercontents \blindtext \section{Test Section Four} \Blindtext \section{Test Section Five} \Blindtext \section{Test Section Six} \Blindtext \end{document}

Wenn es nicht weiter hilft, kann man daran vielleicht wenigstens ablesen, wie Versuchspakete bei mir entstehen (und massenhaft auch wieder im Müll landen).

@Stefan Kann es sein, dass die Farbgestaltung der Code-Blöcke derzeit etwas sehr willkürlich ist? Mir ist das auch schon bei anderem Code aufgefallen. Bringt so eigentlich eher wenig.


esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Re: Mehrere Inhaltsverzeichnisse

Beitrag von esdd »

Man kann auch das Paket etoc verwenden. Dann muss man nur für das globale Inhaltsverzeichnis die Tiefe ändern und anschließend dafür sorgen, dass die späteren lokalen Inhaltsverzeichnisse als Abschnitte und nicht als Kapitel ausgegeben werden.

\documentclass[12pt,toc=listof]{scrreprt}
%\usepackage[utf8]{inputenc}% nur mit veralteten TeX Distributionen nötig
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{csquotes}
\usepackage[style=numeric]{biblatex}
\usepackage{etoc}

\setcounter{tocdepth}{\subparagraphtocdepth}
\setcounter{secnumdepth}{\subparagraphnumdepth}

\begin{document}

\etocsetnexttocdepth{\chaptertocdepth}% im globalen Inhaltsverzeichnis sollen keine Abschnitte etc. stehen
\tableofcontents
\setuptoc{toc}{leveldown}% lokale Inhaltsverzeichnisse sollen Abschnitte sein

\chapter{Erstes Kapitel Name}
\localtableofcontents
\section{Passende Überschrift}
Text
\subsection{Und die danach}
Text
\subsubsection{Und die nach der davor}
Text
\paragraph{Und noch eine} $~$ \\ 
Text

\chapter{Zweites Kapitel Name}
\localtableofcontents
\section{Passende Überschrift 2}
Text
\subsection{Und die danach 2}
Text
\end{document}
gl_etoc.png

Wenn Du es wirklich brauchst, kannst Du Dir mit \DeclareNewSectionCommand noch eine Ebene unterhalb von \subparagraph definieren.


Hilfe
Forum-Newbie
Forum-Newbie
Beiträge: 2
Registriert: Sa 30. Jan 2021, 16:05

Re: Mehrere Inhaltsverzeichnisse

Beitrag von Hilfe »

Vielen Dank!
Ich habe beide Lösungen ausprobiert und mich letztendlich der Einfachheit halber für die von esdd entschieden. Etoc hatte ich schon mal ausprobiert, bin aber vorher irgendwo an einem (Anfänger-)Fehler gescheitert. Jetzt klappt es, so hatte ich mir das Ergebnis vorgestellt :)


Antworten