Ciao a tutti,
quello che vorrei riuscire a fare è calcolare un prodotto scalare tra due vettori.
Di seguito il codice:
`
\documentclass{article}
\usepackage{tikz}\def\vectorDot(#1,#2,#3)(#4,#5,#6)#7{%
\pgfmathparse{#1*#4+#2*#5+#3*#6}%
\expandafter\let\csname#7\endcsname=\pgfmathresult%
}\begin{document}
\def\A{1,1,1}
\def\B{1,2,3}\vectorDot(1,1,1)(1,1,1){dotAB} % funziona
%\vectorDot(\A)(\B){dotAB} % non funziona\dotAB
\end{document}
`come potete vedere il caso in cui io definisco il vettore A prima con il comando \def per poi inserirlo nel comando che compie il prodotto non funziona.
Immagino perché il comando \A venga è visto dal comando \vectorDot solamente come l’input #1 e non come #1,#2,#3.
Si può ovviare a questo?
Saluti
Michele
\A non è una lista di token della forma richiesta, lo è la sua espansione.
`\def\vectorDot(#1)(#2){\begingroup
\edef\x{\endgroup\noexpand\vectorDotI(#1)(#2)}\x}
\def\vectorDotI(#1,#2,#3)(#4,#5,#6)#7{%
\pgfmathparse{#1*#4+#2*#5+#3*#6}%
\expandafter\let\csname#7\endcsname\pgfmathresult
}`
Ciao
Enrico