
Inspirado por una respuesta que di aquí, surgió la pregunta de cómo necesito definir correctamente una macro, si quiero pasarla a una declaración de vector en tikz.
Si deseas modificar un vector, la sintaxis utilizada es básicamente x={(1,-0.5,0)}
. Si quiero ponerlo en una macro, ¿cómo debe verse la definición para no causar problemas con las llaves?
\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}
Respuesta1
Hay dos problemas:
\{
y\}
no son llaves de argumento.- TikZ necesita saber qué tipo de objeto sigue, por lo que no se puede ocultar en una macro.
El siguiente ejemplo amplía primero el argumento opcional de
\draw
para resolver el último problema. Durante la definición,
\{
se redefine para reemplazarlo \{...\}
por {...}
:
\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}
Si hay algún grado de libertad, como xvec
se proporciona, entonces podría definirse como coordenada, por ejemplo:
\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}