加载unicode-math然后refstyle与当前latex不兼容?

加载unicode-math然后refstyle与当前latex不兼容?

使用当前的 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 -----------------------

相关内容