
この質問は、コードのスニペットを求めているわけではありません。
一般的なプラクティスを言葉で説明するよう求めています。
プレーン TeX では、水平モードで処理されるテキストの左側に画像または長方形のボックスを配置したいと思います。
画像を含む長方形のボックスの上部境界線は、テキストの最初の行の高さを示す境界線と垂直に揃える必要があります。(その高さは a の高さではなく、\strutbox
最初の行の内容によって異なります。キャップ ハイト、x ハイト、または文字の x ハイトとアセンダーの合計などです。)
水平方向には、画像を含むボックスの右境界線とテキスト行の左余白の間に約 1/3 インチの隙間が必要です。
いずれの場合でも、画像とテキストはドキュメントの余白にはみ出さないでください。
したがって、テキストの幅は、通常のテキスト行の幅から水平方向の隙間の幅 (1/3 インチ) を減じ、画像の幅を減じた幅になります。
テキストが画像よりも垂直方向のスペースを占める場合、ページ区切りがないと、画像を含む長方形のボックスの下の境界線より下に垂直に終わるテキスト行でページ区切りが発生する可能性があります。
テキストが画像よりも垂直方向のスペースをとらない場合、テキストの下に、画像の高さ + 画像の奥行き - テキストの高さ - テキストの奥行きの長さの垂直方向のギャップが必要です。
今のところ、私は次のアプローチを検討しています。
画像と水平方向の間隔を水平ボックス内に配置します。これを と呼びますimagebox
。
画像ボックスの幅を測定します。
テキストを 0pt で、イメージボックスの幅と通常のテキスト行の幅の差に等しいボックスに入力します\vtop
。\topskip
この\hsize
ボックス
を「中間テキストボックス」と呼びます。
画像ボックスに新しい深さを割り当てます: 画像ボックスの高さ + 画像ボックスの深さ - 中間テキストボックスの高さ。
画像ボックスに新しい高さを割り当てます: 「中間テキストボックス」の高さ。
ケース 1: テキスト ボックスが画像ボックスよりも垂直に大きい場合:
イメージボックスの幅と通常のテキスト行の幅の差に等しく、
\vbox
イメージボックスの幅に等しく、最初の行が( を考慮に入れて) イメージボックスと、イメージボックスの深さに等しい長さの負の (上向きの) 垂直スキップを含む、のない「内部」を保持するで始まる「周囲の」を作成します。その後にテキストが続きます。\hsize
\leftskip
\llap
\parindent
\vbox
\topskip
\llap
\unvbox
\vbox
ケース 2: テキスト ボックスが画像ボックスよりも縦に小さい場合:
画像ボックスの幅に等しく、最初の/唯一の行として画像ボックスを含む「周囲の
\vbox
」を作成し、その最初の行に「中間テキストボックス」を含む「内部」と、中間テキストボックスの深さに等しい長さの負の(上向きの)垂直スキップが含まれます。\hsize
\rlap
\vbox
質問:
広告ケース 1: イメージボックスが下部の余白にはみ出さないようにするにはどうすればよいでしょうか。\llap
「周囲\vbox
」内に、イメージボックスの深さと同じ長さの垂直方向の正 (下方向) スキップ、ペナルティの大幅な減少、同じくイメージボックスの深さと同じ長さの負 (上方向) 垂直スキップの順に配置すれば十分でしょうか。
ケース 2: 「周囲\vbox
」と「内側\vbox
」の両方が編集されていません。これらの垂直ボックスの上部にある垂直接着剤が、「周囲」と「内側」が存在しないかのように、「\unvbox
周囲」の上の垂直接着剤と結合していることをどのように確認しますか?\vbox
\vbox
\vbox