我最近注意到,我正在处理的文档中有许多水平盒子未满或过满的情况。进一步检查发现,此类问题几乎总是在涉及拉丁文本时出现;似乎 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 的调查和建议。