我正在尝试{\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
。