![有没有办法在包含破折号的单词的序言中禁用连字符](https://linux22.com/image/471427/%E6%9C%89%E6%B2%A1%E6%9C%89%E5%8A%9E%E6%B3%95%E5%9C%A8%E5%8C%85%E5%90%AB%E7%A0%B4%E6%8A%98%E5%8F%B7%E7%9A%84%E5%8D%95%E8%AF%8D%E7%9A%84%E5%BA%8F%E8%A8%80%E4%B8%AD%E7%A6%81%E7%94%A8%E8%BF%9E%E5%AD%97%E7%AC%A6.png)
我正在编写一个文档,其中我经常使用包含破折号的单词(“Foo-Bar”)。我想全局禁用该单词的连字符。这可能吗?我正在寻找可以在文档序言中使用的解决方案。我知道我可以使用命令在文档序言中设置连字符\hyphenation
,并且我可以使用此命令完全禁用给定单词的连字符,然后不包括任何破折号。但我不知道如何禁用本身包含破折号的单词的连字符。
主文档本身是用 Markdown 编写的(并使用 Pandoc 转换为 LaTeX 和其他格式),因此定义新命令(\def\FooBar{\mbox{Foo-Bar}}
)的典型解决方案不起作用——这就是为什么我正在寻找可以在文档序言中实现的解决方案。
答案1
你可以设置
\exhyphenpenalty=10000
-
这将在该设置范围内明确禁用所有连字符。
如果你使用 luatex,你可以全局地处理一个单词,因为它允许语法-
在连字模式中指定文字,或者你可以使用回调来input_buffer
全局替换foo-bar
\mbox{foo-bar}
对于 pdftex,你需要说服 pandoc 生成\mbox{foo-bar}
,或者在调用 pandoc 后在构建脚本中添加一行以运行
sed -i -e 's/foo-bar/\\mbox{foo-bar}/g' file.tex
并非所有事情都必须用 tex 来完成。