PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Inhaltsübersicht, Inhaltsverzeichnis und Anhangsverzeichnis



Wolly
04-07-2008, 18:34
Liebe Latex-Community,

ich benutze zur Generierung des Inhalts- bzw. Anhangsverzeichnis den Vorschlag von Markus Kohm (http://www.komascript.de/node/458), den ich mit dem Vorschlag zur Inhaltsübersicht von edico (http://www.mrunix.de/forums/showpost.php?p=222463&postcount=5) kombiniere, um eine Inhaltsübersicht zu erhalten.

Mein Problem ist nun, dass in der Inhaltsübersicht der Anhang doppelt dargestellt wird, wobei der zweite ungewünschte Eintrag bis zur zweiten Gliederungsebene geht. Dagegen steht im Inhalts- und Abbildungsverzeichnis lediglich der gewünschte erste Eintrag, der lediglich "Anhang" mit korrespondierender Seitenzahl umfasst.

Weiss jemand Rat, wie man die Inhaltsübersicht modifizieren muss, damit man ebenfalls nur das "Anhang" ohne die tieferen Gliederungsebenen als Eintrag hat?




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

\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
\edef\@alltocdepth{\the\value{tocdepth}}% tocdepth merken
\setcounter{tocdepth}{-10000}% Keine Verzeichniseinträge
\renewcommand*{\contentsname}{% Verzeichnisname ändern
Verzeichnis der Anh\"ange}%
\renewcommand*{\appendixattoc}{% Trennanweisung im Inhaltsverzeichnis
\setcounter{tocdepth}{\@alltocdepth}% tocdepth wiederherstellen
}%
\tableofcontents% Verzeichnis ausgeben
\setcounter{tocdepth}{\@alltocdepth}% tocdepth wiederherstellen
\endgroup
}
\newcommand*{\appendixattoc}{% 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\appendixattoc}% Trennanweisung in die toc-Datei
}
\makeatother


\newcommand*\uebersicht{%
\addchap*{Inhalts\"ubersicht}
\markboth{Inhalts\"ubersicht}{}
\begingroup
\value{tocdepth}\shorttocdepth\relax % uebler Hack!
\makeatletter
\input{\jobname.toc}%
\makeatother
\endgroup
}
\newcommand*{\shorttocdepth}{1}

\begin{document}
\uebersicht
\maintoc
\blinddocument
\blinddocument
\appendix
\appendixtoc
\blinddocument
\blinddocument

\end{document}

rais
04-07-2008, 20:43
Moin moin,


Mein Problem ist nun, dass in der Inhaltsübersicht der Anhang doppelt dargestellt wird, wobei der zweite ungewünschte Eintrag bis zur zweiten Gliederungsebene geht. Dagegen steht im Inhalts- und Abbildungsverzeichnis lediglich der gewünschte erste Eintrag, der lediglich "Anhang" mit korrespondierender Seitenzahl umfasst.

Weiss jemand Rat, wie man die Inhaltsübersicht modifizieren muss, damit man ebenfalls nur das "Anhang" ohne die tieferen Gliederungsebenen als Eintrag hat?
brauchst Du dazu nicht nur aus \maintoc


\renewcommand*{\appendixattoc}{%<--
\value{tocdepth}=-10000 % lokal tocdepth auf sehr kleinen Wert setzen
}%
in Deine \uebersicht-Definition übernehmen?

BTW: wenn Du den \makeatletter vor \newcommand\uebersicht{% an dessen Ende stellst und statt \input \@input darin verwendest, gibt es nicht mal mehr


! LaTeX Error: File `foo.toc' not found.
im ersten LaTeX-Lauf.;-)

BTW2: nutze bitte die hiesige CODE-Umgebung zur Darstellung desselben -- dafür ist sie da.

MfG

Wolly
06-07-2008, 13:20
Hey Rainer,

vielen Dank für den Tipp, klappt perfekt ;-)

MfG
Wolly

P.S.:
Hab mein oberes Posting angepasst, so dass der Code nun in der Code-Umgebung steht

edico
06-07-2008, 14:23
Aendere bitte den Code ggf. noch, wenn Du 'hyperref' einarbeitest, damit die Sprungziele 'stimmen' und
nimm gerne den Vorschlag von Rainer auf:

[1]
\g@addto@macro\appendix{% \appendix erweitern
\if@openright\cleardoublepage\else\clearpage\fi% Neue Seite
\phantomsection%<<<<<<<<<< damit Sprungmarken mit hyperref 'laufen'
....

[2]
...
\makeatletter
\newcommand*\uebersicht{%
\addchap*{Inhalts\"ubersicht}
\markboth{Inhalts\"ubersicht}{}
\begingroup
\value{tocdepth}\shorttocdepth\relax % uebler Hack!
\@input{\jobname.toc}%<<<<<<<<<<<<<<
\endgroup
}
\newcommand*{\shorttocdepth}{1}
\makeatother
...
\usepackage{xcolor}
\usepackage[colorlinks,linkcolor=black]{hyperref}
...

edico

Wolly
24-07-2008, 09:16
Danke, klappt alles soweit perfekt, mit einer einzigen Ausnahme:

Das Literaturverzeichnis, das nach dem Anhang platziert ist, erscheint nun - da nach der Trennanweisung - im Anhangsverzeichnis statt im Inhaltsverzeichnis.
Gibts ne Möglichkeit, dass dies trotzdem im Inhaltsverzeichnis aufgeführt wird?

rais
25-07-2008, 09:09
Das Literaturverzeichnis, das nach dem Anhang platziert ist, erscheint nun - da nach der Trennanweisung - im Anhangsverzeichnis statt im Inhaltsverzeichnis.
Gibts ne Möglichkeit, dass dies trotzdem im Inhaltsverzeichnis aufgeführt wird?
warum ziehst Du das Literaturverzeichnis nicht einfach vor den Anhang? Gehört es nicht sowieso davor?

MfG

Wolly
25-07-2008, 13:54
warum ziehst Du das Literaturverzeichnis nicht einfach vor den Anhang? Gehört es nicht sowieso davor?

MfG

Hallo Rais,

ich würde das ja gerne so machen, nur leider ist es bei Dissertationen üblich, dass das Literaturverzeichnis erst nach dem Anhang angeführt wird.

rais
25-07-2008, 18:03
Moin moin,


ich würde das ja gerne so machen, nur leider ist es bei Dissertationen üblich, dass das Literaturverzeichnis erst nach dem Anhang angeführt wird.
nun ja, ganz sooo üblich scheint es mir damit nicht zu sein -- nicht zuletzt, weil die Frage hier sonst wohl öfter zu lesen wäre;-) -- oder der Ausdruck ``Anhang'' ist imho falsch gewählt, passender wäre dann ``Zwischenhang'' ... nicht zu vergessen: \appendix ist auch nicht völlig grundlos als Schalter entworfen worden...

Nun gut, wenn das Literaturverzeichnis erst nach dem Anhang gesetzt werden und doch zum Haupttext gehören soll, dann soll ein entsprechender Eintrag vermutlich nicht nur im Haupttoc, sondern auch in der Inhaltsübersicht erscheinen? Versuch es mit einem zweiten Schalter, in etwa


\documentclass{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*{\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
}

\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}%
\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
\blinddocument
\blinddocument
\appendix
\appendixtoc
\blinddocument
\blinddocument

\appendixendshere

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

Solltest Du mit bibtotocnumbered arbeiten, dann wundere Dich aber nicht, daß Dein Literaturverzeichnis so eine fortlaufende Nummer passend zum Haupttext bekommt -- es soll ja gerade nicht zum Anhang gehören ... ;)

MfG

jazzle
04-08-2008, 15:23
Hallo, genau eine solche Trennung bräuchte ich auch für meine Diplomarbeit.

Ich muss leider auch einen Ahnang zwischen Textteil und Quellenverzeichnis machen.

Leider bekomme ich mehrere Fehler, wenn ich das Makro auf einen article anwenden will.

Auch der Versuch \addchap durch \addsec zu ersetzen usw. klappte nicht...

Kann mir jemand helfen oder gibt es eine andere Möglichkeit, nach dem Appendix wieder ins Haupt-TOC zu schreiben?

Vielen Dank!

jazzle
04-08-2008, 15:59
Hi, ich nochmal.

Habe ein wenig rumprobiert und angepasst. Leider gibt es noch drei Errors, die ich nicht wegbekomme. Das Verzeichnis sieht aber bereits schon brauchbar aus.

Die Errors sind:


! Undefined control sequence.
\appendix ...{section}}\orgappendix \if@openright
\cleardoublepage \else \cl...
l.61 \appendix

und


! Extra \else.
\appendix ...\if@openright \cleardoublepage \else
\clearpage \fi \par \addto...
l.61 \appendix

und


! Extra \fi.
\appendix ...cleardoublepage \else \clearpage \fi
\par \addtocontents {toc}{...
l.61 \appendix

Hier das angepasste Makro. Hat jemand eine Idee, wie ich die Errors wegbekomme?

Danke!



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

\newcommand*\alltocdepth{2}
\setcounter{tocdepth}{\alltocdepth}
\newcounter{secmerker}
\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*{\appendixattoc}{% Trennanweisung im Inhaltsverzeichnis
}
\newcommand*\afterappendixattoc{% noch ne Trennanweisung im TOC...
\setcounter{tocdepth}{\alltocdepth}%
}
\let\orgappendix\appendix
\renewcommand*\appendix{% \appendix erweitern
\setcounter{secmerker}{\value{section}}%<--Kapitelstand merken
\orgappendix
\if@openright\cleardoublepage\else\clearpage\fi% Neue Seite

\addtocontents{toc}{\protect\appendixattoc}% Trennanweisung in die toc-Datei
}

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

\newcommand*{\shorttocdepth}{1}
\begin{document}
\maintoc
\blinddocument
\blinddocument
\addcontentsline{toc}{section}{\appendixname}
\appendix
\appendixtoc
\blinddocument
\blinddocument

\appendixendshere

%\addcontentsline{toc}{section}{\bibname\ (simuliert)}
\end{document}

jazzle
04-08-2008, 16:31
So, habe es hinbekommen... sry für die vielen Postings... :p

Hier die Lösung:

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

\newcommand*\alltocdepth{2}
\setcounter{tocdepth}{\alltocdepth}
\newcounter{secmerker}
\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*{\appendixattoc}{% Trennanweisung im Inhaltsverzeichnis
}
\newcommand*\afterappendixattoc{% noch ne Trennanweisung im TOC...
\setcounter{tocdepth}{\alltocdepth}%
}
\let\orgappendix\appendix
\renewcommand*\appendix{% \appendix erweitern
\setcounter{secmerker}{\value{section}}%<--Kapitelstand merken
\orgappendix
%\if@openright\cleardoublepage\else\clearpage\fi% Neue Seite

\addtocontents{toc}{\protect\appendixattoc}% Trennanweisung in die toc-Datei
}

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

\newcommand*{\shorttocdepth}{1}
\begin{document}
\maintoc
\blinddocument
\blinddocument
\addcontentsline{toc}{section}{\appendixname}
\begin{appendix}
\appendixtoc
\blinddocument
\blinddocument
\end{appendix}
\appendixendshere

%\addcontentsline{toc}{section}{\bibname\ (simuliert)}
\end{document}

Koelschbaron
24-10-2008, 23:07
Hey Jazzle!

Das klappt ja in der Tat sehr gut deine Erweiterung!
Mein Kompliment, genauso etwas habe ich nämlich auch gesucht gehabt.

Allerdings habe ich jetzt ein Problem festgestellt:
Wenn ich im Appendix-Teil \subsection verwende, dann funktioniert das ganze nicht mehr und das Literaturverzeichnis wird wieder im Anhang aufgelistet.

Also: \chapter und \section zwischen \begin{appendix] ... \end{appendix} läuft super,
aber bei Verwendung von \subsection "zersägt" es irgendwie etwas.

Habe mir zwar schon das Makro angeschaut, aber gefunden habe ich den Fehler noch nicht...
Hast du eine Idee?

Koelschbaron
27-10-2008, 23:40
Ich habe festgestellt warum das Literaturverzeichnis wieder im Anhangverzeichnis erscheint:

\newpage sollte nicht manuell als letzter Befehl vor \appendixendshere verwendet werden.
D.h. auch dass kein pdfpages vor \appendixhere erscheinen darf.

Momentan behelfe ich mir mit "~", das erzeugt zwar eine neue Seite, aber das Literaturverzeichnis erscheint im Anhangverzeichnis.

Falls jemand eine bessere Idee haben sollte...?

rais
28-10-2008, 13:34
Hallo und -- wenn vllt auch etwas spät -- Herzlich Willkommen :)

Ich habe festgestellt warum das Literaturverzeichnis wieder im Anhangverzeichnis erscheint:

\newpage sollte nicht manuell als letzter Befehl vor \appendixendshere verwendet werden.
D.h. auch dass kein pdfpages vor \appendixhere erscheinen darf.

Momentan behelfe ich mir mit "~", das erzeugt zwar eine neue Seite, aber das Literaturverzeichnis erscheint im Anhangverzeichnis.

das klingt alles recht wirr -- mach doch bitte ein Minimalbeispiel.
BTW: jazzle hat sich das Teil an die article-Klasse angepasst...
Keine Ahnung, welche Klasse Du nutzt, aber


Also: \chapter und \section zwischen (...)

article scheint's nicht zu sein.
MfG

futuremax
18-06-2010, 20:59
Hi, ich weiß der Post ist schon ein wenig betagt. Aber @rais, hier muss ich mal ein dickes LOOOB ausprechen.. ein wenig Arbeit in der Anpassung und meine Vorlage läuft damit

DAUMEN Hoch