投影机中的 Tikzcd 无法正常工作

投影机中的 Tikzcd 无法正常工作

目前,我正在尝试使用 TeXWorks 编辑器创建演示文稿tikzcd。显然,我的计算机无法\arrow以我需要的方式识别该命令tikzcd(仅是理论上)。坦率地说,看起来我的计算机在使用该tikzcd软件包时存在问题。

这是可行的(好吧,如果你想称其为可行的话......)

\documentclass{beamer}
\usetheme[width=2.18cm]{PaloAlto}
\usefonttheme{serif}

\usepackage{tikz, tikz-cd}
\usetikzlibrary{arrows,shapes,cd}

\begin{document}

\begin{frame}{Not important}
\framesubtitle{Neither important}

$\begin{tikzcd}
\end{tikzcd}$

\end{frame}

\end{document} 

但一旦我插入一些有用的东西(例如A&B,虽然一个单一的A正在工作时......),我就会得到一个未定义的控制序列指的是\end{frame}。我想包括这样的内容

在此处输入图片描述

我觉得我错过了一个重要的点,即使我直接从上面复制了代码这里。可能出了什么问题,更重要的是:我该如何解决这个问题?

提前致谢!

答案1

以前有人在这里问过这种问题,但我找不到任何有解释的答案(这很可能是我的错)。不管怎样,我们开始吧。在部分8 创建框架手册版本 3.56中beamer指出(我标出了重要部分)

环境内容可以是普通的 LATEX 文本,但不能包含 \verb 命令或 verbatim 环境或任何改变字符代码的环境,除非给出脆弱选项。

第 61 页还说

如果框架包含易碎文本,则使用不同的内部机制来排版框架,以确保框架内的字符代码可以重置。切换到另一种内部机制的代价是,您无法使用覆盖,或者需要写入和读回外部文件(这并不总是可取的)。

无论如何,由于确实tikz-cd会更改一些字符代码,因此我们需要添加fragile。(根据经验,每当在beamer其他地方正常工作的某些东西不起作用时,都值得添加密钥fragile并检查这是否解决了问题。使用的一些缺点fragile此主题

我也借此机会排版了图表,其中execute at end picture键用于连接两个边缘标签,并通过alias键获得名称。

\documentclass{beamer}
\usetheme[width=2.18cm]{PaloAlto}
\usefonttheme{serif}
\usepackage{tikz-cd}
\begin{document}
\begin{frame}[fragile]
\frametitle{Not important}
\framesubtitle{Neither important}
$\begin{tikzcd}[execute at end picture={
\path (F) edge[double equal sign distance, -Implies,"$\omega$",
shorten >=2pt,shorten <=2pt] (G);}]
\mathcal{C} \arrow[r,bend left,"F" {alias=F}]
\arrow[r,bend right,"G" {swap,alias=G}]& \mathcal{D}
\\
\end{tikzcd}$
\end{frame}
\end{document} 

在此处输入图片描述

附录:有人认为“&”符号是问题所在。我不同意这种说法。例如

\begin{frame} 
\frametitle{The ampersand per se is not the problem} 
\begin{tabular}{ccc} 
a & b & c\\ 
\end{tabular} 
\end{frame} 

确实有效。正是这行\catcode\\&=13 that can be found intikz.code.tex . It is true, though, that ampersand replacement is another way to solve the problem. I also want to add that I was usingexecute at end picture for a reason. Even though there are seemingly simpler ways, they do not allow you to control the order in which the arrows are placed becausetikz-cd` 在内部收集它们并按照我们无法控制的顺序绘制它们。在这里这并不重要,但你可以找到这里一个确实如此的例子。

答案2

这是一个已知问题:当 atikzcd位于另一个命令的参数中时,&无法使用;不过,有一个方便的解决方法。

\documentclass{beamer}
\usetheme[width=2.18cm]{PaloAlto}
\usefonttheme{serif}

\usepackage{tikz, tikz-cd}
\usetikzlibrary{arrows,shapes,cd}

\begin{document}

\begin{frame}{Not important}
\framesubtitle{Neither important}

\begin{tikzcd}[ampersand replacement=\&,column sep=4em]
\mathcal{C} \arrow[r, bend left=30, "F"{name=U}]
\arrow[r, bend right=30, "G"'{name=D}]
\& \mathcal{D}
\arrow[Rightarrow, from=U, to=D,shorten=4pt,"\omega"]
\end{tikzcd}

\end{frame}

\end{document} 

在此处输入图片描述

相关内容