TeXbook 中关于练习 6.6 的问题

TeXbook 中关于练习 6.6 的问题

练习 6.6 的答案是:

TeX 会尝试在\dash

但下面的例子表明事实并非如此。

\def\extraspace{\nobreak \hskip 0pt plus .15em\relax}
\def\dash{\unskip\extraspace---\extraspace}

\hsize=0pt
\hfuzz=10000pt
\noindent\nobreak\hskip0pt a\dash b
\bye

练习答案中的这句话是什么意思?

\nobreak(此外,第二个似乎\extraspace什么也没做。为什么?)

在此处输入图片描述

答案1

这意味着它将尝试将单词在破折号之前,但是在您的示例中,该词a不能用连字符连接。

如果你添加\showlists你会看到

### horizontal mode entered at line 7
\penalty 10000
\glue 0.0
\tenrm a
\penalty 10000
\glue 0.0 plus 1.49994
\tenrm | (ligature ---)
\discretionary
\penalty 10000
\glue 0.0 plus 1.49994
\tenrm b
spacefactor 1000

nobreak 惩罚会在粘合处停止中断,但允许在前面中断,因为它是由涉及连字符的连字符\discretionary生成的。---

相关内容