Verwenden Sie den Befehl „let“, um eine einzelne Pfeilform mit Drehwinkel zu zeichnen

Verwenden Sie den Befehl „let“, um eine einzelne Pfeilform mit Drehwinkel zu zeichnen

Ich habe einen guten Beispielcode gefundenHier, und versuchen Sie, es mit leteinem Befehl neu zu formatieren und eines newcommandfür die einfache Verwendung zu definieren.

Unten ist meine Entwurfsversion, die aber nicht kompiliert werden kann:

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

Fehler:

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

Es fällt mir schwer, herauszufinden, wo der Fehler liegt. Ich wäre dankbar, wenn mir jemand helfen könnte!

Antwort1

Der Code wird kompiliert, wenn \p1=($(#1) - $(#2))durch ersetzt wird \p1=($(#1) - (#2)$)(beachten Sie die Position von $).

verwandte Informationen