2010-04-01 16 views
46

Aşağıdaki LaTeX kodunu basitleştirmek için bazı yineleme kontrol akışını kullanmak istiyorum.LaTeX'te yineleme

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

Ben forloop packagefor döngü sağladığını öğreniyoruz. Ama bunu benim durumuma nasıl uygulayacağımı bilmiyorum? Veya forloop tarafından değil diğer yöntemler?


Ben de tek fark dizin 23'e, 1, 2 çalıştırmak, ancak bazı keyfi sırayla gibi 3, 2, 6, 9 olmamasıdır basitçe başka benzer durum, isterseniz ... dira, dirc, dird, dirb gibi dizeler, hatta bir dizi listesi .... LaTeX kodunu nasıl döngülere dönüştürürüm o zaman? Böyle

+1

kontrol ediniz. En yüksek oylanan cevap neredeyse üç katı kadar oy aldı! Teşekkürler. – Sebastian

cevap

21

şey mi tabular vücudun ilgilenir:

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

değilim: bana bir hata verdi çünkü ilk \hline dışarı yorumlamak zorunda

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

Bunun ne anlama geldiğini; Eğer çift çizgi olmadan gerçekten yaşayamazsanız, daha fazla bakabilirim.

Ayrıca <; örneğin, <= 24 çalışmayacak.


Güncelleştirmeniz hakkında: Yalnızca üzerinde döngü yaptığınız argümanı alan bir komutu bildirmek istiyorum. Böyle bir şey:

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

\fordir{dira} 
\fordir{dirb} 
\fordir{dirc} 
\dots 
+0

Teşekkürler, Thomas! Gerçekten takdir et! Evet, satırları ayıran çift yatay çizgilerle güzel olurdu. Başka bir soru: Ayrıca, iki çok noktaya bölmeyi ayıran çift dikey çizgileri nasıl alabilirim: \ multicolumn {5} {| c |} {Class 0} ve \ multicolumn {5} {| c |} {Class 1}? – Tim

98

Sen pgffor paketini, PGF tarafından sunulmuş bir araç kullanabilir. temel sözdizimi şöyledir:

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

Özellikle, döngü bu örnek için, tamsayılar sınırlı değildir: Kabul yanıt hala en iyi seçim olup olmadığını

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