我刚刚更新了 MikTeX,发现之前在 lualatex 下可以创建正确输出的 .tex 文件现在无法正常使用了。但是,xelatex 可以创建正确的输出。
问题似乎是 lualatex 没有在 Unicode 私有使用区域中拾取弹性符号的 opentype MATH 表。它可以正确处理标准弹性符号,例如 \left{ 和 \right}。请注意,\OpnBracS 和 \ClsBracS 已内置 \left 和 \right。这些符号位于 logix.otf 文件中,符号在 logix.sty 中定义,这两个文件都在 logix 包中。以下是一些测试代码。
\documentclass[10pt]{article}
\usepackage{logix}
\newcommand \testFrac {\frac{1}{2+\frac{3}{4}}}
\newcommand \testFrak {\frac{\frac{\frac{\frac{1}{1}}{\frac{1}{1}}}{\frac{\frac{1}{1}}{\frac{1}{1}}}}{\frac{\frac{\frac{1}{1}}{\frac{1}{1}}}{\frac{\frac{1}{1}}{\frac{1}{1}}}}}
\begin{document}
$ \OpnBracS \testFrac \ClsBracS $ \hspace{2em} $ \OpnBracS \testFrak \ClsBracS $
\end{document}
这是 xelatex 的输出
以下是 lualatex 的输出
答案1
这个问题在 github 上得到了解决。问题是 luaotfload 包已被“修复”,以解决一种字体具有最小数学表的问题。但该修复破坏了像我的字体这样的字体,这些字体具有有效的数学表,但仅适用于私人使用区域中的字符。luaotfload 包中有关于此问题的文档,但由于我没有直接使用该包,所以我不知道要查看那里。
解决方案是在加载字体和使用 LuaLaTeX 时包含“Renderer=Basic,Script=Math”,但不适用于 XeLaTeX。另一种解决方案是包含“RawFeature=-nomathparam”,XeLaTeX 会忽略它,因为它不使用 luaotfload 包。但这假设了实现细节,可能不是一个好的选择。它实际上只适用于“Script=Math”。