LaTeX 中的迭代

我想使用一些迭代控制流来简化下面的 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}

我了解到 对于回路包,对于回路包提供了 for循环。但是我不知道如何把它应用到我的案子上?或者其他不通过 forloop 的方法?


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

110502 次浏览

像这样的东西会照顾你的表格的主体:

\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

您可以使用由 pgf 提供的 pgffor包:

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

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

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