use el comando let para dibujar una forma de flecha única con ángulo de rotación

use el comando let para dibujar una forma de flecha única con ángulo de rotación

Encontré un buen código de ejemplo.aquí, e intente reformatearlo con letel comando y defina uno newcommandpara facilitar su uso.

A continuación se muestra mi versión borrador pero no puedo pasar la compilación:

\documentclass[border=10mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes.arrows, calc}
\newcommand{\dbarr}[4] {
  \path (#1) -- (#2) 
    let 
        \p1=($(#1) - $(#2)),
        \n{height}={veclen(\x1,\y1)}, 
        \n{angle}={atan2(\y1,\x1)} in 
    node[midway, single arrow, draw=black, 
        minimum width=15mm, minimum height=\n{height}, 
        inner sep=0mm, single arrow head extend=1mm, double arrow head extend=1mm,
        fill=cyan!20,double arrow,rotate=\n{angle}] (#3) {#4};    
}
\begin{document}
    \begin{tikzpicture}
    \coordinate (A) at (0,0);
    \coordinate (B) at (2,2);
    \dbarr{A}{B}{C}{from A to B};
    \end{tikzpicture}
\end{document}

Error:

Runaway argument?
$(B)), \n {height}={veclen(\x 1,\y 1)}, \n {angle}={atan2(\y 1,\x 1)}\ETC.
! File ended while scanning use of \tikz@cc@parse@factor.
<inserted text> 
                \par 
<*> a.tex
         
? x
No pages of output

Este error me resulta difícil entender dónde está el error. ¡Agradezco si alguien puede ayudarme!

Respuesta1

El código se compila si \p1=($(#1) - $(#2))se reemplaza por \p1=($(#1) - (#2)$)(tenga en cuenta la posición de $).

información relacionada