假设单词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}
需要
- 自行决定工作,
- 允许在以下单词中使用连字符。
\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{-)}{}{)}\!~}
完全按照预期工作。