在 beamer 中使用 tikz 矩阵时出现“单个 & 符号与错误的 catcode 一起使用”错误

在 beamer 中使用 tikz 矩阵时出现“单个 & 符号与错误的 catcode 一起使用”错误

我无法让笔记矩阵的基本示例显示在我的 Beamer 演示文稿中。我使用的是从 pgf 手册中复制的代码。这是一个完整的工作示例。我在编译时收到的错误是:“Package pgfbasematrix 错误:单个 & 符号与错误的 catcode 一起使用。”

\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{arrows,decorations.pathmorphing,backgrounds,fit,petri,positioning,matrix}

\begin{document}

\begin{frame}

\begin{tikzpicture}
\matrix (magic) [matrix of nodes]
{
8 & 1 & 6 \\
3 & 5 & 7 \\
4 & 9 & 2 \\
};
\draw[thick,red,->] (magic-1-1) |- (magic-2-3);
\end{tikzpicture}

\end{frame}
\end{document}

答案1

Beamer 经常使用 catcode。摘自 TkiZ 手册:

TikZ 创建&一个活动字符,然后将该字符定义为等于\pgfmatrixnextcell。在大多数情况下,这会很好地工作,但有时&无法激活;例如因为矩阵用于某些宏的参数或矩阵包含包含正常环境的节点。在这种情况下,您可以使用以下选项来避免每次都{tabular}输入 :\pgfmatrixnextcell

/tikz/ampersand replacement=〈macro name〉

如果提供了宏名,则该宏将被定义为等于 \pgfmatrixnextcell矩阵内部,并且&不会被激活。例如,您可以说ampersand replacement=\&,然后使用\&来分隔列。

对于你的例子,这意味着:

\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{matrix}

\begin{document}

\begin{frame}

\begin{tikzpicture}
\matrix (magic) [matrix of nodes,ampersand replacement=\&]
{
8 \& 1 \& 6 \\
3 \& 5 \& 7 \\
4 \& 9 \& 2 \\
};
\draw[thick,red,->] (magic-1-1) |- (magic-2-3);
\end{tikzpicture}

\end{frame}
\end{document}

答案2

只需将fragile选项添加到框架即可:

\begin{frame}[fragile]
...
\end{frame}

相关内容