\color 命令的换行问题。pdflatex pdfcolorstack 插入框吗?

\color 命令的换行问题。pdflatex pdfcolorstack 插入框吗?

着色命令有时会改变 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在您的第一个例子中不被视为连字,但字母和方框之间的颜色确实允许将该单词视为单词。

相关内容