PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mehrere Verzeichnisse in LaTeX



Thorben4787
03-07-2009, 11:54
Hallo zusammen!

Also, ich habe folgendes Problem. Für meine Bachelorarbeit benutze ich LaTeX und zwar die Vorlage von Matthias Pospiech (dürfte hier ja bekannt sein :) ).

Das Problem ist, dass ich dämliche Vorgaben habe, die nicht ganz von dieser Vorlage unterstützt werden.

Ich fang einfach mal mit dem größten Problem an.

Die Struktur meiner Arbeit soll wie folgt sein:

Deckblatt
Sperrvermerk
Inhaltsverzeichnis
Abkürzungsverzeichnis
Tabellenverzeichnis

Text

Anhang
Anhangsverzeichnis
Anhangsabbildungsverzeichnis
Anhangstabellenverzeichnis
Anhangstext

Quellenverzeichnisse
Ehrenwörtliche Erklärung

Die roten Sachen sollen ins Inhaltsverzeichnis, die grünen Sachen ins Anhangsverzeichnis.

Folgende Lösungsansätze habe ich schon probiert:
http://www.komascript.de/node/458 bietet eine Lösung an, ein Inhalts- und ein Anhangsverzeichnis zu machen. Funktioniert wunderbar, nur leider ist dann das Quellenverzeichnis & und die Erklärung im Anhangsverzeichnis und nicht im Inhaltsverzeichnis.
Außerdem funktioniert diese Lösung nicht für Abbildungs- und Tabellenverzeichnisse.

Wenn ich die \section's im Anhang mit * "ausklammere", dann erscheinen sie nicht im Abbildungsverzeichnis, aber dadurch werden sie nicht mehr nummeriert, was ja eigentlich trotzdem noch der Fall sein soll. Und das Verzeichnis von Hand mit \ref{} funktioniert dann auch nicht mehr so toll.

Ein Minimalbeispiel ist dabei ein bisschen schwierig, oder?
Kann aber natürlich bei Bedarf eins machen.
Ich benutze TeXnicCenter mit der aktuellen MikTeXDistribution auf XP.

Schonmal vielen Dank für die Hilfe :)

mechanicus
03-07-2009, 19:20
Hallo,

verwende die Lösung von Rainer (rais):
http://www.mrunix.de/forums/showthread.php?p=271395#post271395

Gruß
Marco

rais
05-07-2009, 11:14
Moin moin,
sicherlich ließe sich das Teil um Befehle wie \mainlof/lot und \appendixlof/lot analog zu \maintoc, \appendixtoc erweitern, aber eigentlich sollte der OP mit minitoc (http://dante.ctan.org/CTAN/help/Catalogue/entries/minitoc.html) auch an sein Ziel gelangen.;-)

MfG

mechanicus
05-07-2009, 11:42
Hallo Rainer,

ich mag deine Lösung ;) , da sie mit KOMA harmoniert. (was bei minitoc ja nicht gegeben ist).

Gruß
Marco

Maverick
05-07-2009, 11:55
Ich mache das einfach mit dem minitoc-Paket.

Welche Probleme gibt es aber mit KOMA?

mechanicus
05-07-2009, 11:57
Ich mache das einfach mit dem minitoc-Paket.

Welche Probleme gibt es aber mit KOMA?

Hallo,

hast du keine Warnungen beim Kompilieren? Ich hatte es mal probiert und hatte nur Warnungen.

Gruß
Marco

Thorben4787
06-07-2009, 14:08
Ihr Götter! Danke! Funktioniert auf anhieb :)
Das mit den Tabellen- und Abbildungsverzeichnissen probier ich auch gleich mal aus!

So, edit:
Das mit den Tabellen/Abbildungsverzeichnissen klappt nicht so ganz.
Es kommt kein Fehler/Warnung, aber die Trennung der Verzeichnisse wird nicht durchgeführt.
Liegt vermutlich daran, dass "tocdepth" dafür die falsche Variable ist, aber wie heißt denn die "Tiefe" des Tabellenverzeichnissees?

Hier mal ein Minimalbeispiel:


\documentclass{scrbook}
\usepackage[ngerman]{babel}
\usepackage{blindtext}

\makeatletter% --> De-TeX-FAQ
\newcommand*{\mainlot}{% Hauptinhaltsverzeichnis
\begingroup
\@fileswfalse% kein neues Verzeichnis öffnen
\renewcommand*{\appendixatlot}{% Trennanweisung im Inhaltsverzeichnis
\value{tocdepth}=-10000 % lokal tocdepth auf sehr kleinen Wert setzen
}%
\listoftables% Verzeichnis ausgeben
\endgroup
}
\newcommand*{\appendixlot}{% Anhangsinhaltsverzeichnis
\begingroup
\edef\@alltocdepth{\the\value{tocdepth}}% tocdepth merken
\setcounter{tocdepth}{-10000}% Keine Verzeichniseinträge
\renewcommand*{\contentsname}{% Verzeichnisname ändern
Tabellen im Anhang}%
\renewcommand*{\appendixatlot}{% Trennanweisung im Inhaltsverzeichnis
\setcounter{tocdepth}{\@alltocdepth}% tocdepth wiederherstellen
}%
\tableofcontents% Verzeichnis ausgeben
\setcounter{tocdepth}{\@alltocdepth}% tocdepth wiederherstellen
\endgroup
}
\newcommand*{\appendixatlot}{% Trennanweisung im Inhaltsverzeichnis
}
\g@addto@macro\appendix{% \appendix erweitern
\if@openright\cleardoublepage\else\clearpage\fi% Neue Seite
\addcontentsline{toc}{chapter}{\appendixname}% Eintrag ins Hauptverzeichnis
\addtocontents{toc}{\protect\appendixatlot}% Trennanweisung in die toc-Datei
}
\makeatother


