通常我可以指定一个节点相对于另一个节点的位置,例如使用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
编辑我终于可以说这不是一个错误。该行为是由xstep
和ystep
选项引起的。这是修改后的 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}