tikz-cd 中的标签选项影响列之间的距离

tikz-cd 中的标签选项影响列之间的距离

我想使用 给一个节点一个标签tikz-cd。但是,似乎在安排列距离时,tikz将标签节点作为主节点的一部分,而不是仅考虑主节点的大小。

所以我想tikz-cd在排列列距时忽略标签节点的存在。有没有什么选项可以做到这一点?

这是我的代码。这里我有一个很大的标签距离,以便于区分距离。

\[\begin{tikzcd}[sep=2em,label distance=2em]
\circ\rar &|[label=left:2]|\circ\rar &\circ
\end{tikzcd}\]

当然,也可以tikzpicture直接使用。与使用\matrixin进行比较tikzpicture

\[\begin{tikzpicture}[label distance=2em]
\matrix[matrix of math nodes,column sep=2em]{
\node (1){\circ};
&\node (2)[label=left:2]{\circ};
&\node (3){\circ};\\ };
\path[->] (1) edge (2)
          (2) edge (3);
\end{tikzpicture}\]

或者,如果加载\usetikzlibrary{positioning},可以尝试

\[\begin{tikzpicture}
[label distance=1em]
\node (3)  {$\circ$};
\node (2) [left=of 3,label=left:2] {$\circ$};
\node (1) [left=of 2] {$\circ$};
\path[->] (1) edge (2)
          (2) edge (3);
\end{tikzpicture}\]

这里,tikz定位主节点时忽略标签节点。

在此处输入图片描述

当然使用\node (2) at (1,0) [label=left:2]{$\circ$}是没有问题的,但是当主节点的大小发生变化时,需要手动计算坐标。

所以,我想知道为什么在定位主节点时不tikz-cd忽略标签节点;正如我们所见,tikzpicture可以做到这一点。是否有一些选项可以告诉您tikz-cd这样做?

谢谢。

答案1

您可以不使用标签,而是随后使用选项在所需位置绘制节点execute at end picture={,,,}

\documentclass{article}
\usepackage{tikz-cd}
\usetikzlibrary{positioning}

\begin{document}
\[
\begin{tikzcd}[
    sep=2em,
    every matrix/.append style={name=mymatr},
    execute at end picture={
        \node[left=2em of mymatr-1-2.east] {2}; 
        }
    ]
    \circ\rar &\circ\rar &\circ
\end{tikzcd}
\]
\end{document}

在此处输入图片描述

相关内容