xshift=1mm
TikZ 中是否有办法向路径的每个坐标添加变换?
以下方法不起作用,因为它们的作用要么多于要么少于“路径的每个坐标”:
\path [xshift=1mm] ...
不适用于用节点定义的坐标,例如,\draw [xshift=1mm] (A) -- (B);
不会移动任何东西。transform canvas={xshift=1mm}
转换所有内容(不仅仅是路径坐标),并导致边界框和新坐标的定义出现问题。- 装饰不会改变底层路径(我认为?)因此
\draw [fancy decoration] (A) -- (B) node [below] {text};
节点会处于“错误”的位置(对应于未移位的路径)。
有效的方法是手动向每个坐标添加选项,例如,即使对于节点,这也有效:\draw ([opts]0,0) -- ([opts]A);
。至少如果A
通过定义,它是有效的coordinate
,而对于其他节点,当指定锚点时,它是有效的,如A.center
。
有没有类似的东西every coordinate/.style={opts}
可以做同样的事情而不需要opts
为每个坐标编写?
为了激励大家,这里有一个有帮助的例子,尽管我认为上述三种选择都不起作用:
\documentclass[tikz]{standalone}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\coordinate (A) at (1,0);
\coordinate (B) at (3,1);
\draw [very thick,->] (A) -- (B) node [above left] {$\vec v$};
%
% Define style for shifting by 1cm perpendicular to A-B
\tikzset{perpshift/.style={shift={($(A)!1cm!270:(B)-(A)$)}}}
%
\draw [very thick,->] ([perpshift]A) coordinate (A2) --
([perpshift]$(A)!0.5!(B)$) coordinate (B2)
node (N) [below right] {$\vec w$};
\draw [dashed] (A) -- (A2)
($(A)!(B2)!(B)$) -- (B2);
\end{tikzpicture}
\end{document}