如何在图形列表中添加单行垂直空格?

如何在图形列表中添加单行垂直空格?

我有一份scrbook类文档,其中定义了\chapters、\sections 等。我使用了很多数字。我的文档的特别之处在于,章节编号为 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\AtBeginEnvironmentetoolbox

\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}

在此处输入图片描述

相关内容