在 LaTeX 中循环遍历类似结构的数组
Looping through an array like structure in LaTeX
在python以及我熟悉的大多数其他编程语言中,我可以将值赋给类似数组的数据结构,遍历每个元素并在每次迭代时将元素传递给函数。这是一个例子:
def f(x):
return "This is {}".format(x)
if __name__=="__main__":
x = ['param1', 'param2', 'param3']
for item in x:
print(f(item))
运行 以上将打印以下内容到标准输出:
This is param1
This is param2
This is param3
这样做有几个好处:
- 我只需要调用函数
f
一次
- 我可以为函数中的每个参数嵌套一个额外的 for 循环
f
最近一直在玩纯TeX,了解到TeX是一种面向宏的、基于扩展的语言。我能得到的最接近上述内容的是:
\def\f#1{This is #1 \par}
\f{param1}
\f{param2}
\f{param3}
\end
这是次优的,因为:
- 我必须多次调用命令
\f
- 我每次都必须用不同的参数调用它。
我能做些什么来将上面的 TeX 代码重构为更干的东西吗?我如何在 Plain TeX 中模拟类似结构的数组和 for each 循环?
在 Latex 中,您可以使用 pgffor
包:
\documentclass{article}
\usepackage{pgffor}
\begin{document}
\foreach \x in {param1, param2, param3}{
This is \x\par
}
\def\foo{param1, param2, param3}
\foreach \x in \foo {
This is \x\par
}
\end{document}
在python以及我熟悉的大多数其他编程语言中,我可以将值赋给类似数组的数据结构,遍历每个元素并在每次迭代时将元素传递给函数。这是一个例子:
def f(x):
return "This is {}".format(x)
if __name__=="__main__":
x = ['param1', 'param2', 'param3']
for item in x:
print(f(item))
运行 以上将打印以下内容到标准输出:
This is param1
This is param2
This is param3
这样做有几个好处:
- 我只需要调用函数
f
一次 - 我可以为函数中的每个参数嵌套一个额外的 for 循环
f
最近一直在玩纯TeX,了解到TeX是一种面向宏的、基于扩展的语言。我能得到的最接近上述内容的是:
\def\f#1{This is #1 \par}
\f{param1}
\f{param2}
\f{param3}
\end
这是次优的,因为:
- 我必须多次调用命令
\f
- 我每次都必须用不同的参数调用它。
我能做些什么来将上面的 TeX 代码重构为更干的东西吗?我如何在 Plain TeX 中模拟类似结构的数组和 for each 循环?
在 Latex 中,您可以使用 pgffor
包:
\documentclass{article}
\usepackage{pgffor}
\begin{document}
\foreach \x in {param1, param2, param3}{
This is \x\par
}
\def\foo{param1, param2, param3}
\foreach \x in \foo {
This is \x\par
}
\end{document}