重新发布一个最小工作示例,以解决 amsmath 必须先于 mathspec 问题加载的问题

重新发布一个最小工作示例,以解决 amsmath 必须先于 mathspec 问题加载的问题

请参阅以下内容:

\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,这是一件非常糟糕的事情。

重新定义本身并不是很危险,但它相当幼稚:重新定义的命令只检查强制参数是否为\RequirePackageamsmath在这种情况下,它会发出错误消息。

碰巧的最新版本unicode-math确实如此\RequirePackage{amsmath},所以引发了错误。

然而,这是一个假问题:mathspecunicode-math彼此之间非常不友好,因为他们想要做同一件事,即控制数学排版。

我认为没有办法让它们合作。加载其中一个,而不是同时加载两个。

相关内容