Como definir um bloco de código usando \tikzset

Como definir um bloco de código usando \tikzset

Eu sempre me pego fazendo muitas repetições com blocos de código TikZ fixos que tenho que reescrever continuamente. Minha pergunta é: é possível criar um bloco de comandos executáveis ​​​​TikZ (não apenas estilos) dentro de um único argumento e chamar esse argumento como um estilo?

Considere isto:

\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}

insira a descrição da imagem aqui

O que eu gostaria de saber é se existe algo assim

\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
}

Então isso usando

\draw[dimension line=from A to B value 3cm] (A)--(B);

produzirá a mesma saída. Isso ajudará a fazer o trabalho com o mínimo de esforço e permitirá a abstração. Acho este exemplo simples o suficiente para entender como criar blocos de código no TikZ. Obrigado.

Responder1

Este é mais um comentário longo do que uma resposta real.

Embora todos tikz-dimlineos exemplos usem coordenadas cartesianas, é possível usar coordenadas nomeadas:

\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}

insira a descrição da imagem aqui

De qualquer forma, finalmente encontrei a pergunta que procurava:

Desenhe a dimensão de uma linha como decoração no TikZ

informação relacionada