为什么 TeX 会断开 -- 和 , 之间的界线?

为什么 TeX 会断开 -- 和 , 之间的界线?

我有以下内容\hbox,如果我将其取消装箱并将其放入段落(或者当我仅输入aaa --, bbb或时),TeX 会打破和aaa --\nobreak, bbb之间的界限。--,

> \box0=
\hbox(6.88875+1.94443)x46.1109
.\T1/lmr/m/n/10 a
.\T1/lmr/m/n/10 a
.\T1/lmr/m/n/10 a
.\glue 3.33333 plus 1.66666 minus 1.11111
.\T1/lmr/m/n/10 ^^U (ligature --)
.\T1/lmr/m/n/10 ,
.\glue 3.33333 plus 1.66666 minus 1.11111
.\T1/lmr/m/n/10 b
.\T1/lmr/m/n/10 b
.\T1/lmr/m/n/10 b

我的问题:

  1. 为什么会出现这样的断线情况?

  2. 为什么不禁\nobreak用换行符?

  3. --,是否可以修复它,以便当源文件包含(没有任何类似\hbox或的包装器)时不会发生换行符\mbox

答案1

TeX在当前字体中的 或以该字符结尾的任何连字符\discretionary{}{}{}后添加一个隐式项\hyphenchar(TeXbook,第 95 页,最后一个危险段落); 的默认值为\hyphenchar45,在 ASCII 中恰好是连字符。

\nobreakafter-没有任何作用,因为在第 95 页的顶部有一个可以换行的地方的列表,并且包含了可自由支配的项目;因此,在隐含的可自由支配的换行处换行是可能的,并且发出的惩罚\nobreak将被丢弃。

如果您不想在短划线后随意停顿,则可以使用\textendash直接按数字调用字符,这样就不涉及连字符。

答案2

您可以将连字符隐藏在框中。(如果能提供示例就更好了)

\documentclass{article}
\setlength\textwidth{2cm}

\begin{document}

aa--bb aa--bb aa--bb aa--bb aa--bb aa--bb aa--bb 


aa\mbox{--}bb aa\mbox{--}bb aa\mbox{--}bb aa\mbox{--}bb aa\mbox{--}bb aa\mbox{--}bb aa\mbox{--}bb 

\end{document}

答案3

Egreg 已经解释了为什么你会遇到这种情况。此外, \textendash你也可以使用 \nobreakdash(来自 amsmath)来避免这种情况:

\documentclass{article}
\usepackage{amsmath}

\setlength\textwidth{2cm}
\begin{document}

aa --, aa --, aa --, aa --, aa --, aa --, aa --,

\bigskip

aa --, aa \textendash, aa --, aa --, aa --, aa --, aa --,

\bigskip

aa --, aa \nobreakdash--, aa --, aa --, aa --, aa --, aa --,

\end{document}

在此处输入图片描述

相关内容