\begin{document}
\mainlot
\chapter{Tabelle im Text}
\begin{table}
\begin{tabular}{llc}
Rang & Name & Rating\\
1 & Garry Kasparov & 2817\\
2 & Visnawathan Anand & 2774\\
3 & Wladimir Kramnik & 2764
\end{tabular}
\caption{Tabelle im Text}
\end{table}

\appendix
\appendixlot
\chapter{Tabelle im Anhang}
\begin{table}
\begin{tabular}{llc}
Rang & Name & Rating\\
1 & Garry Kasparov & 2817\\
2 & Visnawathan Anand & 2774\\
3 & Wladimir Kramnik & 2764
\end{tabular}
\caption{Tabelle im Anhang}
\end{table}


\end{document}


Danke schonmal im Voraus!

rais
06-07-2009, 19:34
Moin moin,


Das mit den Tabellen/Abbildungsverzeichnissen klappt nicht so ganz.
Es kommt kein Fehler/Warnung, aber die Trennung der Verzeichnisse wird nicht durchgeführt.
Liegt vermutlich daran, dass "tocdepth" dafür die falsche Variable ist, aber wie heißt denn die "Tiefe" des Tabellenverzeichnissees?

nee, tocdepth ist schon richtig, aber Du musst diese Trennanweisung auch in die LOF/LOT und nicht nur ins TOC schreiben -- vgl mal:


\documentclass[listof=totoc]{scrbook}
\usepackage[ngerman]{babel}
\usepackage{blindtext}

