当 \@tempskipa

当 \@tempskipa

我只是想确认我的怀疑。这是否被编程为产生任何负面影响:

  • 没有垂直效果,因为没有一个心智健全的人会想要重叠的文本?
  • 因此禁用内联标题的缩进?

如果还有更多内容需要添加,请补充!如果我错了,请讲述这背后的真实故事。

在 source2e 文档中, \@startsection 有此代码来处理标题后面行的缩进。

\@tempskipa #4\relax
\@afterindenttrue
\ifdim \@tempskipa <\z@
  \@tempskipa -\@tempskipa \@afterindentfalse
\fi

答案1

在 source2e(或其组件 ltsect.dtx)中,你会发现它被记录为

 \begin{macro}{\@startsection}

 The |\@startsection{|\meta{name}|}{|\meta{level}|}{|%
       \meta{indent}|}{|\meta{beforeskip}|}|\\
     |{|\meta{afterskip}|}{|\meta{style}|}*[|\meta{altheading}%
     |]{|\meta{heading}|}|
 command is the mother of all the user level sectioning commands.
 The part after the |*|, including the |*| is optional.

 \begin{description}
 \item[name:] e.g., 'subsection'
 \item[level:] a number, denoting depth of section -- e.g.,
                  chapter = 0, section = 1, etc.
 \item[indent:] Indentation of heading from left margin
 \item[beforeskip:] Absolute value = skip to leave above the heading.
                If negative, then paragraph indent of text following
                heading is suppressed.
 \item[afterskip:] if positive, then skip to leave below heading, else
                negative of skip to leave to right of run-in heading.
 \item[style:] Commands to set style. Since June 1996 release the
               \emph{last} command in this argument may be a command
                such as |\MakeUppercase| or |\fbox| that takes an
                argument. The section heading will be supplied as the
                argument to this command. So setting |#6| to, say,
                |\bfseries\MakeUppercase| would produce bold,
                uppercase headings.
 \end{description}

因此,标题规范包括两个长度(跳过之前和之后)和两个布尔标志(显示或内联和缩进或不缩进),但标志由跳过的符号编码(这有点不幸,因为这意味着你不能使用 0pt 作为跳过,但仍然可以选择布尔值的设置)

因此,您显示的代码\@tempskipa如果为负数则会取反,因此它最终成为中指定的值的绝对值\@startsection,同时将标志设置\if@afterindent为 false 以抑制标题后第一个段落的段落缩进。

相关内容