web-dev-qa-db-ja.com

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}

forloop packageforループを提供することを学びました。しかし、私はそれを私のケースに適用する方法がわかりませんか?またはforloop以外の方法ですか?


また、ディレクトリが1、2、23からではなく、3、2、6、9、...などの任意の順序で実行されるという唯一の違いがある、別の同様のケースも必要な場合dira、dirc、dird、dirbなどの文字列のリスト.... LaTeXコードをループにするにはどうすればよいですか?

57
Tim

次のようなものが、表形式の本文を処理します。

\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
24
Thomas

Pgfが提供するツールであるpgfforパッケージを使用できます。基本的な構文は次のとおりです。

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

特に、このforループは整数に制限されていません。次に例を示します。

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