问题
我想做与以下相当的事情:
\def\setX{{(0:1cm)}}
\tikzset{x=\setX}
“可调试”代码(它无法运行,因为我按照我想要的方式放置它。\setX
里面的内容\tikzset
使它无法编译):
\documentclass[border=5mm]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\def\setX{(0:1cm)}
\tikzset{
x={\setX},y={(50:0.7cm)},z={(90:1cm)}
}
\draw[->] (0,0,0) --++ (1,0,0) node[right]{$x$};
\draw[->] (0,0,0) --++ (0,-1,0) node[right]{$y$};
\draw[->] (0,0,0) --++ (0,0,1) node[right]{$z$};
\end{tikzpicture}
\end{document}
动机
在兔子洞里呆了几个小时后不是弄清楚如何在 3d tikzpicture 中切换轴,我很好奇为什么这不起作用。这无疑是某种pgfkeys
魔法造成的。
答案1
这是关于扩展键值。x/.expand once=\setX
为键写入。它必须明确查看内容,否则它会抱怨。
\documentclass[border=5mm]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\def\setX{(0:1cm)}
\tikzset{
x/.expand once=\setX,y={(50:0.7cm)},z={(90:1cm)}
}
\draw[->] (0,0,0) --++ (1,0,0) node[right]{$x$};
\draw[->] (0,0,0) --++ (0,-1,0) node[right]{$y$};
\draw[->] (0,0,0) --++ (0,0,1) node[right]{$z$};
\end{tikzpicture}
\end{document}