Anzeige:
Ergebnis 1 bis 4 von 4

Thema: Problem mit While Schleife und Array

  1. #1
    Registrierter Benutzer
    Registriert seit
    31.10.2010
    Beiträge
    13

    Problem mit While Schleife und Array

    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

  2. #2
    Registrierter Benutzer
    Registriert seit
    31.03.2010
    Beiträge
    1.039
    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.

  3. #3
    Registrierter Benutzer
    Registriert seit
    31.10.2010
    Beiträge
    13
    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

  4. #4
    Registrierter Benutzer
    Registriert seit
    11.09.2005
    Beiträge
    1.712
    Was ist mit dem Befehl "\unexpanded{...}"? Das hier scheint auch zu funktionieren (würde aber nicht behaupten, mich damit auszukennen):
    Code:
    \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?

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •