beamer 和 tikz 的问题

beamer 和 tikz 的问题

由于某种原因,此代码不起作用,但我不知道为什么:

\documentclass[pdf]{beamer}
\usepackage{amsmath}
\usepackage{enumerate}
\usepackage{graphicx}
\usepackage{tikz}
\usetikzlibrary{arrows}
\usepackage{upgreek}
\usepackage{textcomp}
\usepackage{extarrow}
\usepackage{fontenc,mathtext}
\usepackage{todonotes}
\usepackage{mathrsfs}
\usetikzlibrary{matrix,arrows}
\usetikzlibrary{chains}
\tikzset{join/.code=\tikzset{after node path={%
\ifx\tikzchainprevious\pgfutil@empty\else(\tikzchainprevious)%
edge[every join]#1(\tikzchaincurrent)\fi}}}
\tikzset{>=stealth',every on chain/.append style={join},every join/.style={->}}

[...]

\hypersetup{pdfpagemode=FullScreen}
\usecolortheme{progressbar}
\usefonttheme{progressbar}
\useinnertheme{progressbar}
\useoutertheme{progressbar}
\usepackage{pgf}
\usepackage{fancybox}
\usetikzlibrary{mindmap,trees,arrows}

[...]

\begin{document}
\frame{
\[
\begin{tikzpicture}[>=angle 90]
\matrix(a)[matrix of math nodes,
row sep=2.5em, column sep=2.5em,
text height=1.5ex, text depth=0.20ex]
{\bigwedge^2 S^m&S^m&S&0\\
F_2&F_1&S&0\\};
\path[->](a-1-1) edge (a-1-2);
\path[->](a-1-2) edge (a-1-3);
\path[->](a-1-3) edge (a-1-4);
\path[->](a-2-1) edge (a-2-2);
\path[->](a-2-2) edge (a-2-3);
\path[->](a-2-3) edge (a-2-4);
\path[->](a-1-1) edge node[auto] {$\gamma$}(a-2-1);
\path[->](a-1-2) edge node[auto] {$\cong$}(a-2-2);
\path[->](a-1-3) edge node[auto] {$id$}(a-2-3);
\path[->](a-2-3) edge (a-1-3);
\end{tikzpicture}
\]
}

知道为什么它不起作用吗?

答案1

我没有专门针对您的示例进行尝试,因此我不确定它是否有效。但是我记得在使用 tikz 和矩阵时遇到过类似的问题。我所做的是向矩阵添加一个选项:

ampersand replacement=\&

然后按如下方式替换我的每一段代码:

  \matrix[row sep=0.01cm,column sep=0.5cm,ampersand replacement=\&] {
    \&
    \node (A) [tree] {$\mathbf{A}$}; \&
    \&
    \\
    \node (v0) [state] {$v_{src};v'_{src})$}; \&
    \&
    \node (vn)   [state] {$(v_{snk};v'_{snk})$};     \&
    \\
    \&
    \node (B)   [tree] {$\mathbf{B}$};       \&
    \&
    \\
  }

希望对您有所帮助。抱歉,我没有太多时间专门检查您的问题。

答案2

TikZ 的命令\matrix会更改 catcode &,因此不允许将其作为另一个宏\frame或伪环境的参数{frame}。可以使用来修复此问题\begin{frame}[fragile] .. \end{frame}。它确保所有 catcode 更改(对于逐字模式等)都能正常工作。

作品:

\begin{frame}[fragile]
\[
\begin{tikzpicture}[>=angle 90]
\matrix(a)[matrix of math nodes,
row sep=2.5em, column sep=2.5em,
text height=1.5ex, text depth=0.20ex]
{\bigwedge^2 S^m&S^m&S&0\\
F_2&F_1&S&0\\};
\path[->](a-1-1) edge (a-1-2);
\path[->](a-1-2) edge (a-1-3);
\path[->](a-1-3) edge (a-1-4);
\path[->](a-2-1) edge (a-2-2);
\path[->](a-2-2) edge (a-2-3);
\path[->](a-2-3) edge (a-2-4);
\path[->](a-1-1) edge node[auto] {$\gamma$}(a-2-1);
\path[->](a-1-2) edge node[auto] {$\cong$}(a-2-2);
\path[->](a-1-3) edge node[auto] {$id$}(a-2-3);
\path[->](a-2-3) edge (a-1-3);
\end{tikzpicture}
\]
\end{frame}

相关内容