为什么明确定位的节点默认受到‘链上’的影响?

为什么明确定位的节点默认受到‘链上’的影响?

我想在连接上放置一个 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给出了这样的结果:

另一个方向很糟糕

我的问题是:

  1. 这是 TikZ 中的一个错误吗,或者在我看来?
  2. 我知道没有off chain钥匙,但是有没有与之相反的钥匙呢on chain
  3. 还有其他方法可以满足我的需要吗?(最好不要对我的源代码进行大量重新编辑)

答案1

快速修复:限制on chain在 . 内scope(用于continue chain,您知道,在另一个 . 中继续相同的链scope

简单解释一下:on cahin自由的当前链中的节点,包括标记,本质上也是节点。

更长的解释:为了方便用户,TiZ 看到 后不会立即绘制节点node。想想有多少个键负责该位置:posshift's,every nodes等。这些键恰好引起适当的变换也就不足为奇了。处理完这些键后,TiZ 尝试在(当前)原点处(隐式地)绘制一个节点,但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语法)。换句话说,您仍然可以自由放置它,但当它相对于最后给定的坐标放置时,它将改变锚点和相对间距。它不会强制节点始终放置在前一个节点下。否则您将无法放置bc首先放置。

\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列表。

相关内容