\@tempskipa 是什么意思?

\@tempskipa 是什么意思?

查看源代码我无法弄清楚该命令的作用,我知道它是一个“跳过”(我承认我不知道跳过是如何工作的),因为它的定义是

\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。参见在哪里可以找到类似\@startsectionLaTeX 的命令的帮助文件或文档?. 第四个论点

\@startsection{<name>} % #1
  {<level>} % #2
  {<indent>} % #3
  {<beforeskip>} % #4
  {<afterskip>} % #5
  {<style>} % #6

表示<beforeskip>“绝对值 = 跳过标题上方的段落。如果为负数,则标题后面的文本段落缩进将被抑制。”现在应该明白如何\@tempskipa使用它来判断跳过值是否为负数,然后再转换为正数。

相关内容