\section
对于自定义应用程序,我们使用 DVI 作为中间格式并将其提供给转换器。我们的转换器需要一个“提示”来定位DVI 文件中的开头。因此,我们修改了文章.cls\special
在某个部分的开头插入自定义内容(下面例子中为“foobar”)。
原始文件:
\newcommand\section{\@startsection {section}{1}{\z@}%
{-3.5ex \@plus -1ex \@minus -.2ex}%
{2.3ex \@plus.2ex}%
{\normalfont\Large\bfseries}}
修改的文件:
\newcommand\section{\special{foobar}\@startsection {section}{1}{\z@}%
{-3.5ex \@plus -1ex \@minus -.2ex}%
{2.3ex \@plus.2ex}%
{\normalfont\Large\bfseries}}
现在,当我们使用这个修改后的类时,我们会在每个部分之前得到一个不必要的额外垂直间距。间距大约是一个文本行的高度。我们如何避免这种情况?
答案1
在垂直模式下添加\special
会导致各种麻烦。如果可能的话,你应该避免这种情况。我会在排版标题之前添加它在包含标题文本的水平列表中。
\let\old@sect\@sect
\def\@sect#1#2#3#4#5#6[#7]#8{%
\old@sect{#1}{#2}{#3}{#4}{#5}{#6}[{#7}]{\leavevmode\special{foo}#8}}