Tikzcd 与 Beamer:极其简单的代码导致 & ampersand catcode 错误

Tikzcd 与 Beamer:极其简单的代码导致 & ampersand catcode 错误
\documentclass{beamer}
\usepackage{amsmath} 
\usepackage{tikz-cd}

\begin{document}
\begin{frame}[fragile, t]{My slides}
\only<1>{
\begin{equation*}
\begin{tikzcd}
a 
\end{tikzcd}
\end{equation*}}
\only<2>{
\begin{equation*}
\begin{tikzcd}
a  \arrow{r} &  b
\end{tikzcd}
\end{equation*}}
\end{frame}
\end{document}

我想要的只是先显示“a”,然后显示指向 b 的 a,就像这样“a->b”(而且必须使用 Tikz-cd!)。但是 Tikzcd 使这变得不可能,因为我收到以下错误:

包 pgf 错误:单个 & 符号与错误的 catcode 一起使用。

请参阅 pgf 包文档以了解解释。键入 H 可立即获得帮助。...
l.13 \end{equation*}} 此错误消息由 \errmessage 命令生成,因此我无法提供任何明确帮助。假设您是 Hercule Poirot:检查所有线索,并按顺序和方法推断真相。

有什么方法可以解决这个问题?当 & 位于其自己的框架中时,它工作正常。但是当我将它放入 \only 块中时,事情就变得疯狂了。

我以为[脆弱]应该可以防止这些事情发生!

答案1

普通的 & 符号 ( &) 与 不能很好地配合使用beamer,因此您必须更改它。我将其更改为\&

\documentclass{beamer}
\usepackage{amsmath} 
\usepackage{tikz-cd}

\begin{document}
\begin{frame}[fragile, t]{My slides}
\only<1>{
\begin{equation*}
\begin{tikzcd}
a 
\end{tikzcd}
\end{equation*}}
\only<2>{
\begin{equation*}
\begin{tikzcd}[ampersand replacement=\&]
a  \arrow{r} \&  b
\end{tikzcd}
\end{equation*}}
\end{frame}
\end{document}

相关内容