如何自动允许在“$\infty$-category”中对单词“category”进行连字符连接

如何自动允许在“$\infty$-category”中对单词“category”进行连字符连接

单词category会自动连字符,就像cate-gorylatex 一样,但前缀$\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

是否使用连字符

相关内容