amsmath+fontspec+ulem 的问题

amsmath+fontspec+ulem 的问题

当我尝试使用 XeLaTeX 编译它时遇到了问题。

\documentclass{article}
\usepackage{ulem,amsmath,fontspec}

\begin{document}
\[1+1=2\]
\end{document}  

有没有什么办法解决这一问题?

答案1

当在和ulem之前加载时,结果的定义是amsmathfontspec\[

> \[=macro:
->\protect \[  .

而不是正确的

> \[=macro:
->\x@protect \[\protect \[  .

按照amsmath“\DeclareRobustCommand”的定义。

问题是由于ulem定义了\MakeRobust;稍后会fontspec加载;然后;因此,没有使用正确的定义,而是使用了提供的错误版本。fixltx2e\providecommand\MakeRobust[1]{...}\MakeRobust\[fixltx2eulem

这应被视为中的一个错误ulem:该包应该加载fixltx2e并使用其版本的\MakeRobust

ulem之后的加载fontspec在一定程度上解决了该问题,但在内存中留下了的错误定义\MakeRobust,如果稍后加载的包依赖于fixltx2e的版本,则可能会产生影响\MakeRobust

也许更好的解决办法是

\usepackage{ulem}
\let\MakeRobust\relax
\usepackage{amsmath}
\usepackage{fontspec}

这样,故障\MakeRobust仅用于ulem的目的(有效),然后从内存中删除,这样就fixltx2e可以给出良好的定义。

相关内容