单词category
会自动连字符,就像cate-gory
latex 一样,但前缀$\infty$-
不会。手动输入 仍然有效$\infty$-cate\-gory
,但\hyphenation{$\infty$-cate-gory}
lualatex 显然会忽略前缀中的 ,并在 pdflatex 中给出错误消息。
有没有办法可以自动对带有数学前缀的单词进行连字符连接$\infty$-category
?
编辑:
这是我在 arxiv 上找到的有用的东西。但它迫使我写一些其他东西来代替通常的连字符,我更喜欢一种可以只写普通连字符的解决方案。
\documentclass{article}
\usepackage[shortcuts]{extdash}
\newcommand\oo[1]{$\infty$\=/}
\begin{document}
This is a sufficiently long line of text with many words
and ending in \oo-category.
Or without the newcommand:
This is a sufficiently long line of text with many words
and ending in $\infty$\=/category.
\end{document}
答案1
这不是一个真正的答案,而且我担心它可能对你没有帮助,但对于评论来说太长了,它可能会帮助别人。
我想知道在 pdftex 或 luatex 中是否有一种简单干净的方法可以做到这一点。在 luametatex 中,实现了更灵活的连字设置。可以使用\hyphenationmode
(参见luametatex 手册) 进行设置(或者使用似乎效果很好的默认值)。在 ConTeXt 发行版的 lang-ini.mkxl 中,可以找到类似
\permanent \integerdef \completehyphenationcode \numexpr
\normalhyphenationcode % \discretionary
+ \automatichyphenationcode % -
+ \explicithyphenationcode % \-
+ \syllablehyphenationcode % pattern driven
+ \uppercasehyphenationcode % replaces \uchyph
+ \compoundhyphenationcode % replaces \compoundhyphenmode
% \strictstarthyphenationcode % replaces \hyphenationbounds (strict = original tex)
% \strictendhyphenationcode % replaces \hyphenationbounds (strict = original tex)
+ \automaticpenaltyhyphenationcode % replaces \hyphenpenaltymode (otherwise use \exhyphenpenalty)
+ \explicitpenaltyhyphenationcode % replaces \hyphenpenaltymode (otherwise use \exhyphenpenalty)
+ \permitgluehyphenationcode % turn glue into kern in \discretionary
+ \permitallhyphenationcode % okay, let's be even more tolerant
+ \permitmathreplacehyphenationcode % and again we're more permissive
+ \forcehandlerhyphenationcode % kick in the handler (could be an option)
+ \feedbackcompoundhyphenationcode % feedback compound snippets
+ \ignoreboundshyphenationcode % just in case we have hyphens at the edges
+ \collapsehyphenationcode % collapse -- and ---
\relax
\permanent \integerdef \partialhyphenationcode \numexpr
\ignoreboundshyphenationcode % just in case we have hyphens at the edges
% + \explicithyphenationcode % \-
+ \collapsehyphenationcode % collapse -- and ---
\relax
\permanent\protected\def\dohyphens {\hyphenationmode\completehyphenationcode}
\permanent\protected\def\nohyphens {\hyphenationmode\partialhyphenationcode}
连字符默认是打开的,但按照上面的代码,我们可以通过 将其关闭\nohyphens
。当然,也可以通过设置不同的位(可以使用 切换\bitwiseflip
)来进行更精细的设置。
这是一个我们在本地更改连字设置的小例子(禁止所需的连字,因此用红色表示):
\starttext
% \showhyphens{category}
\typ{\showhyphens{category}}
\typ{languages > hyphenation > show: cat[-||]e[-||]gory}
\blank
\hsize 1.4cm
\blackrule[width=\hsize]\par
$\infty$-category
\blank
\hsize 7cm
\blackrule[width=\hsize]\par
Oh, it's like that, it's like that {\red\nohyphens$\infty$-category.}
Yeah, it's like that, it's like that $\infty$-category. Woah-oh-oh, oh-oh-oh.
\stoptext