垂直ボックスの分割について

名前: 北見 けん
日時: 2006-08-08 13:27:41
IPアドレス: 211.128.71.*

垂直ボックスの特定の場所で改ページを可能にする方法を探しています。 何かアドバイスをいただけると助かります。 特定の場所というのは上からの決まった行数や長さで指定します。 そこで \vsplit を使うことになると思うので、例えば、 \setbox0=\vbox{ \hbox{一行目} \hbox{二行目} \hbox{三行目} \hbox{四行目} } \setbox2=\vsplit0 to 2\baselineskip% 二行分切り出す のように \vbox を分割して次のように配置しようと考えました。 \box2 % ここに、もともと二行目と三行目の間にあった行間グルーを入れたい \box0 つまり、分けたところで改ページを許可する一方で、 改ページされない場合にはもとと同じように組まれるようにしたいのですが、 分割によって失われたグルーを再び挿入する所で行き詰まっています。 適切な分量のグルーを入れるには、原理的には直前の行の深さと直後の行の高さが 必要だろうと思います。 分割地点のすぐ上の行(\box2 内の最後の行)の深さは分かるのですが、 分割地点のすぐ下の行(\box0 内の最初の行)の高さを取得する(あるいは TeX 自身に取得させる) よい方法が見つかりません。 \box0 内の先頭に自動的に挿入される \splittopskip が邪魔になるのです。 (\splittopskip を 0pt に設定しても挿入されます) 例えば \setbox0=\vtop{\unvbox0} などとやっても\box0 内の最初の行の高さが反映されません。 他に思いつくのは \box0 の中身を下から取り出していって最後に先頭の \splittopskip を捨ててしまう方法ですが、 取り出せるのはボックス、グルー、カーン、ペナルティーだけで、マークやスペシャルには対応できません。 なにかうまい方法は無いでしょうか。

この書き込みへの返事:

お名前
題名 
メッセージ(タグは <a href="...">...</a> だけ使えます。適宜改行を入れてください)