后续问题https://tex.stackexchange.com/a/714853/46023
我有命令
\NewExpandableDocumentCommand{\test}{O{} m}{%
\foreach[count=\no from 0] \No in {1,...,#2}{%%
\node[draw, yshift=-5.5mm*\no, #1]{\No};
}%%
}
并且它在里面工作{tikzpicture}
。
但如果我把它放入 TikZ 矩阵中,它就不起作用。
我需要做什么?
\documentclass[border=6pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{matrix}
\NewExpandableDocumentCommand{\test}{O{} m}{%
\foreach[count=\no from 0] \No in {1,...,#2}{%%
\node[draw, yshift=-5.5mm*\no, #1]{\No};
}%%
}
\begin{document}
\begin{tikzpicture}[]
\test{3}
\test[red, xshift=1cm]{5}
\node[yshift=6mm, xshift=5mm] {works here};
\matrix (m) [matrix of nodes, nodes in empty cells, draw,
xshift=3cm, label={[align=left, font=\slshape]but not here \\ in the matrix},
]{
a & b \\
%\test{3} & \test[red, xshift=1cm]{5} \\ % Does not work
};
\end{tikzpicture}
\end{document}
答案1
节点矩阵意味着每个单元都像 a 的内容\node
,因此您的“在这里工作”比较应该是\node {\test{e}}
(也会失败)
无关,但您应该使用\NewDocumentCommand
not \NewExpandableDocumentCommand
,因为 pgf\foreach
无论如何都是不可扩展的,所以为其声明可扩展的参数处理器没有任何优势(并且有一些缺点)。