为前缀单词的主体启用默认连字

为前缀单词的主体启用默认连字

假设单词automorphism有正确的连字规则,但(anti)automorphism实际上却不是(因为它包含非字母)。由于(anti-)和类似的前缀很常见,我编写了一个宏

\newcommand{\prefixparen}[1]{(#1\discretionary{-)}{}{)}}

在括号边界处实现我想要的连字符行为:

│(anti)automorphism (anti-)│       % good
│automorphism (anti)automor│phism  % sad

但是,请注意,\prefixparen{anti}automorphism主词内没有连字符,如第二行所示。

我尝试在宏的末尾放置一个零宽度空格,以使词根成为一个单词:

\newcommand{\prefixparen}[1]{(#1\discretionary{-)}{}{)}~\!}
                                               % space ^ ^ 'backspace'

...但TeX似乎仍然注意到了它,并且没有尝试连字。我如何才能获得以下所需的行为?

│(anti)automorphism (anti-)│
│automorphism   (anti)auto-│ % uses already-learned hyphenation rules
│morphism ...              │

答案1

\nolinebreak\hspace{0pt}需要

  1. 自行决定工作,
  2. 允许在以下单词中使用连字符。
\documentclass{article}

\newcommand{\prefixparens}[1]{%
  (#1% the item with the open parenthesis
  \discretionary{-)}{}{)}% a discretionary
  \nolinebreak\hspace{0pt}% allow hyphenation in the following
}

\begin{document}

\prefixparens{anti}automorphism

\parbox[t]{0pt}{\hspace{0pt}%
  \prefixparens{anti}automorphism
}

\end{document}

在此处输入图片描述

答案2

TeX不会因为“单词”中~\!automorphism存在非字母而连字符。但是,它可以与分隔单词的“因为”一起使用。因此:\!\!automorphism\!~automorphism~

\newcommand{\prefixparen}[1]{(#1\discretionary{-)}{}{)}\!~}

完全按照预期工作。

相关内容