
В тайваньском языке двойной дефис выполняет грамматическую функцию и используется часто. Пример:
Ā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}