\hyphenrules 不会断开单词

\hyphenrules 不会断开单词

以下代码同时使用了这里这里,使用\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}

及其结果:

生成的 pdf

相关内容