当我尝试使用 XeLaTeX 编译它时遇到了问题。
\documentclass{article}
\usepackage{ulem,amsmath,fontspec}
\begin{document}
\[1+1=2\]
\end{document}
有没有什么办法解决这一问题?
答案1
当在和ulem
之前加载时,结果的定义是amsmath
fontspec
\[
> \[=macro:
->\protect \[ .
而不是正确的
> \[=macro:
->\x@protect \[\protect \[ .
按照amsmath
“\DeclareRobustCommand”的定义。
问题是由于ulem
定义了\MakeRobust
;稍后会fontspec
加载;然后;因此,没有使用正确的定义,而是使用了提供的错误版本。fixltx2e
\providecommand\MakeRobust[1]{...}
\MakeRobust\[
fixltx2e
ulem
这应被视为中的一个错误ulem
:该包应该加载fixltx2e
并使用其版本的\MakeRobust
。
ulem
之后的加载fontspec
在一定程度上解决了该问题,但在内存中留下了的错误定义\MakeRobust
,如果稍后加载的包依赖于fixltx2e
的版本,则可能会产生影响\MakeRobust
。
也许更好的解决办法是
\usepackage{ulem}
\let\MakeRobust\relax
\usepackage{amsmath}
\usepackage{fontspec}
这样,故障\MakeRobust
仅用于ulem
的目的(有效),然后从内存中删除,这样就fixltx2e
可以给出良好的定义。