在台灣語中,雙連字號具有文法功能,使用很频繁。例如:
Āu--ji̍t chiah koh lâi.(后天再来。)
噢,原来是这个。 (以后再来。)
问题是,双连字符会转换为 n-dash。我知道 -{}- 可以停止转换。但是,换行符将发生在两个连字符之间,这也必须避免。因此,它变成了
Āu\mbox{-{}-}{\allowbreak}ji̍t chiah koh lâi.
这看起来很复杂。由于我使用的是 xelatex,我想我可能会为该序列定义一个命令,同时让它在源代码中看起来更像双连字符。
\newcommand{\‐‐}{\mbox{‐‐}{\allowbreak}}
\‐‐ 中的 ‐ 不是 U+002D,而是 U+2010。与 \mbox 中的相同,这样我就避免了连字符。据说我可以写
Āu\‐‐ji̍t chiah koh lâi.
这样就更容易知道它是一个双连字符。
但是,我收到一条错误消息。!LaTeX 错误:缺少 \begin{document}。
令人费解的是
\newcommand{\‐}{\mbox{‐‐}{\allowbreak}}
效果很好。但它并不理想,因为它看起来不像双连字符。
如果没有好的解决办法,我就得忘掉\allowbreak
,直接写两个 U+2010 就行了。但是带双连字符的单词太长,排版也很难看。
答案1
如果您能够输入 U+2010,则组合‐‐
(U+2010 U+2010) 将不会产生连字。
你可以有些定义\--
(使用连字符,但这会删除的定义\-
)。
一种可能的替代方法是使用\0--
(带有两个连字符):
\documentclass{article}
\usepackage{fontspec}
\setmainfont{Libertinus Serif}
\def\0--{‐‐\allowbreak}% two U+2010 in the body
\begin{document}
Āu--ji̍t chiah koh lâi. (Come again the day after tomorrow.) % two hyphens
Āu‐‐ji̍t chiah koh lâi. (Come again the day after tomorrow.) % two U+2010
Āu\0--ji̍t chiah koh lâi. (Come again the day after tomorrow.) % the command
Āu-ji̍t chiah koh lâi. (Come again in the future.)
\parbox[t]{0pt}{\hspace{0pt}Āu\0--ji̍t chiah koh lâi.}
\end{document}