\newcommand*\alltocdepth{2}
\setcounter{tocdepth}{\alltocdepth}
\newcounter{kapmerker}
\makeatletter% --> De-TeX-FAQ
\newcommand*{\maintoc}{% Hauptinhaltsverzeichnis
\begingroup
\@fileswfalse% kein neues Verzeichnis öffnen
\renewcommand*{\appendixattoc}{% Trennanweisung im Inhaltsverzeichnis
\value{tocdepth}=-10000 % lokal tocdepth auf sehr kleinen Wert setzen
}%
\tableofcontents% Verzeichnis ausgeben
\endgroup
}
\newcommand*{\appendixtoc}{% Anhangsinhaltsverzeichnis
\begingroup
\setcounter{tocdepth}{-10000}% Keine Verzeichniseinträge
\renewcommand*{\contentsname}{% Verzeichnisname ändern
Verzeichnis der Anh\"ange}%
\renewcommand*{\appendixattoc}{% Trennanweisung im Inhaltsverzeichnis
\setcounter{tocdepth}{\alltocdepth}% tocdepth wiederherstellen
}%
\renewcommand*\afterappendixattoc{%
\value{tocdepth}=-10000 % ab hier nix mehr...
}%
\tableofcontents% Verzeichnis ausgeben
\setcounter{tocdepth}{\alltocdepth}% tocdepth wiederherstellen
\endgroup
}
\newcommand*{\mainlof}{% Hauptabbildungsverzeichnis
\begingroup
\@fileswfalse% kein neues Verzeichnis öffnen
\renewcommand*{\appendixattoc}{% Trennanweisung auch im Abbildungsverzeichnis
\value{tocdepth}=-10000 % lokal tocdepth auf sehr kleinen Wert setzen
}%
\listoffigures% Verzeichnis ausgeben
\endgroup
}
\newcommand*{\appendixlof}{% Anhangsabbildungsverzeichnis
\begingroup
\setcounter{tocdepth}{-10000}% Keine Verzeichniseinträge
\renewcommand*{\listfigurename}{% Verzeichnisname ändern
Abbildungsverzeichnis der Anh\"ange}%
\renewcommand*{\appendixattoc}{% Trennanweisung auch im Abbildungsverzeichnis
\setcounter{tocdepth}{\alltocdepth}% tocdepth wiederherstellen
}%
\renewcommand*\afterappendixattoc{%
\value{tocdepth}=-10000 % ab hier nix mehr...
}%
\listoffigures% Verzeichnis ausgeben
\setcounter{tocdepth}{\alltocdepth}% tocdepth wiederherstellen
\endgroup
}
\newcommand*{\mainlot}{% Haupttabellenverzeichnis
\begingroup
\@fileswfalse% kein neues Verzeichnis öffnen
\renewcommand*{\appendixattoc}{% Trennanweisung auch im Tabellenverzeichnis
\value{tocdepth}=-10000 % lokal tocdepth auf sehr kleinen Wert setzen
}%
\listoftables% Verzeichnis ausgeben
\endgroup
}
\newcommand*{\appendixlot}{% Anhangstabellenverzeichnis
\begingroup
\setcounter{tocdepth}{-10000}% Keine Verzeichniseinträge
\renewcommand*{\listtablename}{% Verzeichnisname ändern
Tabellenverzeichnis der Anh\"ange}%
\renewcommand*{\appendixattoc}{% Trennanweisung auch im Tabellenverzeichnis
\setcounter{tocdepth}{\alltocdepth}% tocdepth wiederherstellen
}%
\renewcommand*\afterappendixattoc{%
\value{tocdepth}=-10000 % ab hier nix mehr...
}%
\listoftables% Verzeichnis ausgeben
\setcounter{tocdepth}{\alltocdepth}% tocdepth wiederherstellen
\endgroup
}
\newcommand*{\appendixattoc}{% Trennanweisung im Inhaltsverzeichnis
}
\newcommand*\afterappendixattoc{% noch ne Trennanweisung im TOC...
\setcounter{tocdepth}{\alltocdepth}%
}
\let\orgappendix\appendix
\renewcommand*\appendix{% \appendix erweitern
\setcounter{kapmerker}{\value{chapter}}%<--Kapitelstand merken
\orgappendix
\if@openright\cleardoublepage\else\clearpage\fi% Neue Seite
\addcontentsline{toc}{chapter}{\appendixname}% Eintrag ins Hauptverzeichnis
\addtocontents{toc}{\protect\appendixattoc}% Trennanweisung in die toc-Datei
\addtocontents{lof}{\protect\appendixattoc}% Trennanweisung in die lof-Datei
\addtocontents{lot}{\protect\appendixattoc}% Trennanweisung in die lot-Datei
}

\newcommand*\uebersicht{%
\addchap*{Inhalts\"ubersicht}
\markboth{Inhalts\"ubersicht}{}
\begingroup
\value{tocdepth}\shorttocdepth\relax % uebler Hack!
\renewcommand*{\appendixattoc}{%<--
\value{tocdepth}=-10000 % lokal tocdepth auf sehr kleinen Wert setzen
}%
\renewcommand*\afterappendixattoc{%
\value{tocdepth}\shorttocdepth\relax % uebler Hack!
}%
\makeatletter
\@input{\jobname.toc}%
\makeatother
\endgroup
}

\newcommand*\appendixendshere{%
\addtocontents{toc}{\protect\afterappendixattoc}%
\addtocontents{lof}{\protect\afterappendixattoc}%<--
\addtocontents{lot}{\protect\afterappendixattoc}%<--
\renewcommand*\thechapter{\arabic{chapter}}%<--ab hier Nummerierung mit Ziffern
\setcounter{chapter}{\value{kapmerker}}%<--fortsetzen
\gdef \@chapapp {\chaptername}%<--wieder `Kapitel'
}
\makeatother

\newcommand*{\shorttocdepth}{1}
\begin{document}
\uebersicht
\maintoc
\mainlof
\mainlot
\blinddocument
\begin{table}
\caption{Testtabelle im Hauptteil}
\end{table}
\blinddocument
\begin{figure}
\caption{Testbild im Hauptteil}
\end{figure}
\appendix
\appendixtoc
\appendixlof
\appendixlot
\blinddocument
\begin{table}
\caption{Testtabelle im Anhang}
\end{table}
\blinddocument
\begin{figure}
\caption{Testbild im Anhang}
\end{figure}

\appendixendshere

\addchap{\bibname\ (simuliert)}
\end{document}

Nu kann man sich streiten, ob \appendixattoc nicht besser \appendixatloflottoc oder so genannt werden sollte, aber dann ist's ja auch nur tocdepth, so nicht Pakete wie minitoc ins Spiel kommen.;-)

@Marco: welche Warnungen bekommst Du denn so? Evtl lassen sie sich ja mit der nohints-Option bei minitoc abschalten ...

MfG

mechanicus
06-07-2009, 20:26
@Marco: welche Warnungen bekommst Du denn so? Evtl lassen sie sich ja mit der nohints-Option bei minitoc abschalten ...

Hallo Rainer,

diese Option habe ich irgendwie überlesen. Also bei diesem einfachen MB klappt es:

\documentclass[ngerman]{scrreprt}
\usepackage{babel}
\usepackage[utf8]{inputenc}
\usepackage{hyperref}
\usepackage[nohints]{minitoc}

\begin{document}
\dominitoc
\tableofcontents
\chapter{foo}
\minitoc
\section{foobar}
\section{foobar}
\subsection{foobarfoo}
\section{foobar}
\chapter{foo}
\minitoc
\section{foobar}
\section{foobar}
\subsection{foobarfoo}
\section{foobar}
\end{document}

Gruß
Marco

Thorben4787
07-07-2009, 10:57
Danke für die schnelle und kompetente Hilfe, klappt natürlich wunderbar!
Vielen Dank!