我经常需要在已经很拥挤的文档中插入更多内容。由于 LaTeX 会自动拉伸空格以美观且最佳地填充页面,因此我有时很难找到可以插入额外行的位置。
是否有一些关于如何定位可能被利用的拉伸空间的提示,可能是某个包可以标记所需最小空间和自动添加的拉伸空间之间的差异?也欢迎提供其他提示。
答案1
我上个月的评论一直困扰着我,直到我记起我在占位符文本周围的圆角框支持换行(我试图消除这种间隙效果),并决定值得尝试进行调整以增强它。我所做的是用交替的颜色(这里cyan!80
和cyan!60
)绘制交替字母的自然空间。我将空格的自然宽度绘制在中,cyan
将句点绘制在中cyan!95
。我发现如果我选择截然不同的颜色,就会变得太混乱了。
水平拉伸的线条可以通过单词之间的白色间隙快速观察到。我选择了\vgap
2.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”的比较一样,其中右侧的字距已被单词间空格消除。
未压缩与压缩
。 。 。。 。 。 。 。 。 。