如何在 .cls 文件中定义 {\renewcommand{\addvspace}[1]{} \listoffues}

如何在 .cls 文件中定义 {\renewcommand{\addvspace}[1]{} \listoffues}

我正在尝试{\renewcommand{\addvspace}[1]{} \listoffigures}删除图表列表中两个不同章节的图表标题之间的空格。

{\renewcommand{\addvspace}[1]{} \listoffigures}在主 .tex 文件中定义时可以正常工作。但放入 .cls 文件中时无法正常工作。我收到编译错误。

如何在 .cls 文件中定义它。

TLDR; {\renewcommand{\addvspace}[1]{} \listoffigures}在可渗透的环境中不起作用。在可渗透的环境中定义上述内容的正确语法是什么。

答案1

你不应该重新定义\addvspace

图形代码列表不是由 latex 定义的,而是由类定义的,即你的文件。如果你不想在不同章节的标题之间留有空格,就不要添加空格,不要添加空格命令,否则可能会破坏 latex,因为它会重新定义其核心命令,使其不执行任何操作,

例如如果你的班级有

\def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne
                         \refstepcounter{chapter}%
                         \typeout{\@chapapp\space\thechapter.}%
                         \addcontentsline{toc}{chapter}%
                                   {\protect\numberline{\thechapter}#1}%
                    \else
                      \addcontentsline{toc}{chapter}{#1}%
                    \fi
                    \chaptermark{#1}%
                    %%%%%%%\addtocontents{lof}{\protect\addvspace{10\p@}}%
                    %%%%%%%\addtocontents{lot}{\protect\addvspace{10\p@}}%
                    \if@twocolumn
                      \@topnewpage[\@makechapterhead{#2}]%
                    \else
                      \@makechapterhead{#2}%
                      \@afterheading
                    \fi}

您课程中的章节将类似于报告课程中的章节,但不会增加 lot 和 lof 文件的空间。

答案2

编辑:请检查下面的@DavidCarlisle 评论,不要这样做

评论答案:

在你的序言或 cls 文件中添加以下行:

\let\originallistoffigures\listoffigures 
\renewcommand{\listoffigures}{{\def\addvspace##1{}\originallistoffigures}}

祝你好运!很高兴你成功了!祝你 TeXing 愉快!

答案3

.lof我认为您指的是在文件中消除这种影响:

\addvspace {10\p@ }
\contentsline {figure}{\numberline {1.1}{\ignorespaces first figure}}{3}{}%
\addvspace {10\p@ }
\contentsline {figure}{\numberline {2.1}{\ignorespaces second figure}}{5}{}%

我使用了这个输入:

\documentclass{book}
\begin{document}

\listoffigures

\chapter{One}

\begin{figure}[htbp]
  \centering
  some graphics
  \caption{first figure}
  \label{fig:1}
\end{figure}

\chapter{Two}

\begin{figure}[htbp]
  \centering
  some graphics
  \caption{second figure}
  \label{fig:2}
\end{figure}

\end{document}

获得你想要的东西的最简单的方法是

\begingroup
\renewcommand\addvspace[1]{}
\listoffigures
\endgroup

然而,\addvspace许多 LaTeX 构造都使用它,因此必须在实际案例中进行测试。当然,更改的范围是通过 来限制的\begingroup/\endgroup

输出: 图表列表输出

相关内容