使用带有 `XeLaTeX` 和 `LuaLaTeX` 的数学排版包

使用带有 `XeLaTeX` 和 `LuaLaTeX` 的数学排版包

在基于Unicode的库出现之前 XeLaTeXLuaLaTeX没有pdfLaTeX一个可以直接输出为pdf-格式的库。为了数学排版方便,amsmath主要使用这个包。

但在基于 Unicode 的引擎出现后,也出现了类似这样的包unicode-math(也是lualatex-math为了修复一些问题)。现在出现了如何使用这些包以及按照什么顺序使用这些包的问题,​​因为有时我们会遇到它们之间的冲突(主要是与mathtools),正如 tex.se 中的许多问题所证明的那样。

另外,例如,如果一个人使用lualatex,则可以使用其中一个amsmath或一个 unicode-math包,或者两者(这并不罕见)。

比较Lualatex+ amsmath:

% !TeX program = lualatex
% !TeX encoding = utf8

\documentclass[]{article}
\usepackage{amsmath}

\begin{document}

\begin{equation}
    I = \alpha\oint\limits_L f(x) dx, \quad \text{an Integral}
\end{equation}

\end{document}

Lualatex+ unicode-math:

% !TeX program = lualatex
% !TeX encoding = utf8

\documentclass[]{article}
\usepackage{unicode-math}

\begin{document}

\begin{equation}
    I = \alpha\oint\limits_L f(x) dx, \quad \text{an Integral}
\end{equation}

\end{document}

总而言之,需要一份简短的说明,说明如何以及以何种顺序调用基于 Unicode 的引擎的数学XeLaTeXLuaLaTeX

答案1

正如 David Carlisle 所说,amsmath适用于所有字体包。 它无处不在,我不知道有任何与它不兼容的。 许多较新的软件包想要修改amsmath其工作方式,并且amsmath不屑于为它们改变自己,因此很少有软件包需要在 之前加载amsmath。 (除了文档类,它们应该先出现。)我经常加载mathtools,它会加载amsmath并添加一些修复和扩展,而不是amsmath

unicode-math包会加载amsmath,但如果您想要加载amsmath任何选项,或加载mathtools,请在加载之前加载它们unicode-math

其他数学符号包与 兼容unicode-math,因为它们不会导致错误,但unicode-math会覆盖序言末尾的其他同名符号。因此,如果您想加载unicode-math但将任何单个符号更改为某个旧包中的定义,则需要从旧包中复制并粘贴相关命令,将符号定义包装在 中\AtBeginDocument

如果您想使用现代字体作为文本,使用传统(8 位)字体作为数学,请加载fontspec。加载fontspec将更改您的字体\mathrm和其他一些内容,如果您fontspec在 之后加载amsmath,它还会更改一些字体,如\text和对数运算符。要关闭此行为,请提供fontspec选项no-mathunicode-math包加载,并可以向其传递选项。如果您需要解决使用不同选项加载的包之间的冲突,fontspec可以fontspec显式加载,然后。unicode-mathfontspec

您可以mathastext在设置文本字体(可以是 8 位或现代字体)和旧数学字体后加载。这也将在数学模式下使用字母的主字体。您也可以设置unicode-math这样做,但这需要更多努力。

最后,您可以mathspec在 XeTeX 中使用 将现代文本字体与传统数学字体一起加载为数学字母。这比 和 支持更多用例fontspecmathastext例如使用除主文本字体之外的现代字体作为数学字母,或设置无衬线数学字母。

答案2

unicode-math和 并amsmath没有真正的关系,前者主要涉及字体设置,后者涉及定义数学布局结构的宏,并且或多或少与所使用的字体无关。

如果使用 OpenType 数学字体排版数学,建议您同时加载两者(amsmath首先加载)。事实上,开发版本 (v0.8p) 会自动加载,因此以后amsmath只需加载就足够了。unicode-math

对于 lualatex 和 xelatex,默认设置是使用 OpenType 字体来处理文本,但使用经典的 8 位 tfm 字体指标来处理数学的 1 型字体。对于该设置,建议仅加载amsmath

相关内容