我想在连接上放置一个 X 来表示它是不可能的。这是 MWE;完整示例有大量链接节点,因此是默认的,即使 MWE 没有链接节点。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{chains}
\begin{document}
\begin{tikzpicture}[%
start chain=going below,
every node/.style={%
on chain,
},
]
\node (a) {a};
\node [below=4cm of a] (b) {b};
\node [below left=2.8cm of a] (c) {c};
\draw (c) -- (a) node [pos=0.5] {X};
\draw (c) -- (b) node [pos=0.5] {X};
\end{tikzpicture}
\end{document}
这给出了左边的结果,而省略则on chain
给出了右边所需的结果:
...
我原本以为这pos=0.5
不应该受到链偏移的影响,但看起来是这样,因为它going right
给出了这样的结果:
我的问题是:
- 这是 TikZ 中的一个错误吗,或者在我看来?
- 我知道没有
off chain
钥匙,但是有没有与之相反的钥匙呢on chain
? - 还有其他方法可以满足我的需要吗?(最好不要对我的源代码进行大量重新编辑)
答案1
快速修复:限制on chain
在 . 内scope
(用于continue chain
,您知道,在另一个 . 中继续相同的链scope
)
简单解释一下:on cahin
:自由的当前链中的节点,包括标记,本质上也是节点。
更长的解释:为了方便用户,Ti钾Z 看到 后不会立即绘制节点node
。想想有多少个键负责该位置:pos
,shift
's,every nodes
等。这些键恰好引起适当的变换也就不足为奇了。处理完这些键后,Ti钾Z 尝试在(当前)原点处(隐式地)绘制一个节点,但on chain
随后又插入了另一个移位。这会毁掉一切,并引发您的问题。
\documentclass[border=9,tikz]{standalone}
\usetikzlibrary{chains}
\begin{document}
\begin{tikzpicture}[start chain=2 going below]
\begin{scope}[nodes={on chain=2}]
\node(a){a};
\node[below=4cm of a](b){b};
\node[below left=2.8cm of a](c){c};
\draw(c)--(a)node[pos=0.3]{X}node[pos=0.5]{X}node[pos=0.7]{X};
\end{scope}
\draw(c)--(b)node[pos=0.3]{X}node[pos=0.5]{X}node[pos=0.7]{X};
\end{tikzpicture}
\end{document}
答案2
chain 选项不限制节点的位置。它只改变键<chain direction>= of (\tikzchainprevios)
(使用positioning
语法)。换句话说,您仍然可以自由放置它,但当它相对于最后给定的坐标放置时,它将改变锚点和相对间距。它不会强制节点始终放置在前一个节点下。否则您将无法放置b
或c
首先放置。
\documentclass[tikz]{standalone}
\usetikzlibrary{chains,calc,positioning}
\begin{document}
\begin{tikzpicture}[%
start chain= C going below,
every node/.style={on chain}
]
\node (a) {a};% This is chain-1
\node [below=4cm of a] (b) {b};% This is chain-2
\node [below left=2.8cm of a] (c) {c};% This chain-3
\tikzset{node distance=0mm}
\draw (c) -- (a) node [pos=0.5] {\tikzchainprevious};% Still below= of hence north anchored
\tikzset{node distance=-1cm}
\draw (c) -- (b) node [pos=0.5] {\tikzchainprevious};% Still below= of
\end{tikzpicture}
\end{document}
链更适合于join
沿某些很少改变的方向轻松输入连续节点(也可能是 ed)。对于自由放置的节点,我会改用\chainin
列表。