我希望用锯齿线连接 2 个点,偏移量由 xshift 定义,如下所示:
\documentclass[12pt]{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\tikzset{
ann/.style = {/utils/exec=\tikzset{ann/.cd,#1},
to path = {
(\tikztostart)
-- ([xshift=\pgfkeysvalueof{/tikz/ann/x}] \tikztostart)
|- (\tikztotarget)
}
},ann/.cd,x/.initial=1}
\begin{document}
\begin{tikzpicture}
\draw (0,0) grid (5,5);
\node (A) {A};
\node at (5,5) (B) {B};
\draw[line width=5pt] (A) to[ann={x=2}] (B);
\end{tikzpicture}
\end{document}
答案1
有两个问题。首先,你忘记了单位,所以2
被解释为2pt
。其次,起始节点是一个节点,即一个扩展对象,但路径实际上从边界开始。为了有更精细的控制,你可以引入一个辅助坐标。然后你得到
\documentclass[12pt]{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\tikzset{
ann/.style = {/utils/exec=\tikzset{ann/.cd,#1},
to path = {
(\tikztostart) coordinate(aux)
-- ([xshift=\pgfkeysvalueof{/tikz/ann/x}]aux)
|- (\tikztotarget)
}
},ann/.cd,x/.initial=1mm}
\begin{document}
\begin{tikzpicture}
\draw (0,0) grid (5,5);
\node (A) {A};
\node at (5,5) (B) {B};
\draw[line width=5pt] (A) to[ann={x=5mm}] (B);
\end{tikzpicture}
\end{document}
可以清楚的看到,粗线不是从A
节点的中心开始,而是从边界开始。这就是为什么最好引入辅助坐标的原因。
您可以使用 获得无需辅助坐标的相同结果++
。
\documentclass[12pt]{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\tikzset{
ann/.style = {/utils/exec=\tikzset{ann/.cd,#1},
to path = {
(\tikztostart)
-- ++ (\pgfkeysvalueof{/tikz/ann/x},0)
|- (\tikztotarget)
}
},ann/.cd,x/.initial=1mm}
\begin{document}
\begin{tikzpicture}
\draw (0,0) grid (5,5);
\node (A) {A};
\node at (5,5) (B) {B};
\draw[line width=5pt] (A) to[ann={x=5mm}] (B);
\end{tikzpicture}
\end{document}