当使用存储框时,如何获取 \baselineskip 而不是 \lineskip?

当使用存储框时,如何获取 \baselineskip 而不是 \lineskip?

考虑以下代码:

\documentclass{article}
\begin{document}
\pagestyle{empty}

\def\contents{%
  \parindent = 0pt
  \LARGE
  \strut
  \raise\baselineskip
    \vtop
      {%
        {\Large\smash{Chapter}\par}%
        title\par
      }%
  \par
}
\newbox\tempbox

\loggingoutput

\vspace*{20pt}%
\begingroup
  \contents
\endgroup

\clearpage

\vspace*{20pt}%
\setbox\tempbox\vbox
\bgroup
  \contents
\egroup
\noindent \box \tempbox

\end{document}

它们\contents应该是章节标题,Chapter写在一行中,章节标题写在下面一行中。

我使用这个\raise\baselineskip\vtop{...}装置可以删除Chapter带星号的章节中的文本,但章节标题仍然保留在页面的相同垂直位置。

一切都很好,直到我需要将这个章节标题放在一个框中,然后才能将其放在输出页面上。我以为只需将整个内容放在一个框中以便\vbox稍后使用\box就可以了,但如果可以的话,我就不会在这里问了 :)

日志显示第一页的情况:

...\glue 20.0
...\glue 0.0
...\glue(\parskip) 0.0 plus 1.0
...\glue(\baselineskip) 0.0
...\hbox(22.0+6.60007)x345.0

这是第二个:

...\glue 20.0
...\glue 0.0
...\glue(\parskip) 0.0 plus 1.0
...\glue(\lineskip) 1.0
...\hbox(22.0+6.60007)x345.0

唯一的区别是,在第一个中 TeX\baselineskip在内容前插入,而在第二个中它插入一个\lineskip

为什么会这样?又该如何做呢?

答案1

您使用了 a \vbox,因此参考点位于底线,因此框的高度为 22pt,因为这已经超过了\baselineskiptex,因此无法确保\baselineskip前一个节点的参考点与要添加的框的参考点之间的空间,因此改为插入\lineskip。您可以改用 a \vtop,这样可以更容易地在开始时获得正确的空间(而之后更难获得正确的空间)

嗯,实际上,我想这里的主要区别在于,第一种情况\baselineskip是来自大字体,所以它刚好适合(因此添加为 0pt),但在第二种情况下,大字体在框内,所以你使用的是小的基线跳跃。

\baselineskip (0pt) 得到

{\LARGE\noindent \box \tempbox\par}

相关内容