以下代码无法用“pdflatex file.tex”编译,我不知道如何修复它。第 9 行是问题所在。具体来说是 \MV。
\documentclass[tikz]{standalone}
\usepackage{tikz}
\newcommand\MV{\foreach\item in {2}{3}}
\newcommand\YV{2}
\begin{document}
\begin{tikzpicture}
\draw (1,0) node[below=3pt] {\MV}; % works
\draw (0,0) -- (2,\YV); % works
\draw (0,0) -- (2,\MV); % fails
\end{tikzpicture}
\end{document}
我收到此错误:
! Undefined control sequence.
\foreach ...reach \let \pgffor@assign@before@code
=\pgfutil@empty \let \pgff...
答案1
据我了解,这不是由于可扩展性,而是由于误用\foreach
。
只需尝试用它的定义替换你\MV
:它在第 9 行变得毫无意义。它在第 7 行运行完美,因为该命令针对的是节点内容,而不是位置。
我稍微调整一下你的例子
\documentclass[tikz]{standalone}
\usepackage{tikz}
\newcommand\MV{\foreach\item in {2,...,4}{\item+3}}
\newcommand\YV{2}
\begin{document}
\begin{tikzpicture}
\draw (1,0) node[below=3pt] {\MV}; % works
\draw (0,0) -- (2,\YV); % works
% \draw (0,0) -- (2,\MV); % fails
% \draw (0,0) -- (2,\foreach\item in {2,...,4}{\item+3}); % fails
\foreach \item in {2,...,4}{
\draw (0,0) -- (2,\item) node[below=3pt] {\item}; % works
}
\end{tikzpicture}
\end{document}