我对 polyglossia 包中的语言名称感到困惑。polyglossia 文档第 5 页的表 1 以小写形式列出了语言名称(例如“korean”,而不是“Korean”)。但是当我尝试在文档中使用小写名称“korean”并使用 LuaLaTeX 运行它时,我收到错误。这是 MWE:
\documentclass{article}
\usepackage{polyglossia}
\setmainlanguage{korean}
\setmainfont{UnBatang}
\begin{document}
한국
\end{document}
..这是错误消息(我假装它是代码,以使其在 stackexchange 上脱颖而出):
You cannot set field spec in a node of type glue.
\newpage ...k \@nobreakfalse \everypar {}\fi \par
\ifdim \prevdepth >\z@ \vs...
LuaLaTeX 似乎可以正常使用大写名称“Korean”。
我尝试过的其他 (3) 种小写语言名称(俄语、波斯语和泰米尔语)没有出现这种错误。
在 XeLaTeX 中,大写和小写名称都不会触发错误消息,但大写版本确实会给我一个相当奇怪的消息:
Package polyglossia Warning: No hyphenation patterns were loaded for `orean'
(polyglossia) I will use \language=\l@nohyphenation instead on input line 6.
--因此显然有什么东西把大写的“K”去掉了。小写的“korean”没有出现这样的信息。
我猜想 LuaLaTeX 也可能会删除大写字母“K”,因此 polyglossia 不会执行某些操作(例如加载连字模式),从而导致 lualatex 出现错误。换句话说,lualatex 中大写字母“Korean”的表面上成功,可能是由于其他错误导致的。
多语种应该使用小写还是大写的语言名称?
如果这是 lualatex 和/或 polyglossia 中的一个错误(并且 polyglossia 中的语言名称应该是小写的),那么有没有比为韩语提供大写名称更好的解决方法?
答案1
名称应为小写。在我的系统上,传递此名称Korean
甚至会导致警告:
Package polyglossia Warning: File gloss-Korean.ldf does not exist!
(polyglossia) I will nevertheless try to use hyphenation pattern
s for Korean. on input line 3.
多语语言文件korean
已损坏,因为它试图设置节点glue_spec
的glue
,但两年来已glue_spec
不再用于此目的。
您可以通过找到该文件gloss-korean.ldf
并更改其中的几行来临时修复该问题:
替换(大约 690 行)
local function get_new_glue (wd, st, sh)
local glue = node.new("glue")
local spec = node.new("glue_spec")
spec.width = wd
spec.stretch = st
spec.shrink = sh
glue.spec = spec
return glue
end
和
local function get_new_glue (wd, st, sh)
local glue = node.new("glue")
glue.width = wd
glue.stretch = st
glue.shrink = sh
return glue
end
在第 706 行替换
local hss = get_new_glue(0, 65536, 65536)
hss.spec.stretch_order = 2
hss.spec.shrink_order = 2
和
local hss = get_new_glue(0, 65536, 65536)
hss.stretch_order = 2
hss.shrink_order = 2
我会将这些更改发送给polyglossia
维护人员,但看起来不会polyglossia
很快有任何更新。