使用当前的 LaTeX,似乎 refstyle 包(TL 中的更新时间:2010 年 11 月)无法在 unicode-math(更新时间:2020 年 1 月)之后使用 xelatex 或 lualatex 加载。! Argument of \eqref has an extra }.
读取 refstyle.cfg 时,我得到了 。
首先加载 refstyle 可以正常工作。从 TL22(原始发布版本)或较旧的 TL 运行 xelatex 可以正常工作。从当前(主干)TL 运行 xelatex 会失败。
我想这个问题已经在这里得到解答了:refstyle 与 amsmath 冲突但那里的重点是 amsmath。也许这是故意的/不可避免的,但对我来说这似乎是一个不受欢迎的兼容性错误,所以我还是想发布一下。对我来说,有问题的文档是 XeTeX 参考手册。(那里提到了使用 cleveref 而不是 refstyle。我不想试图弄清楚 Will 用 refstyle 而不是 cleveref 做了什么。我只想更新它,这样我就可以继续解决下一个紧迫的问题了。)
\documentclass{article}
\usepackage{unicode-math}
\usepackage{refstyle} % loading refstyle first works
\begin{document}
\end{document}
答案1
编辑:下面补丁行的修复已包含在refstyle
(2024-01-31) 的 0.6 版中,因此该问题现已在包中修复。
我认为需要改变这样的事情refstyle.cfg
(编辑:补丁已修复):
--- /usr/local/texlive/2023/texmf-dist/tex/latex/refstyle/refstyle.cfg
+++ /home/juergen/texmf/tex/latex/testen/refstyle.cfg
@@ -511,10 +511,9 @@
lsttxt = \RSlsttxt}
%%-- TEMPLATE FOR EQUATIONS ---------------------
\newcommand*{\RSeqrefform}[1]{\textup{(\ref{#1})}}
-\@ifpackageloaded{amsmath}%
- {\let\AMSeqref\eqref
- \let\eqref\relax}%
- {}
+\AddToHook{package/amsmath/after}%
+ {\NewCommandCopy\AMSeqref\eqref
+ \DeclareRobustCommand\eqref{\relax}}%
\newref{eq}{%
name = \RSeqtxt,
names = \RSeqstxt,
@@ -528,9 +527,8 @@
\let\eqref\relax
\AtBeginDocument{%
\@ifpackageloaded{amsmath}%
- {\RS@ifundefined{AMSeqref}{\let\AMSeqref\eqref}{}%
- \let\RSeqrefform\AMSeqref}%
- {}%
+ {\DeclareCommandCopy\RSeqrefform\AMSeqref}%
+ {}%
\let\eqref=\RSeqref
}
%%-- TEMPLATE FOR FIGURES -----------------------