删除/减少 acm_proc_article-sp 段落之间的垂直间距

删除/减少 acm_proc_article-sp 段落之间的垂直间距

我需要使用某个文档类 (acm_proc_article-sp),该类会在段落之间引入垂直空间。我想删除或至少减少该空间,但我无法做到。

以下是重现该问题的最小文件:

\documentclass{acm_proc_article-sp}

\begin{document}

\section{Introduction}

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer lobortis sagittis  libero, et mattis arcu vehicula at. Morbi a hendrerit diam. Quisque quis rhoncus mauris. 

Nulla tempor molestie aliquet. Nulla quis sapien sapien, non egestas dui. Phasellus consectetur blandit orci, ut viverra urna dapibus sit amet. 

\end{document}

现在我尝试使用 来更改垂直空间\partopsep\parskip也尝试使用包parskip。 完全没有变化。

我知道这是一个非常具体的问题,因为它可能只与此文档类有关,但由于我对 LaTeX 还比较陌生,我不知道下一步该怎么做。任何帮助我都非常感谢。

答案1

我找到了相关类文件的副本这里;假设这与您正在使用的相同,罪魁祸首就是以下注释:

\parskip 0pt        % Extra vertical space between paragraphs.
                    % Set to 0pt outside sections, to keep section heads
                    % uniformly spaced.  The value of parskip is set
                    % to leading value _within_ sections.
                    % 12 Jan 2000 gkmt

果然,进一步查看文档,我们发现在部分命令的定义中,\parskip被重置了。例如:

\def\@ssect#1#2#3#4#5{%
  \@tempskipa #3\relax
  \ifdim \@tempskipa>\z@
    \begingroup
      #4{%
        \@hangfrom{\hskip #1}%
          \interlinepenalty \@M #5\@@par}%
    \endgroup
  \else
    \def\@svsechd{#4{\hskip #1\relax #5}}%
  \fi
  \vskip -10.5pt  %gkmt, 7 jan 00 -- had been -14pt, now set to parskip
  \@xsect{#3}\parskip=10.5pt} % within the starred section, parskip = leading 12 Jan 2000 gkmt

\parskip=10.5pt末尾的innocuous表示每次使用\section\subsection\subsubsection或命令时,都会重置为。 (该命令的结尾相同。)\paragraph\parskip10.5pt\@sect

因此,为了减少\parskip,您需要在每次开始一个部分或其他时候减少它。根据您的需要,可以采取多种策略。最简单的方法是将类文件副本放在与 TeX 文件相同的目录中,然后简单地编辑掉多余的部分\parskip=10.5pt(实际上,编辑掉它们两个:一个来自\@ssect,一个来自\@sect)。如果您因为某种原因需要保持类文件原始状态,那么您可以在序言中重新定义这些命令。最简单的方法是简单地从类文件中复制出定义,并对 进行适当的修改\parskip。如果您这样做,那么复制的定义需要夹在 之间\makeatletter ... \makeatother

如果你想更花哨一点,你可以让\section命令记住\parskip它们被调用时是什么,然后在最后重置它。这将涉及黑客攻击来自类文件的命令,因为命令\@startsection 与 混淆\parskip。因此它应该是这样的(未经测试!):

\makeatletter
\let\orig@startsection=\@startsection
\let\orig@ssect=\@ssect
\let\orig@sect=\@sect
\newskip\orig@parskip
\orig@parskip\parskip % just for safety's sake!

\def\@startsection{%
 \orig@parskip\parskip%
 \orig@startsection}

\def\@ssect#1#2#3#4#5{%
 \orig@ssect{#1}{#2}{#3}{#4}{#5}%
 \parskip\orig@parskip}

\def\@sect#1#2#3#4#5#6[#7]#8{%
 \orig@sect{#1}{#2}{#3}{#4}{#5}{#6}[#7]{#8}%
 \parskip\orig@parskip}

\makeatother

相关内容