foreach 和 renew 命令

foreach 和 renew 命令

我想在 foreach 循环中更新变量,但我的代码不起作用。请帮忙!

\documentclass{article}
\usepackage{pgffor}
\newcommand\tests{
  \newcommand\mytext{aaa}
  \foreach \i in {bbb,ccc,ddd,eee,fff}{
    \renewcommand\mytext\i
  }
  \mytext
}
\begin{document}
  \tests
\end{document}\

它输出字符串“aaa”,而不是“fff”!

答案1

循环\foreach隐式设置了一个组。因此,在下一个循环或循环之后,重新定义会丢失。全局定义会有所帮助,例如:

\documentclass{article}
\usepackage{pgffor}
\newcommand\tests{
  \newcommand\mytext{aaa}
  \foreach \i in {bbb,ccc,ddd,eee,fff}{
    \global\let\mytext\i
  }
  \mytext
}
\begin{document}
  \tests
\end{document}

结果

相关内容