Das Problem ist, dass jede Zelle eines array (oder einer Tabelle) eine eigene Gruppe ist. Wenn Du nun Befehle innerhalb dieser Gruppe ausführst, diie selbst Zellen erzeugen, dann gibt das leicht Probleme, weil die Gruppen-Klammerung nicht mehr stimmt. Der übliche Tipp ist dann, die Zeilen außerhalb des array über ein Hilfsmakro aufzusammeln und dann dieses Hilfsmakro im array zu verwenden:
Code:
\documentclass{article}
\usepackage{ifthen}
\newcounter{ctra}
\newcommand*{\arrayZeilen}{}
\begin{document}
\let\arrayZeilen\empty
\setcounter{ctra}{1}
\makeatletter
\whiledo {\value{ctra}<5}{%
\protected@edef\arrayZeilen{\arrayZeilen a \protect& a\protect\\}%
\stepcounter{ctra}
}
\makeatother
$
\begin{array}{lllllll}
\arrayZeilen
\end{array}
$
\end{document}
Übrigens solltest Du auch \newcounter möglichst nicht mehrfach innerhalb einer Umgebung verwenden, sondern Dir einmal einen Zähler in der Präambel beschaffen. Es wird sonst jedes Mal ein neues Zählerregister belegt.
Lesezeichen