我有一份scrbook
类文档,其中定义了\chapter
s、\section
s 等。我使用了很多数字。我的文档的特别之处在于,章节编号为 1、2、3、...;节编号为 1.1、1.2、1.3、...;但我的附录\chapter*
没有编号,附录的节编号为\Alph{section}
。
现在,我的问题是,它\listoffigures
总是在不同章节的图之间产生垂直空间(空行),但它不将附录部分作为章节处理。虽然图 4.1、4.2、4.3 以及 5.1、5.2 被分组在一起,但我遇到的问题是所有附录(A、B、C、D)中的所有图都分组在一起,没有任何垂直空间。
这是一个非常具体的问题,让我尝试创建一个最小的工作示例:
\documentclass{scrbook}
\begin{document}
\listoffigures
\chapter{Lorem}
\begin{figure}[htb]
\caption{1st lorum figure.}
\end{figure}
\begin{figure}[htb]
\caption{2nd lorum figure.}
\end{figure}
\chapter{Ipsun}
\begin{figure}[htb]
\caption{1st ipsum figure.}
\end{figure}
\begin{figure}[htb]
\caption{2nd ipsum figure.}
\end{figure}
\chapter{Dolorem}
\appendix
\chapter*{Appendix}
\renewcommand{\thesection}{\Alph{section}}
\renewcommand{\thefigure}{\thesection.\arabic{figure}}
\section{Lorem (Supplemental)}
\begin{figure}[htb]
\caption{3rd lorum figure.}
\end{figure}
\begin{figure}[htb]
\caption{4th lorum figure.}
\end{figure}
\section{Ipsum (Supplemental)}
\begin{figure}[htb]
\caption{3rd ipsum figure.}
\end{figure}
\begin{figure}[htb]
\caption{4th ipsum figure.}
\end{figure}
\section{Dolorem (Supplemental)}
\end{document}
这张 MWE 截图最能直观地展示我的问题:
如何仅在附录章节之间的图表列表中添加单行垂直空格?
答案1
这有点棘手。由于章节不在新页面上开始,因此不会清除图片列表,因此无法挂接到章节更改命令以在图片列表中写入额外的垂直空间,因为这将与图片中的条目不同步。相反,可以挂接到\begin{figure}
。
以下假设您确实希望在每个附录部分的开头重新开始编号。可以使用以下命令重置编号:
\makeatletter\@addtoreset{figure}{section}\makeatother
现在,通过命令在条目之间添加垂直空间lof
。这可以借助以下包插入到部分第一个图的开头:10pt
\addvspace
\AtBeginEnvironment
etoolbox
\AtBeginEnvironment{figure}{\ifnumequal{\value{figure}}{0}{\addtocontents{lof}{\protect\addvspace{10pt}}}{}}
此代码测试当前图形编号是否为,在图形环境中0
是否增加,如果是,则将代码写入图形列表文件。 1
\addvspace
\documentclass{scrbook}
\usepackage{etoolbox}
\begin{document}
\listoffigures
\chapter{Lorem}
\begin{figure}[htb]
\caption{1st lorum figure.}
\end{figure}
\begin{figure}[htb]
\caption{2nd lorum figure.}
\end{figure}
\chapter{Ipsun}
\begin{figure}[htb]
\caption{1st ipsum figure.}
\end{figure}
\begin{figure}[htb]
\caption{2nd ipsum figure.}
\end{figure}
\chapter{Dolorem}
\appendix
\chapter*{Appendix}
\renewcommand{\thesection}{\Alph{section}}
\renewcommand{\thefigure}{\thesection.\arabic{figure}}
\makeatletter
\@addtoreset{figure}{section}
\AtBeginEnvironment{figure}{\ifnumequal{\value{figure}}{0}{\addtocontents{lof}{\protect\addvspace{\@chapterlistsgap}}}{}}
\makeatother
\section{Lorem (Supplemental)}
\begin{figure}[htb]
\caption{1st lorum supp figure.}
\end{figure}
\begin{figure}[htb]
\caption{2nd lorum supp figure.}
\end{figure}
\section{Ipsum (Supplemental)}
\begin{figure}[htb]
\caption{1st ipsum supp figure.}
\end{figure}
\begin{figure}[htb]
\caption{2nd ipsum supp figure.}
\end{figure}
\section{Dolorem (Supplemental)}
\end{document}
请注意,新的编号是合理的;如果主体部分包含不同数量的图形,只需查看获得的编号即可。
请注意,使用\addvspace
而不是\vspace
,因为它确保至少有这么多的垂直空间,而不是盲目地添加更多空间。这可以处理不包含图形的部分以及10pt
已经由\chapter*
命令添加的部分。
更新按照 Ulrike 的回答,我们可以看到垂直间隙存储在中\@chapterlistsgap
,因此上面的代码现在使用该值而不是固定的10pt
。
答案2
您可以在章节前手动添加间隙,但这种技巧通常表明您的文档结构不是很清晰。
\documentclass{scrbook}
\makeatletter
\newcommand\addlistgap{\addtocontents{lof}{\protect\addvspace{\@chapterlistsgap}}}%
\makeatother
\begin{document}
\listoffigures
\chapter{Lorem}
\begin{figure}[htb]
\caption{1st lorum figure.}
\end{figure}
\begin{figure}[htb]
\caption{2nd lorum figure.}
\end{figure}
\chapter{Ipsun}
\begin{figure}[htb]
\caption{1st ipsum figure.}
\end{figure}
\begin{figure}[htb]
\caption{2nd ipsum figure.}
\end{figure}
\chapter{Dolorem}
\appendix
\chapter*{Appendix}
\renewcommand{\thesection}{\Alph{section}}
\renewcommand{\thefigure}{\thesection.\arabic{figure}}
\section{Lorem (Supplemental)}
\begin{figure}[htb]
\caption{3rd lorum figure.}
\end{figure}
\begin{figure}[htb]
\caption{4th lorum figure.}
\end{figure}
\addlistgap
\section{Ipsum (Supplemental)}
\begin{figure}[htb]
\caption{3rd ipsum figure.}
\end{figure}
\begin{figure}[htb]
\caption{4th ipsum figure.}
\end{figure}
\section{Dolorem (Supplemental)}
\end{document}