
내가 여기에 제공한 답변에서 영감을 받아 tikz의 벡터 선언에 매크로를 전달하려면 매크로를 어떻게 올바르게 정의해야 하는지에 대한 질문이 생겼습니다.
벡터를 수정하려는 경우 기본적으로 사용되는 구문은 입니다 x={(1,-0.5,0)}
. 매크로에 넣으려면 중괄호에 문제를 일으키지 않도록 정의가 어떻게 생겼나요?
\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}
답변1
두 가지 문제가 있습니다.
\{
\}
인수 중괄호가 아닙니다 .- TikZ는 어떤 종류의 개체가 뒤따르는지 알아야 하므로 매크로에 숨길 수 없습니다.
다음 예에서는
\draw
후자의 문제를 해결하기 위해 먼저 선택적 인수를 확장합니다. 정의하는 동안 은 다음 으로 \{
대체되도록 재정의됩니다 .\{...\}
{...}
\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}
어느 정도의 자유도가 있는 경우 어떻게 xvec
제공되는지 좌표로 정의할 수 있습니다. 예를 들면 다음과 같습니다.
\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}