如何在单个 tikz 图片中使用 tkz-collection 在节点周围绘制 2 个图形?

如何在单个 tikz 图片中使用 tkz-collection 在节点周围绘制 2 个图形?

通常我可以指定一个节点相对于另一个节点的位置,例如使用left of和类似

\usepackage{tikz}
\usetikzlibrary{positioning}
...
\matrix (first) [left of=arrow, matrix of math nodes, ampersand replacement=\&,
  left delimiter=\|, right delimiter=\|, xshift=-2.5cm] {
...

现在我想使用 tkz-collection 绘制两个简单图形,用带有文本的节点分隔vs。但是我想显示相同的域,即我想在 中有相同的坐标\tkzInit。我以为我可以使用范围隔离坐标冲突,但看起来并非如此。

整个坐标空间\tkzInit是否由全局定义tikzpicture?我是否应该使用叠加以某种方式组合两个图形?

这是我尝试过的

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}
\usepackage{tkz-fct}

\begin{document}

\begin{tikzpicture}
\begin{scope}
\tkzInit[xmin=-3,xmax=3,xstep=2, ymin=-3,ymax=3,ystep=2]
\tkzGrid[sub,subxstep=1,subystep=1](-2,-2)(2,2)
\tkzAxeXY
\node (a) at (3,0) {hello};
\end{scope}

\begin{scope}
\tkzInit[xmin=-3,xmax=3,xstep=2, ymin=-3,ymax=3,ystep=2]
\tkzGrid[sub,subxstep=1,subystep=1](-2,-2)(2,2)
\tkzAxeXY
\node[right=5cm of a] (b) at (3,0) {hello};
\end{scope}

\end{tikzpicture}

\end{document}

我看到两个分开的*你好*,但只有一个人影。

答案1

正如评论中提到的,\xshift在第二个范围环境中使用选项。正如 Qrrbrbirlbel 所评论的,您也可以删除该at (x,y)规范。此外,我还对序言进行了一些清理。tkz-fct自动加载tikz

\documentclass{article}

\usepackage{tkz-fct}
\usetikzlibrary{positioning}


\begin{document}

\begin{tikzpicture}
\begin{scope}
\tkzInit[xmin=-3,xmax=3,xstep=2, ymin=-3,ymax=3,ystep=2]
\tkzGrid[sub,subxstep=1,subystep=1](-2,-2)(2,2)
\tkzAxeXY
\node (a) at (3,0) {hello};
\end{scope}

\begin{scope}[xshift=5cm]
\tkzInit[xmin=-3,xmax=3,xstep=2, ymin=-3,ymax=3,ystep=2]
\tkzGrid[sub,subxstep=1,subystep=1](-2,-2)(2,2)
\tkzAxeXY
\node (b) at (3,0) {hello};
\tkzText[above,color=red](3,0){hello}
\end{scope}
\end{tikzpicture}

\end{document}

在此处输入图片描述

\tkzInit您可以在中看到的定义\tkz-tools-base.tex。但我不明白其中的大部分内容。:)

\xshift此外,pgf 手册第 250 页还解释了坐标变换的一般用法。它说任何指定的坐标都是first "reduced" to a position of the form "x points to the right and y points upwards." ... The next step is to apply the current coordinate transformation matrix to the coordinate."这意味着对于第二个范围,每个原始x坐标都会被变换。

更新tkz集合有一个用于放置文本的命令: 。我修改了第二个范围\tkzText的代码只是为了进行比较。tkzText

编辑我终于可以说这不是一个错误。该行为是由xstepystep选项引起的。这是修改后的 MWE。我没有删除前一个以便进行比较。

\documentclass{article}

\usepackage{tkz-fct}

\begin{document}

\begin{tikzpicture}
\begin{scope}
\tkzInit[xmin=-3,xmax=3,xstep=1, ymin=-3,ymax=3,ystep=1]
\tkzGrid[sub,subxstep=1,subystep=1](-2,-2)(2,2)
\tkzAxeXY
\node (a) at (3,0) {hello};
\end{scope}

\begin{scope}[xshift=8cm]
\tkzInit[xmin=-3,xmax=3,xstep=1, ymin=-3,ymax=3,ystep=1]
\tkzGrid[sub,subxstep=1,subystep=1](-2,-2)(2,2)
\tkzAxeXY
\node (b) at (3,0) {hello};
\tkzText[above,color=red](3,0){hello}
\end{scope}
\end{tikzpicture}

\end{document}

在此处输入图片描述

相关内容