我想遍历存储在变量内的值列表。
问题在于,要迭代的项目列表(\myList
在 MWE 中)是先前声明的变量的值(\mydata
)。
如 MWE 所示,此嵌套声明会破坏迭代。事实上,迭代 over\myData
不会产生任何问题,而迭代 over\myList
会产生问题。
\documentclass{article}
\usepackage{pgffor}
\setlength\parindent{0pt}
\def\myData{1,2}
\def\myList{\myData}
\begin{document}
\section*{Variables}
Mydata : \myData
Mylist : \myList
\section*{Iteration over myList}
Somewhere this is broken due to the variable declaration...
\foreach \x in \myList
{
Item \x \\
}
\section*{Iteration over myData}
\foreach \x in \myData
{
Item \x \\
}
\end{document}
如何使变量重新定义不破坏迭代?我无法做到这一点,因为这个 MWE 是一个更广泛项目的摘录。
答案1
这是一个扩展问题。如果你使用 \edef\myList{\myData}
或,\edef\myList{\myData}
则你的代码将起作用:
\documentclass{article}
\usepackage{pgffor}
\setlength\parindent{0pt}
\def\myData{1,2}
\edef\myList{\myData}
\begin{document}
\section*{Variables}
Mydata : \myData
Mylist : \myList
\section*{Iteration over myList}
Somewhere this is broken due to the variable declaration...
\foreach \x in \myList
{
Item \x \\
}
\section*{Iteration over myData}
\foreach \x in \myData
{
Item \x \\
}
\end{document}