PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : tocloft: Probleme mit Einträgen für lof,lot,-.. im toc



MarkusDF
04-05-2012, 16:05
Hallo,

ich habe heute das erste Mal das Paket tocloft ausprobiert, um ein eigenes Verzeichnis für Beispiele zu erstellen. Ich bin auch ganz begeistert, nur fehlen mit diesem paket Die Einträge für das Abbildungs-, Tabellen und alle weiteren Verzeichnisse im Inhaltsverzeichnis. Wenn ich aber die Einträge manuell hinzufüge, dann stimmen bei mir die Hyperrefs nicht mehr. Kennt jemand das Problem?

Hier ein Minimalbeispiel (angpasste Version von hier (http://tex.stackexchange.com/questions/43311/formatting-new-list-of-definitions-with-tocloft)):


\documentclass{scrbook}
\usepackage[ngerman]{babel}
\usepackage{tocloft}% http://ctan.org/pkg/tocloft
\usepackage{etoolbox}% http://ctan.org/pkg/etoolbox
\usepackage[plainpages=false,pdfpagelabels]{hyperref}

\newcommand{\listdefinitionname}{My list of definitions}
\newlistof{definition}{def}{\listdefinitionname}
\newcommand{\definition}[1]{%
\refstepcounter{definition}%
\par\noindent\textbf{The Definition~\thedefinition. #1}%
\addcontentsline{def}{figure}
{\protect\numberline{\thechapter.\thedefinition}#1 }\par%
}
\makeatletter
\preto\chapter{\addtocontents{def}{\protect\addvsp ace{10\p@}}}%
\makeatother

\begin{document}

\frontmatter

\begin{titlepage}
\centering
\Huge
Titelseite
\end{titlepage}

\chapter{Danksagungen}
Vielen Dank.
\clearpage

\tableofcontents
\clearpage

\listoffigures
\addcontentsline{toc}{chapter}{\listfigurename}
\clearpage

\listofdefinition
\addcontentsline{toc}{chapter}{\listdefinitionname }
\clearpage

\mainmatter

\chapter{Kapitel}
\begin{figure}\caption{Some figure}\end{figure}
\begin{figure}\caption{Some figure}\end{figure}
\definition{Some definition}
\begin{figure}\caption{Some figure}\end{figure}
\definition{Some definition}
\begin{figure}\caption{Some figure}\end{figure}
\definition{Some definition}

\end{document}

hakaze
04-05-2012, 16:28
Willkommen im Forum hier! Bitte benutze das nächste mal die Code-Umgebung zum Posten von Latex-Code (Raute-Symbol im Editor).

Zu deinem Problem: die Hyperlinks funktionieren richtig, wenn du zwischen clearpage und dem addcontentsline-Befehl eine phantomsection einfügst. Siehe Ausschnitt:
\clearpage

\phantomsection
\addcontentsline{toc}{chapter}{\listfigurename}
\listoffigures
\clearpage

\phantomsection
\addcontentsline{toc}{chapter}{\listdefinitionname }
\listofdefinition
\clearpage

MarkusDF
04-05-2012, 16:36
@hakaze: Vielen Dank, so funktioniert's. Aber schade, dass solche Hacks ständig bei LaTeX sein müssen, wenn Extrapakete eingebunden werden :(

klops
04-05-2012, 16:55
@hakaze: Vielen Dank, so funktioniert's. Aber schade, dass solche Hacks ständig bei LaTeX sein müssen, wenn Extrapakete eingebunden werden :(
Zum einen ist das kein Hack, zum anderen musst Du ja kein Extrapaket verwenden. KOMA-Script kann das sehr gut alleine:
\documentclass[listof=totoc]{scrbook}
\usepackage[ngerman]{babel}
\usepackage[plainpages=false,pdfpagelabels]{hyperref}

\DeclareNewTOC[%
name={The Definition},
nonfloat,
type=definition,
listname={My list of definitions}
]{def}

\newcommand{\definition}[1]{%
\begingroup
\setkomafont{caption}{\bfseries}% würde ich eher weglassen
\setkomafont{captionlabel}{\bfseries}%
\KOMAoptions{captions=nooneline}%
\captionaboveof{definition}{#1}%
\endgroup
}

\begin{document}

\frontmatter

\begin{titlepage}
\centering
\Huge
Titelseite
\end{titlepage}

\chapter{Danksagungen}
Vielen Dank.

\tableofcontents
\listoffigures
\listofdefinitions

\mainmatter

\chapter{Kapitel}
\begin{figure}\caption{Some figure}\end{figure}
\begin{figure}\caption{Some figure}\end{figure}
\definition{Some definition}
\begin{figure}\caption{Some figure}\end{figure}
\definition{Some definition}
\begin{figure}\caption{Some figure}\end{figure}
\definition{Some definition}

\end{document}
%%% Local Variables:
%%% mode: latex
%%% TeX-master: t
%%% End:
Damit sparst Du Dir auch gleich die ganzen \addtocontentsline-Anweisungen. Näheres ist der KOMA-Script-Anleitung, scrguide.pdf, zu entnehmen.

MarkusDF
04-05-2012, 17:51
Vielen Dank, klops!


Zum einen ist das kein Hack, zum anderen musst Du ja kein Extrapaket verwenden. KOMA-Script kann das sehr gut alleine:
\documentclass[listof=totoc]{scrbook}
\usepackage[ngerman]{babel}
\usepackage[plainpages=false,pdfpagelabels]{hyperref}

\DeclareNewTOC[%
name={The Definition},
nonfloat,
type=definition,
listname={My list of definitions}
]{def}

\newcommand{\definition}[1]{%
\begingroup
\setkomafont{caption}{\bfseries}% würde ich eher weglassen
\setkomafont{captionlabel}{\bfseries}%
\KOMAoptions{captions=nooneline}%
\captionaboveof{definition}{#1}%
\endgroup
}

\begin{document}

\frontmatter

\begin{titlepage}
\centering
\Huge
Titelseite
\end{titlepage}

\chapter{Danksagungen}
Vielen Dank.

\tableofcontents
\listoffigures
\listofdefinitions

\mainmatter

\chapter{Kapitel}
\begin{figure}\caption{Some figure}\end{figure}
\begin{figure}\caption{Some figure}\end{figure}
\definition{Some definition}
\begin{figure}\caption{Some figure}\end{figure}
\definition{Some definition}
\begin{figure}\caption{Some figure}\end{figure}
\definition{Some definition}

\end{document}
%%% Local Variables:
%%% mode: latex
%%% TeX-master: t
%%% End:
Damit sparst Du Dir auch gleich die ganzen \addtocontentsline-Anweisungen. Näheres ist der KOMA-Script-Anleitung, scrguide.pdf, zu entnehmen.

Gut, das mit dem Hack sehe ich anders, aber das gehört ja jetzt nicht hierhin. vielen Dank für den Codevorschlag, so tief stecke ich leider nicht in LaTeX drin, als dass ich da selbst drauf gekommen wäre. Leider funktioniert Dein Code bei mir nicht (Undefined control sequence \DeclareNewTOC) weil ich leider unter Ubuntu mit KOMA v3.04 rumgurke. Ich habe mir aber auch das Handbuch angeschaut und werde wohl mal das tocbasic Paket ausprobieren, das sollte ja funktionieren. Vielen Dank nochmal!

rstuby
04-05-2012, 18:07
Ich habe gerade erst auf einem Ubuntu-artigen System (Mint) nach dieser Anleitung http://wiki.ubuntuusers.de/LaTeX erfolgreich das aktuelle texlive installiert. Kann ich nur empfehlen.

klops
04-05-2012, 18:18
Leider funktioniert Dein Code bei mir nicht (Undefined control sequence \DeclareNewTOC) weil ich leider unter Ubuntu mit KOMA v3.04 rumgurke. Ich habe mir aber auch das Handbuch angeschaut und werde wohl mal das tocbasic Paket ausprobieren, das sollte ja funktionieren. Vielen Dank nochmal!
Ob Du tocbasic explizit lädst oder nicht, macht keinen Unterschied. Die KOMA-Script-Klassen laden das ohnehin. Mit Version 3.04 kann das aber so wie angegeben nicht funktionieren. Ich empfehle die Installation eines Original TeX Live (http://www.tug.org/texlive), dann hat man auch den TeX Live Package Manager (tlmgr) und kann damit ggf. auch eine aktuelle Version von KOMA-Script (und anderen Paketen) erhalten. AFAIK ist bei Ubuntu noch TeX Live 2009 enthalten. Das ist weit, weit davon entfernt auch nur halbwegs aktuell zu sein. Das kann man wirklich niemandem mehr empfehlen.

Übrigens führen die KOMA-Script Release-Infos (http://www.komascript.de/release) gerade in tocbasic ein paar Fehler auf, beispielsweise für v3.04a (http://www.komascript.de/release3.04a). Da dort nicht angegeben ist, seit wann der Fehler enthalten ist, sollte man wohl min. v3.09a verwenden, um ein fehlerfreies tocbasic zu bekommen.