这是一个编码问题(来自低技能程序员)。lualatex
在 Linux 上使用编译器。TeXlive 2022。搜索未提供有用的结果。
梅威瑟:
\documentclass{article}
\RequirePackage{fontspec}
% Uncomment to see difference:
%\RequirePackage{luatexbase}
%\RequirePackage{polyglossia}
\setmainfont{Latin Modern Roman}
\begin{document}
Hello World.
\end{document}
检查 mwe.log 文件。请注意,它fontspec
本身不会加载luatexbase
。但文件polyglossia.sty
包含以下代码:
\sys_if_engine_luatex:T{
\RequirePackage{luatexbase} % already included by fontspec, but needed here
\RequireLuaModule{polyglossia}
}
显然,“已包含在 fontspec 中”是不正确的。还是有什么我没理解的地方?
我是如何发现这一点的:我一直在研究各种软件包中的代码,看看它们能做什么。我偶然发现了priority_in_callback
中的luatexbase
。有趣的是,还有其他参考资料表明luatexbase
它可以工作,即使
luatexbase
没有加载 !这真是个谜。
答案1
这条评论在写的时候是正确的。但在 2015 年之后,luatexbase 的大部分内容被重命名并重新编码为 ltluatex,并包含在格式中,因此 fontspec 不需要它。ltluatex 的所有 Lua 部分都位于一个仍被调用luatexbase
以实现兼容性的模块中。
当前luatexbase
包被重写,大部分都是ltluatex
按格式预加载的,但定义了一些额外的功能以便与包的原始版本兼容。