带有明确单位

带有明确单位

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。在xshiftyshift中它是 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}

演示矩形

相关内容