使用 `\tag` 的宏在 `beamer` 类中引发错误,但在 `amsart` 类中不会引发错误

使用 `\tag` 的宏在 `beamer` 类中引发错误,但在 `amsart` 类中不会引发错误

下面的代码片段会抛出这个错误

! Missing \endcsname inserted.
<to be read again> 
                   \def 
l.9 \end{align}

按原样运行时。如果我将类更改为,则amsart运行时不会出错。有人可以解释为什么 beamer 不喜欢它吗?以及如何修复该问题?谢谢!

 \documentclass{beamer}
    \def\tagPrime#1{\tag{\ref{#1}$\empty^\prime$}\label{#1Prime}}
    \begin{document}
    \begin{align}
    \label{myTag}
    a = b \\
    a = b
    \tagPrime{myTag}
    \end{align} 
    \end{document}

答案1

您需要\protect在前面添加\ref(可能\ref*更好,以免创建无用的链接)。

\documentclass{beamer}

\newcommand\tagPrime[1]{%
  \tag{\protect\ref*{#1}$'$}%
  \label{#1Prime}%
}

\begin{document}

\begin{frame}

\begin{align}
\label{myTag}
a = b \\
\tagPrime{myTag}
a = b
\end{align}

\end{frame}

\begin{frame}

\eqref{myTag} and \eqref{myTagPrime}

\end{frame}

\end{document}

答案2

这是一个可能更简单的解决方案:

\documentclass{beamer}
\begin{document}
\begin{align}
\label{myTag}
a = b \\
a = b
\tag*{(\ref{myTag}')}
\end{align} 
\end{document}

在此处输入图片描述

相关内容