在LaTeX中迭代

Tim*_*Tim 58 iteration latex for-loop

我想使用一些迭代控制流来简化以下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}
Run Code Online (Sandbox Code Playgroud)

我了解到forloop包提供了for循环.但我不确定如何将它应用于我的案例?还是其他不通过forloop的方法?


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

Ma *_*ing 122

您可以使用pgfforpackage,pgf提供的工具.基本语法是:

\foreach \n in {0,...,22}{do something}
Run Code Online (Sandbox Code Playgroud)

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

\foreach \n in {apples,burgers,cake}{Let's eat \n.\par}
Run Code Online (Sandbox Code Playgroud)

  • 由于某种原因,我在导入包“pgffor”时遇到编译错误。 (3认同)

Tho*_*mas 25

这样的事情将照顾你的表格的主体:

\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
}
Run Code Online (Sandbox Code Playgroud)

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

You can't use `\hrule' here except with leaders.
Run Code Online (Sandbox Code Playgroud)

我不确定那意味着什么; 如果你真的不能没有双线,我可以更多地研究它.

还要注意你必须使用<; 例如,<= 24将无法正常工作.


至于你的更新:我只是声明一个命令,它接受你正在循环的参数.像这样的东西:

\newcommand\fordir[1]{do something complex involving directory named #1}

\fordir{dira}
\fordir{dirb}
\fordir{dirc}
\dots
Run Code Online (Sandbox Code Playgroud)