使用定位库理解 tikz 继承

使用定位库理解 tikz 继承

在使用定位库时,我很难理解 tikz 继承模型。

请考虑以下示例:

\documentclass[]{scrbook}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}

\begin{tikzpicture}[black,node distance=5mm]
  \node[draw] (0) {origin};
  \node[draw,below=of 0,node distance=20mm] {A};
  \node[draw,node distance=20mm,below=of 0] {B};

  \begin{scope}[xshift=30mm]
    \node[draw] {xshifted origin};
    \node[draw,below=of 0,yshift=-30mm] {C};
    \node[draw,yshift=-30mm,below=of 0,xshift=30mm] {D};
  \end{scope}
\end{tikzpicture}

\end{document}

其结果如下:

结果

现在的问题是:

  1. node distance为什么在 B 中覆盖工作,但在 A 中却不可以?
  2. 在 C 中,使用below似乎覆盖了范围xshift,但在 D 中,它似乎在之前和之后都起作用below,所以这似乎与 A/B 的行为不同。为什么?

欢迎任何想法。:)

答案1

键是在偶然发现时设置的,因此如果您设置的键被其后的键使用,则会影响该键。否则,它将被设置,但使用它的键已经设置。

在引用节点名称时,0已作为画布中的固定位置存在。实际上进行不同的转换不会改变其画布位置,除非您进行低级画布转换,这种转换会全速进行,而不检查是什么。

此外,通过添加柔软的范围变换会将其添加到所有路径,但变换只会影响显式坐标,而(3,2)不会影响引用标签。快速示例

\begin{tikzpicture}
\draw[style=help lines] (-1,-1) grid[step=1] (2,2);
  \coordinate (o);
  \begin{scope}[xshift=1cm]
  \draw[red,thick] (o) -- (1,1);
  \end{scope}
\end{tikzpicture}

在此处输入图片描述

相关内容