Tikz-cd:与 \arrow{r} 相比,\arrow{rr} 到底有什么作用,以及它与“&&”和“&”有何关系?

Tikz-cd:与 \arrow{r} 相比,\arrow{rr} 到底有什么作用,以及它与“&&”和“&”有何关系?

因此我使用了出色的工具“tikz-cd 编辑器”:https://tikzcd.yichuanshen.de/ 我也在使用 Overleaf,因为它很有价值。

\arrow[rr, "\digamma"]

相对

\arrow[r, "\digamma"]

我猜测这所做的是“正确 | 正确”指令,而不是像我们期望的那样后者一次性“正确”。

我的文档显示如下: 这是从提供的标记/代码中可以预期到的,没有任何修改,也没有出现任何问题。它有一个标题“tikz 游乐场”,字母在大写和小写之间交替。在数学表达式下面还有我的名字 Brayton。表达式位于标题纯文本下方,但仍包含在标题命令中。表达式为 <code>$$\mathfrak{c}_{\mathbf{u}} \in \mathbb{N}(t)$$</code>

如果是,则给出:

\begin{tikzcd} \rho_i \arrow[rr, "\mathcal{F}"] &  & \mu_i \arrow[rr,
 "\digamma"] &  & S_i \arrow[rr, "\mathscr{F}"] &  & \mathfrak{R}
 \end{tikzcd}



 $$\\ \\ \\ \\ \\ \mathfrak{A}$$

此外,[swap] 命令如何“交换”文本出现的箭头一侧(箭头方向的左侧是放置箭头标签的默认位置)。我希望\mathfrak{A}直接位于标有 的箭头下方\mathscr{F}

rr如果我将其中任何一个“ ”更改为“ ” ,我就会发现自己面临麻烦r。这是因为还& &使用了“ ”,而“rr”需要“ &&”吗?“ rr”在这里有什么特别之处吗,还是在没有“ ”与“ ”配对r的情况下,它默认表现得像“ ” ?(例如,除非在同一图中定义了长度为 1 的箭头,否则长度为 2 的箭头将缩小到长度 1)。r&

该工具输出的代码的另一个示例:

\begin{tikzcd} A \arrow[dd, tail] \arrow[rddd, bend left=49] \arrow[r,
 dashed] & B \arrow[rr] \arrow[rrd, bend left] \arrow[rddd, bend
 left=49] &                                   & A:B \arrow[d] \\
                                                                 &                                                                &                                   & B^A           \\ A' \arrow[rd]
