![带有明确单位](https://linux22.com/image/360272/%E5%B8%A6%E6%9C%89%E6%98%8E%E7%A1%AE%E5%8D%95%E4%BD%8D.png)
x
我更喜欢在指定坐标时使用隐式单位,因为我可以稍后通过和选项全局更改单位y
。
xshift
我尝试在和上应用此机制yshift
,但似乎它们需要明确的单位。为什么在这种情况下我们必须明确提及单位?
\documentclass[tikz,border=12pt]{standalone}
\begin{document}
\begin{tikzpicture}
\draw[gray!50] (-4,-4) grid (4,4);
\begin{scope}[>=stealth,<->]
\draw (-4,0) -- (4,0);
\draw (0,-4) -- (0,4);
\end{scope}
\draw (0,0) rectangle (2,1)[red]
%[xshift=1, yshift=2] (0,0) rectangle (2,1);
[xshift=1cm, yshift=2cm] (0,0) rectangle (2,1);
\end{tikzpicture}
\end{document}
带有明确单位
无明确单位
答案1
您可以使用shift={(1,2)}
或shift={(1,0)},shift={(0,2)}
。两者都会导致
代码:
\documentclass[tikz,border=12pt]{standalone}
\begin{document}
\begin{tikzpicture}
\draw[gray!50] (-4,-4) grid (4,4);
\begin{scope}[>=stealth,<->]
\draw (-4,0) -- (4,0);
\draw (0,-4) -- (0,4);
\end{scope}
\draw (0,0) rectangle (2,1)[red]
[shift={(1,2)}] (0,0) rectangle (2,1)
%[shift={(1,0)},shift={(0,2)}] (0,0) rectangle (2,1)
;
\end{tikzpicture}
\end{document}
您还可以定义新的样式:
\documentclass[tikz,border=12pt]{standalone}
\tikzset{
my xshift/.style={shift={(#1,0)}},
my xshift/.value required,
my yshift/.style={shift={(0,#1)}},
my yshift/.value required
}
\begin{document}
\begin{tikzpicture}
\draw[gray!50] (-4,-4) grid (4,4);
\begin{scope}[>=stealth,<->]
\draw (-4,0) -- (4,0);
\draw (0,-4) -- (0,4);
\end{scope}
\draw[red] (0,0) rectangle (2,1)
[my xshift=1, my yshift=2] (0,0) rectangle (2,1)
;
\end{tikzpicture}
\end{document}
结果和上面一样。
答案2
如果您不想使用默认单位,则只需指定单位。但默认单位取决于上下文。在坐标规范中,它是标准 x / y 单位之一 - 默认为 10mm。在xshift
和yshift
中它是 1pt。
\documentclass[tikz,border=12pt]{standalone}
\begin{document}
\begin{tikzpicture}
\draw[gray!50] (-4,-4) grid (4,4);
\begin{scope}[>=stealth,<->]
\draw (-4,0) -- (4,0);
\draw (0,-4) -- (0,4);
\end{scope}
\draw (0,0) rectangle (2,1)[red] [xshift=1cm, yshift=2cm] (0,0) rectangle (2,1);
\draw [thick] (0,0) rectangle (2,1)[blue] [xshift=1, yshift=2] (0,0) rectangle (2,1);
\draw (0,0) rectangle (2,1)[green] [xshift=1pt, yshift=2pt] (0,0) rectangle (2,1);
\end{tikzpicture}
\end{document}