我想使用 给一个节点一个标签tikz-cd
。但是,似乎在安排列距离时,tikz
将标签节点作为主节点的一部分,而不是仅考虑主节点的大小。
所以我想tikz-cd
在排列列距时忽略标签节点的存在。有没有什么选项可以做到这一点?
这是我的代码。这里我有一个很大的标签距离,以便于区分距离。
\[\begin{tikzcd}[sep=2em,label distance=2em]
\circ\rar &|[label=left:2]|\circ\rar &\circ
\end{tikzcd}\]
当然,也可以tikzpicture
直接使用。与使用\matrix
in进行比较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}