使用 LuaLaTeX 和 polyglossia 时拉丁文本根本不带连字符

使用 LuaLaTeX 和 polyglossia 时拉丁文本根本不带连字符

我最近注意到,我正在处理的文档中有许多水平盒子未满或过满的情况。进一步检查发现,此类问题几乎总是在涉及拉丁文本时出现;似乎 LaTeX 看不到任何连字符点,因此无法断行,段落最终看起来很难看。

这是一个 MWE:

\documentclass{article}

\usepackage{polyglossia}

\setdefaultlanguage{english}
\setotherlanguage[variant=classic]{latin}

\begin{document}
\showhyphens{\textenglish{amusing}}
\showhyphens{\textlatin{instigare}}
\end{document}

使用 LuaLaTeX 编译此代码会生成一个日志文件;以下是相关片段:

[][] \EU2/lmr/m/n/10 有趣
[][] \EU2/lmr/m/n/10 煽动

省略拉丁语变体选项(variant=classic)不会改变结果。

我遗漏了一些内容,例如字体设置,从我调查的情况来看,这与此事有关(但不知道为什么)。但是,我希望提供的示例足够了——如果不够,请询问。为了记录,这个问题似乎有些相关,尽管我还无法将结果推断到我的情况。

编辑:这是另一个针对 XeLaTeX 的 MWE,正如 egreg 指出的那样,它似乎可以工作:

\documentclass{article}

\usepackage{polyglossia}
\usepackage{xltxtra}

\setdefaultlanguage{english}
\setotherlanguage[variant=classic]{latin}

\begin{document}
\showhyphens{\textenglish{amusing}}
\showhyphens{\textlatin{instigare}}
\end{document}

在相应的日志文件中:

\EU1/lmr/m/n/10 有趣
[]\EU1/lmr/m/n/10 在-sti-gare

答案1

这是一个错误,gloss-latin.ldf它没有公布 LuaLaTeX 的模式文件名。

解决方法:自己动手。

\documentclass{article}

\usepackage{polyglossia}

\setdefaultlanguage{english}
\setotherlanguage[variant=classic]{latin}
\setotherlanguage{italian}

\makeatletter
\def\latin@language{%
  \language=\l@classiclatin
  \xpg@set@language@luatex@ii{classiclatin}%
}
\makeatother


\begin{document}

\message{\the\language -->}\showhyphens{amusing}

\begin{otherlanguage*}{latin}
\message{\the\language -->}\showhyphens{instigare}
\end{otherlanguage*}

\begin{otherlanguage*}{italian}
\message{\the\language -->}\showhyphens{istigare}
\end{otherlanguage*}
\end{document}

这是终端上的输出;请注意,54 正是分配给经典拉丁连字模式的数字。

0-->
Underfull \hbox (badness 10000) in paragraph at lines 16--16
[][] \EU2/lmr/m/n/10 amus-ing
 54-->
Underfull \hbox (badness 10000) in paragraph at lines 19--19
[][] \EU2/lmr/m/n/10 in-sti-gare
 51-->
Underfull \hbox (badness 10000) in paragraph at lines 23--23
[][] \EU2/lmr/m/n/10 isti-ga-re

答案2

我已经修复了 Polyglossia 中的错误这次提交并将很快上传到 CTAN。非常感谢 Enrico 的调查和建议。

相关内容