PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit While Schleife und Array



christoph91
01-11-2010, 09:24
Hallo Leute.

Habe ein Problem mit Latex was ich selbst nicht gelöst bekomme, auch Google konnte nicht helfen. Folgendes Minimalbeispiel:

_________________________________


$
\begin{array}{lllllll}
\newcounter{ctra}
\setcounter{ctra}{1}
\whiledo {\value{ctra} < 5}%
{
a &a\\
\stepcounter {ctra}%
}
\end{array}
$

_________________________________

Warum kann ich dies nicht so machen... bzw warum zegit mir die Konsole einen Fehler an...

Das Problem müsste bei dem &-Zeichen in der While-Schleife liegen, weil ohne diesem kein Fehler auftaucht.

Könnt ihr mir dabei helfen?
Bedanke mich schonmal im vorab für eure Hilfe:)

Gruß,
Christoph

Schweinebacke
01-11-2010, 09:34
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:
\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.

christoph91
01-11-2010, 09:41
nicht schlecht;)...

Danke für die schnelle antwort.. war doch ziemlich überrascht:)

da muss ich mich dann erstmal einarbeiten und gucken, wie ich es an mein Problem angleiche;)

Vielen herzlichen Dank für deine schnelle Antwort:)

Xenara
01-11-2010, 09:45
Was ist mit dem Befehl "\unexpanded{...}"? Das hier scheint auch zu funktionieren (würde aber nicht behaupten, mich damit auszukennen):


\documentclass{scrreprt}
\usepackage[ngerman]{babel}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}

\usepackage{ifthen}

\newcounter{ctra}

\begin{document}

$
\begin{array}{lllllll}
\setcounter{ctra}{1}
\whiledo{\value{ctra} < 5}%
{%
a \unexpanded{&} b \\
\stepcounter {ctra}%
}
\end{array}
$

\end{document}


An die Profis: Wo ist dabei der Haken?