我正在使用 绘制一幅图tikzpicture
。假设该图由许多对象组成。在工作结束时,我意识到我只需要移动其中一个对象,比如向右移动 1 个单位。显然,我可以通过 (a,b) --> (a+1,b) 更改所有坐标。显然这不是一个好的解决方案。
在经典的环境图片中,有一个命令\put(x,y){...}
允许您移动图片的整个子部分。
周围环境中有类似的东西吗tikzpicture
? 有什么解决方法吗?
答案1
您可以将一个通用转换应用于多个对象,只需将它们放在一个范围内即可。示例来自TikZ/pgf 手册(第 25.3 节):
\begin{tikzpicture}
\draw[help lines] (0,0) grid (3,2);
\draw (0,0) rectangle (1,0.5);
\begin{scope}[xshift=1cm]
\draw[red] (0,0) rectangle (1,0.5);
\draw[yshift=1cm] [blue] (0,0) rectangle (1,0.5);
\draw[rotate=30] [orange] (0,0) rectangle (1,0.5);
\end{scope}
\end{tikzpicture}
答案2
使用scope
带有shift
选项的,可采用任意移位向量。
\documentclass[border=2mm]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw[fill=red] (0,0) rectangle (1,1);
\begin{scope}[shift={(1,1)}]
\draw[fill=blue] (0,0) rectangle (1,1);
\end{scope}
\end{tikzpicture}
\end{document}
shift
的优点是,它与其他坐标一样,会受到重新定义x
和单位的影响,而和则不受影响。比较y
xshift
yshift
\documentclass[border=2mm]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw[fill=red] (0,0) rectangle (1,1);
\begin{scope}[shift={(1,1)}]
\draw[fill=blue] (0,0) rectangle (1,1);
\end{scope}
\begin{scope}[xshift=-1cm]
\draw[fill=green] (0,0) rectangle (1,1);
\end{scope}
\end{tikzpicture}
\end{document}
到
\documentclass[border=2mm]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[x=0.5cm,y=0.5cm] % <<<<<<<<<<<<<<<<<<<<<<<<<<<<<
\draw[fill=red] (0,0) rectangle (1,1);
\begin{scope}[shift={(1,1)}]
\draw[fill=blue] (0,0) rectangle (1,1);
\end{scope}
\begin{scope}[xshift=-1cm]
\draw[fill=green] (0,0) rectangle (1,1);
\end{scope}
\end{tikzpicture}
\end{document}