如何用矩阵标记 tikz-cd 图中箭头?

如何用矩阵标记 tikz-cd 图中箭头?

我在用着tikz-cd对于某些交换图,但如果我尝试用矩阵标记箭头,&则会出现“未定义的控制序列”。因此,一行中的所有条目都会连接起来,看起来像列向量。以下是一个(最小)工作示例。

\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz-cd}
\begin{document}

$\begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix}$

\begin{tikzcd}
A \arrow{r}{ \begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix} } & B
\end{tikzcd}

\end{document}

答案1

这是因为tikz-cd环境是 TikZ 矩阵的包装器,而在 TikZ 矩阵中,then&并不表示它通常的意思。在 TikZ 矩阵中,then&是一个命令,它比通常的“跳转到下一个单元格”要多得多。然而,在 AMS 矩阵中,你希望它只是通常的“跳转到下一个单元格”。因此,&代码中出现的两次 有不同的含义,但你对它们使用了相同的符号。有多种方法可以解决这个问题:

  1. 保持 的正常含义&,以便它在 AMS 矩阵中工作,在这种情况下,您需要对 TikZ 矩阵使用其他内容。幸运的是,TikZ 提供了一种方法来做到这一点:[ampersand replacement=\&]在 之后写入 (或其他内容)\begin{tikzcd},然后使用\&(或其他内容)作为 TikZ 单元格分隔符。

  2. 保留 TikZ 的含义&,以便它适用于 TikZ 矩阵,在这种情况下,您需要对 AMS 矩阵使用其他内容。这也相当简单。您将\let\amsamp=&其放入前言中,然后\amsamp在代码中使用(不幸的是,似乎\&不能在这里使用)。

  3. 重新调整 AMS 的矩阵环境,使其在其环境中重置&为通常含义。这并不像看起来那么容易,因为当读取环境时,的 catcode&已经冻结(因为它在宏的参数中,在本例中\arrow)。因此,在定义新类型的矩阵环境时,我们必须做一些小\begingroup ... \endgroup技巧。(显然,要做到这一点,只需重新定义所有其他矩阵环境都建立在其之上的基本 AMS 矩阵环境)。请注意,这也适用于tikzcd环境之外,因为它实际上做的是说“如果&是命令,就让它成为&通常的样子。”(好吧,它是轻微地更复杂,但现在就这样了),并且在正常情况下&不是一个命令,所以这(几乎)是一个无操作。

\documentclass{article}
%\url{http://tex.stackexchange.com/q/81618/86}
\let\amsamp=&

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

\begingroup
\catcode`\&=13
\gdef\pampmatrix{%
  \begingroup
  \let&=\amsamp
  \begin{pmatrix}%
}
\gdef\endpampmatrix{\end{pmatrix}\endgroup}
\endgroup

\begin{document}

\[
\begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix}
\]

\begin{tikzcd}[ampersand replacement=\&]
A \arrow{r}{ \begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix} } \& B
\end{tikzcd}

\begin{tikzcd}
A \arrow{r}{ \begin{pmatrix} 1 \amsamp 0 \\ 0 \amsamp 1 \end{pmatrix}
} & B
\end{tikzcd}

\begin{tikzcd}
A \arrow{r}{ \begin{pampmatrix}
 1 & 0 \\ 0 & 1 \end{pampmatrix} } & B
\end{tikzcd}

\[
  \begin{pampmatrix}
  1 & 0 \\ 0 & 1
  \end{pampmatrix}
\]
\end{document}

使用 TikZ 和 AMS 实现符号和矩阵


作为附言(或 PDF),我想指出,这是区分以下两者的一个很好的例子:做傻事菲纳格尔, 和欺骗因素一篇文章IRE 学生季刊1958 年 9 月(也收录在这本精彩的书中科学中的随机漫步,或者可能是科学中的更多随机游动)相关部分如下:

然而,约翰·W·坎贝尔认为,菲纳格尔因子、伪造因子和欺骗因子的背后有着不同的基本结构。他声称,菲纳格尔因子的特点是改变宇宙以适应方程。另一方面,伪造因子改变方程以适应宇宙。最后,欺骗因子改变事物,使宇宙和方程看起来相符,但实际上两者并没有发生任何变化。

例如,当牛顿定律无法与已知的行星运动相匹配时,天王星就被引入宇宙。这是 Finagle 因子应用的一个绝佳例子。

爱因斯坦的相对论研究成果受到水星轨道观测事实的强烈影响。显然,其中引入了虚假因素。

摄影师在拍摄 35 岁以上女性肖像时使用“柔焦”镜头就是伪造因素的一个例子。通过模糊结果,照片看起来更符合事实,更令人满意。

因此,第一个解决方案,即修改 TikZ 以适应 AMS,显然是 Finagle 因子的应用。第二个解决方案,即修改 AMS 以适应 TikZ,显然是敷衍了事。最后一个解决方案,即所有东西突然看起来都正常工作,没有任何外部变化,显然是敷衍了事。

相关内容