为什么 yshift 在这个 TikZ 示例中不起作用?

为什么 yshift 在这个 TikZ 示例中不起作用?

知道为什么yshift在以下 TikZ 示例中不起作用吗?

\documentclass{minimal}
\usepackage{tikz}
\begin{document}

\begin{tikzpicture}
  \coordinate (A) at (0,0);
  \coordinate (B) at (2.5,0);
  \draw (A) -- (B);
  \draw[yshift=2cm] (A) -- (B);
\end{tikzpicture}

\end{document}

答案1

它可以与坐标一起使用,或者如果你将 yshift 放在名称 A 和 B 旁边的括号内:

\documentclass{minimal}
\usepackage{tikz}
\begin{document}

\begin{tikzpicture}
  \coordinate (A) at (0,0);
  \coordinate (B) at (2.5,0);
  \draw (A) -- (B);
  \draw ([yshift=2cm]A) -- ([yshift=2cm]B);
\end{tikzpicture}

\end{document}

输出:

替代文本

答案2

在这种简单的情况下,您可以使用transform canvas

\documentclass{minimal}
\usepackage{tikz}
\begin{document}

\begin{tikzpicture}
  \coordinate (A) at (0,0);
  \coordinate (B) at (2.5,0);
  \draw (A) -- (B);
  \draw[transform canvas={yshift=2cm}] (A) -- (B);
\end{tikzpicture}

\end{document}

输出:

输出

在更复杂的情况下,请务必阅读 PGF 手册中第节中的警告25.4 画布变换

应谨慎使用画布变换。在大多数情况下,您不希望图片中的线宽发生变化,因为这会造成视觉不一致。同样重要的是,当您使用画布变换时,pgf 会丢失节点位置和图片大小的轨迹,因为它在计算节点坐标时不考虑画布变换的影响。

答案3

yshift(和类似的命令)适用于路径中的所有坐标,而不是整个路径。它们也不适用于锚点:根据 TikZ 手册(2.0 版第 15.11 节):

一旦定义了节点 x,您就可以在通常使用正常坐标的任何位置使用 (x.anchor)。这将得出给定锚点在图片中的位置。请注意,变换不适用于此坐标,也就是说,即使您指定了 scale=3 或 xshift=4cm,(x.north) 仍将是 x 的北锚点。这通常是您所期望的。

相关内容