我正在尝试使用包中提供的 foreach 循环创建一个表pgffor
。使用以下代码,我能够生成正确的内容,但无法正确对齐。
\begin{tabular}{c}
\foreach \i in {0,...,7}{
\foreach \j in {0,...,7}{
(\i,\j)
}
}
\end{tabular}
但是,当我尝试添加行尾(见下文)时,..
\begin{tabular}{c}
\foreach \i in {0,...,7}{
\foreach \j in {0,...,7}{
(\i,\j) \\
}
}
\end{tabular}
我收到以下错误:
! Missing \endgroup inserted.
<inserted text>
\endgroup
l.237 }
我不知道我做错了什么。有人能指出我吗?
答案1
将表格内容添加到宏中前你将其排版为:
\documentclass{article}
\usepackage{pgffor,etoolbox}
\newcommand*\mytablecontents{}
\foreach \i in {0,...,7}{
\foreach \j in {0,...,7}{
\xappto\mytablecontents{(\i,\j) }
}
\gappto\mytablecontents{\\}
}
\begin{document}
\begin{tabular}{c}
\mytablecontents
\end{tabular}
\end{document}
上面的代码使用etoolbox
's来\appto<macro>{<stuff>}
添加<stuff>
到宏<macro>
。或者更确切地说,它使用它的兄弟 's全局\gappto
添加(这很重要,因为它在组内执行循环)和's 全局添加并在添加到 之前扩展。后者很重要,因为否则将被多次添加但在循环之外并具有另一种含义 - 您将得到很多“(ı,ȷ)”。<stuff>
\foreach
\xappto
<stuff>
<stuff>
<macro>
(\i,\j)
\i
\j