
Mir fällt auf, dass das Hinzufügen eines Textes zu einer Liste von Tabellen (oder Abbildungen) über \preto von etoolbox nicht richtig funktioniert, wenn die Tabelle auf der nächsten Seite platziert wird, falls sie nicht auf die Seite passt, auf der sie eingefügt ist.
Betrachten Sie den folgenden Code
\documentclass[twoside,a4paper]{memoir}
\usepackage{etoolbox, tocloft}
\preto\figure{%
\ifnum\value{figure}=0\addtocontents{lof}{{\bfseries Chapter \thechapter\vskip10pt}}\fi
}
\preto\table{%
\ifnum\value{table}=0\addtocontents{lot}{{\bfseries Chapter \thechapter\vskip10pt}}\fi
}
\begin{document}
\cleardoublepage
\tableofcontents
\cleardoublepage
\listoftables
\cleardoublepage
\chapter{Chapter}
blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah
\\
blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah
\\
blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah
\\
blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah
\\
%blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah
\begin{table}
\begin{center}
\caption{My table's caption}
\begin{tabular}{l c c}
\hline
column 1 & column 2 & column 3 \\
\hline
r1 & r2 & r3 \\
r1 & r2 & r3 \\
r1 & r2 & r3 \\
r1 & r2 & r3 \\
\hline
\end{tabular}
\end{center}
\end{table}
\end{document}
Wenn ich den letzten Kommentar mit "bla bla bla" hinterlassen hätte, dann sieht die Tabellenliste etwa so aus:
Liste der Tabellen
Kapitel 1
1.1 Die Überschrift meiner Tabelle ... 6
Wenn ich das Kommentarzeichen entferne, wird die Tabellenliste komisch und liest sich wie folgt
Liste der Tabellen
1.1 Die Überschrift meiner Tabelle ... 6
Kapitel 1
Wenn ich die Tabelle zwinge, [hier] zu sein, ist das Problem gelöst, ich bevorzuge jedoch Tabellen oben. Kann jemand sagen, wie man dieses Problem löst?
Danke schön!
Antwort1
Besser ist es, die Anmerkung dem Befehl zum Erstellen der Kapitel hinzuzufügen; bei Memoir gibt es \mempostaddchaptertotochook
dafür einen Hook.
Der folgende Code ist angepasst an eineAntwort von mir im GuIT-Forum; wie Sie sehen, wird die Anmerkung nur gedruckt, wenn in einem Kapitel Tabellen (oder Abbildungen) gefunden werden.
\documentclass[twoside,a4paper]{memoir}
\renewcommand\mempostaddchaptertotochook{%
\addchaptertoloft{lof}%
\addchaptertoloft{lot}%
}
\def\addchaptertoloft#1{%
\addtocontents{#1}{%
\protect\xcontentsline{chapter}
{\chaptername\ \thechapter\protect\nopagebreak\protect\vspace{1ex}}{}}}
\makeatletter
\def\xcontentsline#1#2#3{\@ifnextchar\contentsline
{\contentsline{#1}{#2}{#3}}{}}
\makeatother
\newcommand{\blah}{%
blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah
blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah
blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah
blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah
blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah
blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah
blah blah blah blah\par}
\begin{document}
\tableofcontents*
\listoftables
\chapter{Chapter}
\blah\blah\blah\blah
\begin{table}
\centering
\caption{My table's caption}
\begin{tabular}{l c c}
\hline
column 1 & column 2 & column 3 \\
\hline
r1 & r2 & r3 \\
r1 & r2 & r3 \\
r1 & r2 & r3 \\
r1 & r2 & r3 \\
\hline
\end{tabular}
\end{table}
\chapter{Chapter}
\blah\blah\blah\blah
\chapter{Chapter}
\blah \blah \blah \blah
\begin{table}
\centering
\caption{My table's caption}
\begin{tabular}{l c c}
\hline
column 1 & column 2 & column 3 \\
\hline
r1 & r2 & r3 \\
r1 & r2 & r3 \\
r1 & r2 & r3 \\
r1 & r2 & r3 \\
\hline
\end{tabular}
\end{table}
\end{document}
Verwenden Sie weder center
„innerhalb“ figure
noch table
„aber“ \centering
. Fügen Sie es auch nicht \\
am Ende eines Absatzes hinzu.
Beachten Sie, dass bei hyperref
Verwendung von eine andere Definition von \xcontentsline
verwendet werden sollte. Ändern Sie den obigen Code mit
\makeatletter
\def\xcontentsline#1#2#3{\@ifnextchar\contentsline
{\contentsline{#1}{#2}{#3}{}{}}{}} % two {} groups for hyperref
\makeatother
(alles andere bleibt gleich). Die Änderung ist auch kompatibel, wenn hyperref
nicht verwendet wird.