
次のコードを考えてみましょう:
\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
1 行に書かれ、その下の行に章のタイトルが書かれます。
私はその\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
2番目は次のようになります。
...\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
コンテンツの前に挿入し、2 番目のものでは を挿入することです\lineskip
。
なぜそうなるのでしょうか? そして、そうしない方法は何でしょうか?
答え1
を使用しました。\vbox
そのため、参照ポイントは一番下の行にあり、ボックスの高さは 22pt です。これはすでに より大きいため、 texは前のノードの参照ポイントと追加されるボックスの参照ポイント間のスペース\baselineskip
を確保できず、代わりに が挿入されます。 代わりに を使用すると、開始時に正しいスペースを取得しやすくなります (ただし、その後に正しいスペースを取得するのは難しくなります)。\baselineskip
\lineskip
\vtop
うーん、実際のところ、ここでの主な違いは、最初のケースでは\baselineskip
大きなフォントから来ているのでちょうど収まる(したがって 0pt として追加される)のに対し、2 番目のケースでは大きなフォントがボックス内にあるので小さなベースライン スキップを使用しているということだと思います。
あなた\baselineskip (0pt)
は
{\LARGE\noindent \box \tempbox\par}