查看源代码我无法弄清楚该命令的作用,我知道它是一个“跳过”(我承认我不知道跳过是如何工作的),因为它的定义是
\newskip\@tempskipa
一个儿子latex.ltx
文件,但在分段命令中随处使用而没有精确的设置。
答案1
顾名思义,它是一个临时(或暂存)跳过寄存器。LaTeX 定义了两个这样的寄存器,\@tempskipa
和\@tempskipb
。跳过寄存器是长度寄存器,可能包含粘连(拉伸或收缩)。
LaTeX 定义了这些临时跳过,用于各种计算和条件。具体来说,在\@startsection
(在latex.ltx
),它看起来是这样的:
\def\@startsection#1#2#3#4#5#6{%
\if@noskipsec \leavevmode \fi
\par
\@tempskipa #4\relax
\@afterindenttrue
\ifdim \@tempskipa <\z@
\@tempskipa -\@tempskipa \@afterindentfalse
\fi
\if@nobreak
\everypar{}%
\else
\addpenalty\@secpenalty\addvspace\@tempskipa
\fi
\@ifstar
{\@ssect{#3}{#4}{#5}{#6}}%
{\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}}
线路
\@tempskipa #4\relax
\@startsection
实际上是将中的第四个参数赋值给\@tempskipa
,因为“赋值运算符”=
是可选的。随后
\ifdim \@tempskipa <\z@
\@tempskipa -\@tempskipa \@afterindentfalse
\fi
\@tempskipa
进行检查\z@
(即长度0pt
)。如果\@tempskipa
小于0pt
(换句话说,为负数),则通过以下方式将其更改为正数:
\@tempskipa -\@tempskipa
请记住,赋值运算符是可选的,因此上述语句会更改\@tempskipa
。稍后,\@tempskipa
通过 将其添加到垂直空间(如果需要)\addvspace
。
回到第四个参数\@startsection
。参见在哪里可以找到类似\@startsection
LaTeX 的命令的帮助文件或文档?. 第四个论点
\@startsection{<name>} % #1
{<level>} % #2
{<indent>} % #3
{<beforeskip>} % #4
{<afterskip>} % #5
{<style>} % #6
表示<beforeskip>
“绝对值 = 跳过标题上方的段落。如果为负数,则标题后面的文本段落缩进将被抑制。”现在应该明白如何\@tempskipa
使用它来判断跳过值是否为负数,然后再转换为正数。