为包含特殊字符的单词添加连字模式

为包含特殊字符的单词添加连字模式

\hyphenation命令可用于向文档全局添加额外的连字模式。这对于一般连字模式中不存在的特殊单词非常有用。

\hyphenation{
  chro-no-ampe-ro-met-ric
  mic-ro-graphs}

上面的例子使得 LaTeX 能够选择性地在所有包含破折号的地方用连字符连接两个单词“chronoamperometric”和“micrographs”。

\hyphenation{
  chro-mium-(III)
  chro-no-am-pe-ro-met-ric
  mic-ro-graphs}

我想将诸如“chromium(III)”之类的单词添加到连字符模式中(如上例所示),但括号会导致错误(“不是字母”)。如何让带括号的单词自动连字符?

理想情况下,我还希望能够向 LaTeX 指定,对于已经符合连字规则的任何单词,如果其后跟括号内的内容,也继续对其进行连字,并增加在单词和左括号之间进行连字的可能性。

答案1

按照第一条评论中 Daи 的指示,括号旁边的连字符,并转到 David 的 Carlisle 的回答,发现无需使用宏(Mico 的建议)即可完成任务。事实上,连字符甚至可以在括号内出现,如上一个示例所示。

\documentclass{article}
\lccode`\(`\(
\lccode`\)`\)
\lccode`\[`\[
\lccode`\]`\]

\hyphenation{chro-mium-(III)}
\hyphenation{lam-bic-(Bel-gian)} 

\setlength\textwidth{1mm} % just for this example
\begin{document}

. chromium(III) % start with some character b/c pdflatex doesn't hyphenate the first word of a paragraph

. lambic(Belgian)

\end{document}

在此处输入图片描述

在那个回答中,当 LOVER OF STRUCTURE 问到“你的前四个命令有副作用吗?”时,David 回答道

“是的,他们为连字算法制作了 ()[] 字母,因此(foobar)将被查找为 8 个字母的单词(foobar)而不是 6 个字母的单词foobar,这可能会影响整个连字。但如果你将其限制在仅包含技术构造的区域,那么它可能没问题,因为自然语言连字模式并不总是适合那里。”

我应该补充一下(史蒂文又说话了),大卫的话“影响连字符无处不在”不应被理解为“防止对未专门设置连字模式的括号内单词进行连字。”在下面的 MWE 中,我们看到定义\lccode并不妨碍对括号内的单词进行连字:

\documentclass{article}
\lccode`\(`\(
\lccode`\)`\)
\lccode`\[`\[
\lccode`\]`\]

\setlength\textwidth{1in} % just for this example
\begin{document}
Testing (calisthenics)

Testing calisthenics 
\end{document}

在此处输入图片描述

相关内容