在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}