
這個問題並不是要求程式碼片段。
它要求用文字描述一般做法。
在 plain TeX 中,我想在一些以水平模式處理的文字的左側放置一個圖像/一個矩形框。
包含影像的矩形框的上邊界線應與表示文字第一行高度的邊界線垂直對齊。 (該高度不是 a 的高度,\strutbox
而是取決於第一行的內容。它可能是大寫高度,也可能是 x 高度或 x 高度與某個字母的上行高度之和,或者其他。 )
在水平方向上,包含圖像的框的右邊界線與文字行的左邊界之間應有約 1/3 英吋的間隙。
在任何情況下,圖像和文字都不得黏在文件的邊緣。
因此,文字的寬度應該是正常文字行的寬度減去水平間隙的寬度(1/3 英吋)並減去圖像的寬度。
如果文字比圖像佔用更多的垂直空間,則文字行可能會發生分頁,如果沒有分頁,文字行將垂直結束於包含圖像的矩形框的下邊界線下方。
如果文字佔用的垂直空間小於圖像,則文字下方應有一個垂直間隙,其長度為圖像高度+圖像深度-文字高度-文字深度。
現在我考慮以下方法:
將影像和水平間隙放入水平框中。我們稱之為imagebox
.
測量圖像框的寬度。
將文字放入\vtop
0pt\topskip
且\hsize
等於圖像框寬度與常規文字行寬度之差的文字中。
我們將該框稱為「中間文字方塊」。
為圖像框指定新的深度:圖像框的高度 + 圖像框的深度 - 中間文字框的高度。
為圖像框指定一個新的高度:「中間文字方塊」的高度。
情況 1:如果文字方塊在垂直方向上大於圖像方塊:
創建一個“周圍
\vbox
”,其\hsize
等於圖像框的寬度與常規文字行的寬度之差,並且其\leftskip
等於圖像框的寬度,並且其第一行以\llap
(考慮\parindent
到)持有“內部\vbox
”的no\topskip
,包含圖像框和負(向上)垂直跳躍,其長度等於圖像框的深度。接下來\llap
是正文。\unvbox
周圍的\vbox
。情況 2:如果文字方塊在垂直方向上小於圖像框:
創建一個“周圍
\vbox
”,其\hsize
等於圖像框的寬度,並且作為第一行/唯一一行包含圖像框,其第一行包含\rlap
一個“內部\vbox
”和“中間文字框”,後跟一個負(向上)垂直跳躍,其長度等於中間文字方塊的深度」。
問題:
廣告案例1:如何保證imagebox不會黏在底部邊距?\llap
在「周圍\vbox
」內跟隨一個垂直正(向下)跳躍,其長度等於圖像框的深度,然後顯著減少懲罰,然後是一個負(向上)垂直跳躍,其長度也等於圖像框的深度,這是否足夠影像框的深度?
廣告案例2:「周圍\vbox
」和「內部\vbox
」均未\unvbox
編輯。如何確保這些垂直盒子頂部的垂直膠水與「周圍\vbox
」頂部的垂直膠水結合在一起,就好像「周圍\vbox
」和「內部\vbox
」不存在一樣?