着色命令有时会改变 TeX 的换行方式。下面是一个简单的例子:
\documentclass{article}
\begin{document}
% Used to produce log statements below this snippet.
\tracingparagraphs=1
% First time (uncolored)
Apple orange banana lime plum grape blueberry currant blackberry
boisenberry\hbox{BOX} % <-- The only difference is the "boisenberry" line
avocado pluot apricot peach tomato lemon
persimmon raspberry strawberry cherry nectarine pineapple guava
mango lychee dragonfruit.
% Second time (with color)
Apple orange banana lime plum grape blueberry currant blackberry
boisenberry\pdfcolorstack0 push {1 0 0 rg 1 0 0 RG}\hbox{BOX}\pdfcolorstack0 pop
avocado pluot apricot peach tomato lemon
persimmon raspberry strawberry cherry nectarine pineapple guava
mango lychee dragonfruit.
\end{document}
上面,我使用\pdfcolorstack
命令而不是color
包来着色,因为这是导致这种行为的颜色命令的最小部分。
将上述 TeX 放入名为 的文件中example.tex
,并使用基于 pdftex 的命令(如 )对其进行编译latexmk -pdf example
,您将看到以下输出:
上面,当没有颜色时,没有连字符(尽管对于这个小例子,忽略行已满)。当水平盒子周围有颜色时,换行算法会将“boisenberry”连字符化。这是我见过的换行中意想不到的差异。
编译日志example.log
显示,[]
着色时,水平列表中添加了额外的元素。这会影响换行算法吗?以下是没有颜色的换行算法的日志(重要的行以######
...开头)
@firstpass
@secondpass
################# See below, boisenberry followed by 1 "[]"
[]\OT1/cmr/m/n/10 Apple or-ange ba-nana lime plum grape blue-berry cur-rant bla
ck-berry boisenberry[]
@ via @@0 b=* p=0 d=*
@@1: line 1.3 t=0 -> @@0
av-o-cado pluot apri-cot peach tomato lemon per-sim-mon rasp-berry straw-berry
@ via @@1 b=51 p=0 d=13721
@@2: line 2.1 t=13721 -> @@1
cherry nec-tarine pineap-ple guava mango ly-chee drag-on-fruit.
@\par via @@2 b=0 p=-10000 d=*
@@3: line 3.2- t=13721 -> @@2
这是带有颜色的日志:
@firstpass
@secondpass
[]\OT1/cmr/m/n/10 Apple or-ange ba-nana lime plum grape blue-berry cur-rant bla
ck-berry boisen-
@\discretionary via @@0 b=1 p=50 d=2621
@@1: line 1.2- t=2621 -> @@0
################# See below, boisenberry followed by 3 "[]"s
berry[][][] av-o-cado pluot apri-cot peach tomato lemon per-sim-mon rasp-berry
@ via @@1 b=78 p=0 d=7744
@@2: line 2.1 t=10365 -> @@1
straw-berry cherry nec-tarine pineap-ple guava mango ly-chee drag-on-fruit.
@\par via @@2 b=0 p=-10000 d=*
@@3: line 3.2- t=10365 -> @@2
为什么pdflatex
在这两种情况下文本的布局不同?如果我想将这些命令保留在相同的位置(即,在本例中位于 hbox 的外面),是否有某种方式可以重写命令,或者编写命令来消耗添加的空间,以便两个段落具有完全相同的换行符?
答案1
紧跟在方框后面的字母在 tex 的连字单词扫描中不构成“单词”,因此boisenberry
在您的第一个例子中不被视为连字,但字母和方框之间的颜色确实允许将该单词视为单词。