我想要这样的文字
\((\abcdefghij,\abcdefghij)\)-pair
(\abcdefghij
定义为\textit{abc\-defg\-hij}
)连字符为
(abc·defg·hij,·abc·defg·hij)-·pair
(“·” 表示所有可能的换行点;如果两边相邻的字符都是字母,当然需要连字符)。假设我需要一个宏,就像\abcdefghij
文档中的许多地方一样。我该如何实现预期的连字符?
答案1
只要您不在{}
本质上是\hbox
数学模式的组内,连字符就可以在数学中起作用。 \begingroup
但是组是可以的。
由于您没有提供 MWE(抱怨),我从 Hendrik 的回答中偷了一个。
\documentclass{article}
\newcommand*\abcdefghij{%
\begingroup\mathit{\xdef\tmp{\fam\the\fam\relax}}\tmp
abc\-defg\-hij\endgroup}
\begin{document}
\noindent
\((\abcdefghij,\abcdefghij)\)-pair and a
\((\abcdefghij,\abcdefghij)\)-pair and a
\((\abcdefghij,\abcdefghij)\)-pair and a
\((\abcdefghij,\abcdefghij)\)-pair and a
\((\abcdefghij,\abcdefghij)\)-pair and a
\((\abcdefghij,\abcdefghij)\)-pair and a
\((\abcdefghij,\abcdefghij)\)-pair and a
\((\abcdefghij,\abcdefghij)\)-pair and to end with, one last
\((\abcdefghij,\abcdefghij)\)-pair.
\end{document}
答案2
实现预期连字的一种方法是将“音节”放入单独的\textit
命令中,并用自由分隔符分隔\-
。(这会干扰abcdefghij
,但效果相当好。)要在逗号后允许换行,您可以使用以下代码egreg 的这个答案。
\/
请注意,我在后面添加了斜体更正,j
以便它不再靠近右括号。
\documentclass{article}
\newcommand*\abcdefghij{\textit{abc}\-\textit{defg}\-\textit{hij\/}}
\AtBeginDocument{%
\mathchardef\mathcomma\mathcode`\,
\mathcode`\,="8000
}
{\catcode`,=\active
\gdef,{\mathcomma\discretionary{}{}{}}
}
\begin{document}
\noindent
\((\abcdefghij,\abcdefghij)\)-pair and a
\((\abcdefghij,\abcdefghij)\)-pair and a
\((\abcdefghij,\abcdefghij)\)-pair and a
\((\abcdefghij,\abcdefghij)\)-pair and a
\((\abcdefghij,\abcdefghij)\)-pair and a
\((\abcdefghij,\abcdefghij)\)-pair and a
\((\abcdefghij,\abcdefghij)\)-pair and a
\((\abcdefghij,\abcdefghij)\)-pair and to end with, one last
\((\abcdefghij,\abcdefghij)\)-pair.
\end{document}