我总是发现自己对固定的 TikZ 代码块进行了大量重复操作,而这些代码块我不得不一遍又一遍地重写。我的问题是,是否可以在单个参数内创建一个 TikZ 可执行命令块(不仅仅是样式),并将该参数称为样式?
考虑一下:
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{tikzpicture}
\coordinate [label = below:A](A) at (0, 0);
\coordinate [label = above:B](B) at (3, 3);
\draw (A) -- (B);
\draw [|-|, thin] ($(A)! 8mm !90:(B)$) -- node [sloped, midway, fill = white]{$3$cm}
($(B)! -8mm !90:(A)$);%This is too long and It would awesome to abstract it
\end{tikzpicture}
我想知道的是,是否有类似的事情
\tikzset{
dimension line/.code arg={from#1to#2value#3}
draw the dimension line between (A) and (B),
add a node in the middle with blah style and blau value
}
因此使用
\draw[dimension line=from A to B value 3cm] (A)--(B);
将产生相同的输出。这将有助于以最小的努力完成工作并允许抽象,我发现这个例子足够简单,可以理解如何在 TikZ 中创建代码块。谢谢。
答案1
这更像是一个长评论而不是真正的答案。
尽管所有tikz-dimline
示例都使用笛卡尔坐标,但也可以采用命名坐标:
\documentclass[border=2mm,tikz]{standalone}
\usepackage{tikz-dimline}
\begin{document}
\begin{tikzpicture}
\draw[red] (0,0) coordinate (A) -- (45:3) coordinate (B);
\dimline[color=blue]{([shift={(-3mm,3mm)}]A)}{([shift={(-3mm,3mm)}]B)}{3cm};
\end{tikzpicture}
\end{document}
无论如何,我终于找到了我正在寻找的问题: