当我编译这个最小的 LaTeX 文件时:
\documentclass{report}
\def\defMacro#1#2{\expandafter\def\csname#1\endcsname{#2}}
\def\useMacro#1{\csname#1\endcsname}
\usepackage{pgffor}
\begin{document}
\foreach \n in {0,1,...,10}{
\defMacro{number:\n}{\n}
}
\useMacro{number:8}
\end{document}
我没有获得 PDF 输出。我犯了什么错误?
答案1
循环\foreach
内容在每次迭代中按组执行,因此定义只是局部的。您需要\global
在 前面添加\defMacro
。
之所以\useMacro
不会导致错误,是因为如果之前未定义,\csname
则会产生副作用,即生成的宏定义等于。\relax