保存されたボックスを使用するときに、\lineskip の代わりに \baselineskip を取得するにはどうすればよいですか?

保存されたボックスを使用するときに、\lineskip の代わりに \baselineskip を取得するにはどうすればよいですか?

次のコードを考えてみましょう:

\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章の見出しとなるはずで、Chapter1 行に書かれ、その下の行に章のタイトルが書かれます。

私はその\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}

関連情報