如何找出附加線適合的位置?

如何找出附加線適合的位置?

我經常面臨需要將更多內容放入已經相當擁擠的文檔中的情況。鑑於 LaTeX 會自動拉伸空間以完美且最佳地填充頁面,我發現有時很難找到可能適合附加行的位置。

是否有一些關於如何定位可能被利用的拉伸空間的提示,可能是一個軟體包,可以對所需的最小空間和自動添加的拉伸空間之間的差異進行著色?也歡迎其他提示。

答案1

上個月的評論一直困擾著我,直到我想起我在支援換行的佔位符文字周圍的圓形框(我試圖消除這種間隙效應),並決定值得嘗試適應以增強它。我所做的就是用交替的顏色繪製交替字母的自然空間(此處cyan!80cyan!60)。我在 中繪製空間的自然寬度,cyan並在 中繪製句點cyan!95。我發現如果我選擇截然不同的顏色就會變得太混亂。

可以快速觀察到水平拉伸的線條以及單字之間的白色間隙。我選擇了\vgap2.5pt 的行間距,因為該值將青色規則設定在與字母本身相似的高度(如果間隙太小,青色規則本身會影響行間距)。儘管如此,還是可以注意到垂直間隙差異。

我應該指出,這種方法會抑制連字符,因此它可能無法與涉及換行符的未標記文字進行直接比較。出於同樣的原因,雖然我已將其應用於此 MWE 中的完整文檔文本,但可以選擇性地包含部分文本(它是宏形式,將文本包含在一{}組中),並且可能通過僅突出顯示一個文本來獲取所需的數據。

\documentclass{article}
\usepackage{censor}
\usepackage{xcolor}
\newlength\vgap
\vgap=2.5pt% GAP BETWEEN ADJACENT LINES (THIS VALUE CONFORMS TO LETTER SIZES)
\textheight=3.03in

\makeatletter
\def\mystrut{\rule%
  [\dimexpr-\dp\strutbox+.5\vgap]{0pt}{\dimexpr\ht\strutbox+\dp\strutbox-\vgap}}
% SET ALL LAPS TO 0pt...
\periodrlap=0pt\relax
\afterperiodlap=0pt\relax
\lletterlap=0pt\relax
\rletterlap=0pt\relax
% EXCEPT THE SPACE LAP, WHICH IS SET TO NATURAL SPACE WIDTH
\setbox0=\hbox{ }
\afterspacelap=\wd0\relax% THE NATURAL SPACE WIDTH

\renewcommand\censorrule[1]{%
\protect\colorbox{cyan}{\mystrut\rule[\censorruledepth]{#1}{0pt}}}

\newcounter{colindex}
\edef\cencolora{cyan!80}
\edef\cencolorb{cyan!60}
\def\chcolor{\stepcounter{colindex}\ifnum\thecolindex=2%
  \def\cencolor{\cencolorb}\setcounter{colindex}{0}\else%
  \def\cencolor{\cencolora}\fi}
\chcolor

\renewcommand\@cenword[1]{\colorbox{\cencolor}{\mystrut#1}\chcolor}

\def\censordot{\colorbox{cyan!95}{\mystrut.}}

\let\marktext\xblackout

\makeatother
\fboxsep=0pt
\parindent 0in
\flushbottom
\begin{document}

\marktext{Note however, that auto-hypenation will NOT work with this approach.

Can this procedure go across paragraphs boundaries?

Why yes it can.

Gaps can arise if glue is stretched too far.

NEXT LINE STARTS A PARBOX:}

\parbox{.8\textwidth}{\marktext{%
This tests marking a multiline block of text.  This tests marking a multiline block of text.
This tests marking a multiline block of text.  This tests marking a multiline block of text.
This tests marking a multiline block of text.}}

\marktext{%
NOT IN A PARBOX:

This tests marking a multiline block of text.  This tests marking a multiline block of text.
This tests marking a multiline block of text.  This tests marking a multiline block of text.
This tests marking a multiline block of text.}
\end{document}

從全局來看,我們可以看到parbox上方和下方的垂直間隙已被顯著擠壓。

在此輸入影像描述

在這個縮放中,我們觀察到不同線上的水平拉伸差異。最後一行上的“f”沒有被擠壓......它自然地懸垂在其邊界框上。

在此輸入影像描述

如果仔細觀察,壓縮文字也會表現出明顯的痙攣,就像在字母「e」的比較中一樣,右側的緊排已被詞間空間廢除。

未壓縮與壓縮

。 。 。在此輸入影像描述。 。 。 。 。 。 。在此輸入影像描述

相關內容