\arrow[rrru, bend left]                           &                   
 &                                   &               \\
                                                                 & {P[A||B]} \arrow[r, dashed]                                    &
 {Q[A|A']} \arrow[ruu, bend right] &               \end{tikzcd}

大意是“ &”告诉 TikZ-cd 在哪里放置空白区域以便箭头放大,任何不匹配都会导致混乱吗?从我的角度来看,上述代码的布局实际上并不完全类似于矩阵/二维数组。是否有人可以指导解释和破译这些图表/图表说明的标记,或者这种混淆在很大程度上取决于特定工具(以及机器如何编写它与人类倾向于如何编写它)?

还有很多其他的 TikZ GUI 工具,我最终会迁移(并学习手动绘制),尽管现在我有点困境。


另外,我注意到有不少问题的格式是“[SOMETHING] 和 [OTHERTHING] 到底起什么作用?”。我可以在 metaTeXSX 帖子中提出这个问题,但我猜这是一种很好的提问格式?

rr如果我把它分成两个问题,一个关于“ ”与“ r”,另一个关于:在长度为“ ”[swap]的箭头下方和上方进行标记,这样会更好吗?rr

答案1

TikZ-CD 使用 TikZ\matrix引擎盖下面是以某种方式设置这样每个单元格的内容就可以理解为单个节点的数学内容。

这使得人们可以使用非常相似的语法来tabular这样,我们就可以使用与s 或array来创建图表。与 s 或 s 一样&,分隔列,\\分隔行。

虽然与tabulararray环境中,&是其自己的 catcode 并表示实际的新列,但 TikZ 必须稍微作弊并使其处于&活动状态(类似于~,牢不可破的空间)。如果您需要使用 TikZ 矩阵或 TikZ-CD 环境作为宏或某些特殊环境的参数,则需要选项ampersand replacement
通常,这意味着ampersand replacement = \&使用tikzcd使用并使用\&而不是&

但从所有意图和目的来看,这&仅仅意味着:一个新的专栏。

(相比于 plainTeX 的$和,和$$之间没有区别。)&&& &


我猜测这所做的是“正确 | 正确”指令,而不是像我们期望的那样后者一次性“正确”。

正确,TikZ-CD 提供了一个简单的快捷语法来指定来自单元格的箭头的目标\arrow出现的单元格。\arrow[rr]只是指示 TikZ-CD 从这里移至右侧两列的单元格。

如果指定不存在的目标,PGF/TikZ(-CD)将会抱怨未知的节点名称。

看起来您使用的工具只会填充每隔一列,留下一个单元格为空。这不会破坏任何东西,只会增加两倍column sep内容之间的间距增加一倍。

在其他方面它们是等效的,但是请注意,当我删除一个时,使用 onlyr而不是:rr&

\begin{tikzcd}
   \rho_i
     \arrow[rr, "\mathcal{F}"]
 &
 & \mu_i
     \arrow[rr, "\digamma"]
 &
 & S_i
     \arrow[rr, "\mathscr{F}", "\mathfrak{A}"']
 &
 & \mathfrak{R}
\end{tikzcd}

\begin{tikzcd}
   \rho_i
     \arrow[r, "\mathcal{F}"]
 & \mu_i
     \arrow[r, "\digamma"]
 & S_i
     \arrow[r, "\mathscr{F}", "\mathfrak{A}"']
 & \mathfrak{R}
\end{tikzcd}

在此处输入图片描述


此外,命令如何swap“交换”显示文本的箭头一侧(箭头方向的左侧是放置箭头标签的默认位置)。我希望\mathfrak{A}直接位于标有 的箭头下方\mathscr{F}

让我引用我自己暂定如下:

标签的放置方式很巧妙,始终位于箭头的左侧。这是蒂克兹 auto选项安装者TikZ-CD

它只left知道right,这意味着路径上的节点要么放在路径的左边,要么放在路径的右边。(swap') 钥匙只是检查哪一个是活动的并安装另一个。)

因此swap,它的快捷方式'实际上只是交换了标签出现的一侧。

正如您所注意到的,"在选项中使用\arrow将把文本添加到"路径上的标签中(默认情况下使用auto = left选项和midway观点沿着它)。

您可以在同一个箭头上使用它两次,添加另一个标签,然后

"\mathfrak{A}"'
% or
"\mathfrak{A}" swap

你可以交换一边。查看前面的代码示例,我已经用过了。


生成的代码中的所有其他内容要么是某些包提供的数学宏,要么是来自 TikZ 或 TikZ-CD 的现有密钥:

  • \mathfrak以及\digamma来自amssymb
  • \mathscrmathrsfs
  • bend left来自 TikZ
  • tail以及dashed来自 TikZ-CD

对于其他一切,我建议你TikZ-CD 手册,尽管TikZ 手册最终将会需要一些创造性的道路。


在下面的代码中,我重新组织了更大的图表,以便它只需要直箭头(一开始并不是真正必要的)并且占用更少的空间。

除非你需要绕开某些东西,否则我会避免使用弯曲的箭头。也许是倾斜正交路径的变体我的另一个答案可能会有用。

代码

\documentclass[varwidth]{standalone}
\usepackage{
  amssymb, % for \mathfrak, \digamma
  mathrsfs % for \mathscr
}
\usepackage{tikz-cd}
\tikzcdset{% https://tex.stackexchange.com/a/663065/16595
  -|/.style={to path={-|(\tikztotarget)\tikztonodes}},
  -| ysl/.style ={-|, yslant=#1}}
\begin{document}
\begin{tikzcd}
   \rho_i
     \arrow[rr, "\mathcal{F}"]
 &
 & \mu_i
     \arrow[rr, "\digamma"]
 &
 & S_i
     \arrow[rr, "\mathscr{F}", "\mathfrak{A}"']
 &
 & \mathfrak{R}
\end{tikzcd}

\begin{tikzcd}
   \rho_i
     \arrow[r, "\mathcal{F}"]
 & \mu_i
     \arrow[r, "\digamma"]
 & S_i
     \arrow[r, "\mathscr{F}", "\mathfrak{A}"']
 & \mathfrak{R}
\end{tikzcd}

\begin{tikzcd}
   A \arrow[d, tail]
     \arrow[rdd]
     \arrow[r, dashed]
 & B \arrow[r]
     \arrow[rd]
     \arrow[rdd]
 & A:B
     \arrow[d]
\\
   A'
     \arrow[rd]
     \arrow[rr]
 & & B^A \\
 & P[A||B] \arrow[r, dashed]
 & Q[A|A'] \arrow[u]
\end{tikzcd}

\begin{tikzcd}
   A \arrow[d, tail]
     \arrow[rdd, -| ysl=-.5]
     \arrow[r, dashed]
 & B \arrow[r]
     \arrow[rd]
     \arrow[rdd]
 & A:B
     \arrow[d]
\\
   A'
     \arrow[rd]
     \arrow[rr, crossing over]
 & & B^A \\
 & P[A||B] \arrow[r, dashed]
 & Q[A|A'] \arrow[u]
\end{tikzcd}
\end{document}

输出

在此处输入图片描述

相关内容