在调查连字符和破折号的问题时,我遇到了以下问题:
a piece---perhaps an installation---, involving structural feedback
文档类别为article
。问题是installation
未使用连字符,因此产生了一个过满的行,并installation---
移到了右边距,下一行以逗号开头。
现在我碰巧尝试了这个,并且解决了这个问题:
a piece---perhaps an installation\textemdash, involving structural feedback
正确地打破界限,例如
...instal-
lation---, involving...
对我来说,这似乎违反直觉,我更喜欢在源代码中看到三个连字符,这样更易读。有办法解决这个问题吗?
对我来说这显然是一个乳胶错误,因为破折号的标准用法指出:“根据大多数美国消息来源 [...] 和一些英国消息来源 [...],破折号应该始终设置为闭合的,这意味着它不应该被空格包围。”
答案1
您至少有三种可能的选择:
- 使用
\textemdash
而不是---
。您已经在问题中提到了这一点,这对您来说似乎是违反直觉的。 - 手动声明 前面单词的有效连字点
---
。 - 加载
babel
包并使用\allowhyphens---
。我认为这种方法会给你更接近你想要的东西,因为你可以将某个字符声明为活动的("
例如)并将命令定义"---
为\allowhyphens---
;然后你将写入"---
以获取允许对前一个单词进行连字符连接的破折号(这种方法是由 Javier Bezos 在模块中实现类似的简写时使用的spanish
)babel
。
下面是一些显示问题和我提到的三种替代方案的代码:
\documentclass{article}
\usepackage[english]{babel}
\begin{document}
some filler text to illustrate the problem here's a piece---perhaps an installation---, involving structural feedback
some filler text to illustrate the problem here's a piece---perhaps an installation\textemdash, involving structural feedback
some filler text to illustrate the problem here's a piece---perhaps an installation\allowhyphens---, involving structural feedback
some filler text to illustrate the problem here's a piece---perhaps an in\-stal\-la\-tion---, involving structural feedback
\end{document}
下面是一些可用于实现我在上面第三个数字中的建议的代码:
\documentclass{article}
\usepackage[english]{babel}
\catcode`"=13
\def"-{\allowhyphens-}
\begin{document}
some filler text to illustrate the problem here's a piece---perhaps an installation---, involving structural feedback
some filler text to illustrate the problem here's a piece---perhaps an installation"---, involving structural feedback
\end{document}
还有另一种选择,取自Herbert 的回答到babel:将德语简写添加到英语作为主要文档语言(谢谢埃格尔指出这个问题的方法是使用spanish
模数作为辅助语言并使用其已经存在的简写:
\documentclass{article}
\usepackage[spanish,english]{babel}
\useshorthands{"}
\addto\extrasenglish{\languageshorthands{spanish}}
\begin{document}
some filler text to illustrate the problem here's a piece---perhaps an installation---, involving structural feedback
some filler text to illustrate the problem here's a piece---perhaps an installation"---, involving structural feedback
\end{document}
答案2
installation---
不允许 TeX 对单词进行连字符连接的原因在 TeXbook (第 95 页) 中进行了解释:
最常见的自由分隔符是简单的自由分隔连字符
\discretionary{-}{}{}
TeX 接受缩写 '
\-
'。下一个最常见的情况是\discretionary{}{}{}
(“空的自由字符”),TeX 会自动将其插入到 '
-
' 之后以及每个以 ' ' 结尾的连字符之后-
。因此,在纯 TeX 的情况下,空的自由字符会插入到连字符和破折号之后。(每种字体都有一个关联的\hyphenchar
,为简单起见,我们可以假设它等于 '-
'。)
相反,LaTeX 定义
\DeclareTextSymbol{\textemdash}{OT1}{124}
或者,使用 T1 编码,
\DeclareTextSymbol{\textemdash}{T1}{22}
这样命令就\textemdash
直接选择一个字符,而不经过连字机制,从而不会插入空的自由字符。
我认为你应该使用---
,手动纠正可能的错误中断,并在困难的情况下决定是否将破折号旁边的单词连字符连接起来是较小的危害。
答案3
除了其他答案中已经提到的解决方案之外,另一个解决方案是在和\nobreak\hskip0pt
之间插入。这样,TeX 可以将单词“installation”连字符化,但在和破折号之间不会有换行符。installation
---
tion
答案4
如果出现奇怪的行为或外语,你可以手动指示 LaTeX 像这样对你的单词进行连字符处理
in\-stal\-la\-tion
\-
显示可能的连字符。