下面的代码片段会抛出这个错误
! 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}