
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장
테이블을 [h]여기에 강제로 두면 문제가 해결되지만 나는 테이블을 맨 위에 두는 것을 선호합니다. 누구든지 이 문제를 해결하는 방법을 알려줄 수 있습니까?
감사합니다!
답변1
장 작성 명령에 주석을 추가하는 것이 좋습니다. 회고록에는 \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
내부에는 figure
또는 를 사용하지 table
마세요 \centering
. 또한 \\
단락 끝에 추가하지 마세요.
가 사용되는 경우에는 hyperref
다른 정의를 \xcontentsline
사용해야 합니다. 위의 코드를 다음과 같이 변경하세요.
\makeatletter
\def\xcontentsline#1#2#3{\@ifnextchar\contentsline
{\contentsline{#1}{#2}{#3}{}{}}{}} % two {} groups for hyperref
\makeatother
(나머지는 모두 동일하게 유지됩니다). 변경 사항은 hyperref
사용되지 않는 경우에도 호환됩니다 .