
etoolbox の \preto を使用して表 (または図) のリストにテキストを追加しても、表が設定されているページに収まらず、表が次のページに配置されると、正しく機能しないことがわかりました。
次のコードを検討してください
\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}
最後のコメントを「blah blah blah」に残した場合、テーブルのリストは次のようになります。
表の一覧
第1章
1.1 私の表のキャプション...6
コメント文字を削除すると、テーブルのリストがおかしくなり、次のようになります。
表の一覧
1.1 私の表のキャプション...6
第1章
テーブルを [ここ] に強制すると解決しますが、テーブルを一番上に配置することを好みます。この問題を解決する方法を誰か教えてもらえますか?
ありがとう!
答え1
章作成コマンドに注釈を追加した方がよいでしょう。memoir には\mempostaddchaptertotochook
この目的のためのフックがあります。
以下のコードは、GuITフォーラムでの私の回答; ご覧のとおり、注釈は章内に表 (または図) が見つかった場合にのみ印刷されます。
\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}
center
insidefigure
や を使用しないでくださいtable
。また、段落の末尾に\centering
を追加しないでください。\\
が使用される場合hyperref
、 の異なる定義を\xcontentsline
使用する必要があります。上記のコードを次のように変更します。
\makeatletter
\def\xcontentsline#1#2#3{\@ifnextchar\contentsline
{\contentsline{#1}{#2}{#3}{}{}}{}} % two {} groups for hyperref
\makeatother
(その他はすべて同じままです)。hyperref
が使用されていない場合にも、この変更は互換性があります。