
Я всегда обнаруживаю, что делаю много повторений с фиксированными блоками кода 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}
В любом случае, я наконец нашел вопрос, который искал: