![为什么 yshift 在这个 TikZ 示例中不起作用?](https://linux22.com/image/231736/%E4%B8%BA%E4%BB%80%E4%B9%88%20yshift%20%E5%9C%A8%E8%BF%99%E4%B8%AA%20TikZ%20%E7%A4%BA%E4%BE%8B%E4%B8%AD%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8%EF%BC%9F.png)
知道为什么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 的北锚点。这通常是您所期望的。