以下代码同时使用了这里和这里,使用\hyphenrules
应告知polyglossia
关于单词内的断点。以下代码不会中断相关单词。为什么?我该怎么办?我使用的是 1.43 版polyglossia
。
\documentclass{article}
\usepackage{polyglossia}
\setmainlanguage{english}
\begin{hyphenrules}{english}
\hyphenation{de-ri-va-tio-nal}
\hyphenation{non-de-ri-va-tio-nal}
\end{hyphenrules}
\begin{document}
\parbox{0pt}{\hspace{0pt}non-derivational}
\end{document}
答案1
TeX 不会对包含连字符的单词进行连字符连接(确切地说\hyphenchar
是当前字体的连字符)。
您可以为此定义一个宏:
\newcommand{\hy}{-\nobreak\hspace{0pt}}
\nobreak
(即)\penalty10000
不允许在 处中断\hspace
,但另一方面却允许对后面的单词部分进行连字符连接。
\documentclass{article}
\usepackage{polyglossia}
\setmainlanguage{english}
\makeatletter % babel has `allowhyphens
\providecommand{\allowhyphens}{\ifvmode\else\nobreak\hskip\z@skip\fi}
\makeatother
\newcommand{\hy}{-\allowhyphens}
\begin{document}
\parbox{0pt}{\hspace{0pt}non\hy derivational}
\end{document}
\allowhyphens
这里我使用了一个更安全的定义,如果碰巧在垂直模式下发现,则不执行任何操作。它本质上与 中的相同babel
。
请注意,这de-ri-va-tio-nal
对于英语连字规则来说是非常错误的。
答案2
在德语中这是一个众所周知的问题,因为德语包含许多连接的词,即用 分隔的单个单词-
。例如:Baden-Württemberg
。
如果需要在单个单词中使用连字符,则需要添加本地连字和\-
。
根据您的情况,non-derivational
改为non-de\-ri\-va\-tio\-nal
。
请参阅以下 MWE
\documentclass{article}
\usepackage{polyglossia}
\setmainlanguage{english}
\begin{hyphenrules}{english}
\hyphenation{de-ri-va-tio-nal}
\hyphenation{non-de-ri-va-tio-nal}
\end{hyphenrules}
\begin{document}
\parbox{0pt}{\hspace{0pt}non-derivational}
No - in word:
\parbox{0pt}{\hspace{0pt}nonderivational}
With local hyphenations \texttt{\-}:
\parbox{0pt}{\hspace{0pt}non-de\-ri\-va\-tio\-nal}
\end{document}
及其结果: