我需要使用某个文档类 (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
\parskip
10.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