在LaTeX迭代

我想用一些迭代控制stream来简化下面的LaTeX代码。

\begin{sidewaystable} \caption{A glance of images} \centering \begin{tabular}{| c ||c| c| c |c| c|| c |c| c|c|c| } \hline \backslashbox{Theme}{Class} &\multicolumn{5}{|c|}{Class 0} & \multicolumn{5}{|c|}{Class 1} \\ \hline \hline 1 & \includegraphics[scale=2]{../../results/1/0_1.eps} &\includegraphics[scale=2]{../../results/1/0_2.eps} &\includegraphics[scale=2]{../../results/1/0_3.eps} &\includegraphics[scale=2]{../../results/1/0_4.eps} &\includegraphics[scale=2]{../../results/1/0_5.eps} &\includegraphics[scale=2]{../../results/1/1_1.eps} &\includegraphics[scale=2]{../../results/1/1_2.eps} &\includegraphics[scale=2]{../../results/1/1_3.eps} &\includegraphics[scale=2]{../../results/1/1_4.eps} &\includegraphics[scale=2]{../../results/1/1_5.eps} \\ \hline ... % similarly for 2, 3, ..., 22 \hline 23 & \includegraphics[scale=2]{../../results/23/0_1.eps} &\includegraphics[scale=2]{../../results/23/0_2.eps} &\includegraphics[scale=2]{../../results/23/0_3.eps} &\includegraphics[scale=2]{../../results/23/0_4.eps} &\includegraphics[scale=2]{../../results/23/0_5.eps} &\includegraphics[scale=2]{../../results/23/1_1.eps} &\includegraphics[scale=2]{../../results/23/1_2.eps} &\includegraphics[scale=2]{../../results/23/1_3.eps} &\includegraphics[scale=2]{../../results/23/1_4.eps} &\includegraphics[scale=2]{../../results/23/1_5.eps} \\ \hline \end{tabular} \end{sidewaystable} 

我知道forloop包提供了for循环。 但我不知道如何将其应用于我的案件? 还是其他方法不通过forloop?


如果我还想简单地另一个类似的情况,其中唯一的区别是目录不是从1,2到23运行,而是以一些任意的顺序,如3,2,6,9,…或甚至一个string列表,如dira,dirc,dird,dirb,….我如何将LaTeX代码转换成循环呢?

像这样的东西将照顾你的表格的身体:

 \newcounter{themenumber} \newcounter{classnumber} \newcounter{imagenumber} \forloop{themenumber}{1}{\value{themenumber} < 24}{ % \hline <-- Error here \arabic{themenumber} \forloop{classnumber}{0}{\value{classnumber} < 2}{ \forloop{imagenumber}{1}{\value{imagenumber} < 6}{ & \includegraphics[scale=2]{ ../../results/\arabic{themenumber}/\arabic{classnumber}_\arabic{imagenumber}.eps } } } \\ \hline } 

我不得不评论第一个\hline因为它给了我一个错误:

 You can't use `\hrule' here except with leaders. 

我不确定这是什么意思; 如果你真的不能没有双重生活,我可以更多地考虑。

另外请注意,您必须使用< ; 例如, <= 24将不起作用。


至于你的更新:我会简单地声明一个命令,采用你正在循环的参数。 像这样的东西:

 \newcommand\fordir[1]{do something complex involving directory named #1} \fordir{dira} \fordir{dirb} \fordir{dirc} \dots 

你可以使用pgffor包,一个由pgf提供的工具。 基本的语法是:

 \foreach \n in {0,...,22}{do something} 

值得注意的是,for循环不限于整数,例如:

 \foreach \n in {apples,burgers,cake}{Let's eat \n.\par}