自定义 \special 命令导致不需要的空格

自定义 \special 命令导致不需要的空格

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

相关内容