
Ich habe einen guten Beispielcode gefundenHier, und versuchen Sie, es mit let
einem Befehl neu zu formatieren und eines newcommand
fü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 $
).