使用 \discretionary 组合单词内部连字

使用 \discretionary 组合单词内部连字

我一直在抄写一本古老的公共领域小说,并试图使用 Latex 将其排版得尽可能接近该书的原始格式。我采用了 Memoir 模板并为此进行了修改,但我并不是 Latex 专家。这本小说的一个特点是通常使用 em 破折号来表示旁白,而破折号前面或后面的单词之间没有任何空格,如下所示:

一些文字的照片,展示了如何使用不带空格的破折号

当我排版此内容时(仅在文件中使用长划线字符“—”),它导致 Latex 将“邻居—即”视为一个不会拆分的大词,从而导致行大量延伸到边距。为了解决这个问题,我使用命令\discretionary来允许拆分这些(基于这个答案)像这样:

\let\emdash\textemdash
\renewcommand{\textemdash}{\discretionary{\emdash}{}{\emdash}}

这种方法大部分情况下都有效,但我发现,当应用这种方法时,Latex 只会在这些情况下在破折号处断开,它不会断开单个单词,即使这样做更有意义。例如:

单词 Drumglass 后面跟着一个贯穿页面边缘的破折号

我为单词 Drumglass 设置了连字规则。

\hyphenation{Drum-glass}

我希望这一行被分解成如下形式:

  “So the old man is still bent upon being lord of Drum-
glass—monarch of all he surveys—or rather[...]

而不是跑到边缘。

有没有办法告诉 Latex 既允许它在破折号处断开,又可以在执行连字符操作后如果行仍然延伸到边距,那么仍然可以对单个单词进行连字符处理?

编辑:正如 David Carlisle 在评论中所建议的那样,我用以下内容替换了自由裁量命令:

\let\emdash\textemdash
\renewcommand{\textemdash}{\nolinebreak\hspace{0pt}\emdash\hspace{0pt}}

答案1

我将把这个作为答案发布出来,这样这里就有答案了,而不仅仅是在评论中,但感谢 David Carlisle 提供了这个解决方案。我已将命令替换\discretionary为这个命令,它似乎完全按照我想要的方式运行:

\let\emdash\textemdash
\renewcommand{\textemdash}{\nolinebreak\hspace{0pt}\emdash\hspace{0pt}}

相关内容