使用儲存框時如何取得 \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從加星標的章節中刪除文本,但章節標題仍然位於頁面的同一垂直位置。

一切都很好,直到我需要將本章標題放在一個框中,然後再將其放在輸出頁面上。我認為簡單地將整個內容封裝在 a 中\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內容之前插入,而在第二個中,TeX 插入一個\lineskip.

為什麼要這樣做?否則怎麼辦?

答案1

您使用了 a \vbox,因此參考點位於底線,因此框的高度為 22pt,因為這已經超過了\baselineskiptex 無法確保\baselineskip前一個節點的參考點與要新增的框的參考點之間的空間,因此它會\lineskip插入。您可以使用 a \vtop代替,這使得在開始時更容易獲得正確的空間(並且之後更難獲得正確的空間)

嗯,實際上我認為這裡的主要區別是,在第一種情況\baselineskip下來自大字體,因此它正好適合(因此添加為0pt),但在第二種情況下,大字體在框內,因此您使用的是小基線跳過。

\baselineskip (0pt) 得到

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

相關內容