
考慮這段程式碼:
\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,因為這已經超過了\baselineskip
tex 無法確保\baselineskip
前一個節點的參考點與要新增的框的參考點之間的空間,因此它會\lineskip
插入。您可以使用 a \vtop
代替,這使得在開始時更容易獲得正確的空間(並且之後更難獲得正確的空間)
嗯,實際上我認為這裡的主要區別是,在第一種情況\baselineskip
下來自大字體,因此它正好適合(因此添加為0pt),但在第二種情況下,大字體在框內,因此您使用的是小基線跳過。
你\baselineskip (0pt)
得到
{\LARGE\noindent \box \tempbox\par}