
Inspiriert durch eine Antwort, die ich hier gegeben habe, kam die Frage auf, wie ich ein Makro richtig definieren muss, wenn ich es an eine Vektordeklaration in Tikz übergeben möchte.
Wenn du einen Vektor verändern willst, ist die verwendete Syntax grundsätzlich x={(1,-0.5,0)}
. Wenn ich ihn in ein Makro einbauen will, wie muss die Definition aussehen, damit es nicht zu Problemen mit den geschweiften Klammern kommt?
\documentclass[tikz,border=3mm]{standalone}
\usetikzlibrary{intersections,calc}
\begin{document}
\newcommand{\xvec}{\{(1,-0.5,0)\}}
\begin{tikzpicture}
\draw[thick, x={(1,-0.5,0)}](-1,0,0)--(1,0,0);
\draw[thick, x=\xvec](-1,0,0)--(1,0,0);
\end{tikzpicture}
\end{document}
Antwort1
Es gibt zwei Probleme:
\{
und\}
sind keine Argumentklammern.- TikZ muss wissen, um welche Art von Objekt es sich handelt, daher kann es nicht in einem Makro versteckt werden.
Das folgende Beispiel erweitert zuerst das optionale Argument von ,
\draw
um das letztere Problem zu lösen. Während der Definition wird neu definiert und durch \{
ersetzt :\{...\}
{...}
\documentclass[tikz,border=3mm]{standalone}
\begin{document}
\newcommand{\xvec}{\{(1,-0.5,0)\}}
\begin{tikzpicture}
\draw[thick, x={(1,-0.5,0)}](-1,0,0)--(1,0,0);
\begingroup
\def\{#1\}{{#1}}
\edef\x{\endgroup
\noexpand\draw[thick, x=\xvec]%
}\x(-1,0,0)--(1,0,0);
\end{tikzpicture}
\end{document}
Wenn ein gewisser Freiheitsgrad gegeben ist, wie xvec
wird er bereitgestellt, dann könnte er beispielsweise als Koordinate definiert werden:
\documentclass[tikz,border=3mm]{standalone}
\begin{document}
\begin{tikzpicture}
\draw[thick, x={(1,-0.5,0)}](-1,0,0)--(1,0,0);
\coordinate (xvec) at (1, -0.5, 0);
\draw[thick, x=(xvec)](-1,0,0)--(1,0,0);
\end{tikzpicture}
\end{document}