请参阅以下内容:
\documentclass{article}
\usepackage{amsmath}
\usepackage{mathspec}
\usepackage{unicode-math}
\begin{document}
\begin{equation*}
1 + 2 = 3
\end{equation*}
\end{document}
使用xelatex运行上述代码会遇到以下错误:
! Package mathspec Error: `amsmath' must be loaded earlier than `mathspec'.
See the mathspec package documentation for explanation.
Type H <return> for immediate help.
...
l.54 \RequirePackage{amsmath}
?
$ xelatex --版本 XeTeX 3.14159265-2.6-0.999991 (TeX Live 2019)
问候
答案1
该mathspec
包使用手工制作的测试来建议amsmath
在它之前加载:确切地说,它重新定义了\RequirePackage
,这是一件非常糟糕的事情。
重新定义本身并不是很危险,但它相当幼稚:重新定义的命令只检查强制参数是否为\RequirePackage
,amsmath
在这种情况下,它会发出错误消息。
碰巧的最新版本unicode-math
确实如此\RequirePackage{amsmath}
,所以引发了错误。
然而,这是一个假问题:mathspec
和unicode-math
彼此之间非常不友好,因为他们想要做同一件事,即控制数学排版。
我认为没有办法让它们合作。加载其中一个,而不是同时加载两个。