Anzeige:
Ergebnis 1 bis 4 von 4

Thema: LaTeX-Befehl zusammensetzen (multido)

  1. #1
    Registrierter Benutzer
    Registriert seit
    09.06.2007
    Beiträge
    338

    LaTeX-Befehl zusammensetzen (multido)

    Hallo liebes mrunix-Forum!

    Ich würd gerne in einer multido-Schleife je nach Durchlauf einen anderen Befehl weitergeben.

    Ungefähr so:

    Code:
    \documentclass{scrartcl}
    \usepackage{multido}
    
    % Counter
    \newcounter{befehlnummer}
    \setcounter{befehlnummer}{0}
    
    % Befehle
    \def \befehl1 {Apfel}
    \def \befehl2 {Birne}
    \def \befehl3 {Banane}
    
    \begin{document}
    
    \multido{}{3}{%
        \stepcounter{befehlnummer}
        \def \currentbefehl {\textbackslash{}befehl\thebefehlnummer}
        \currentbefehl
    }
    \end{document}
    Da kommt dann
    \befehl1 \befehl2 \befehl3
    raus.

    Wie unschwer zu erraten ist, hätte ich aber gerne
    Apfel Birne Banane
    Wie kann ich das bewerkstelligen?

    Danke schonmal!

  2. #2
    Registrierter Benutzer Avatar von voss
    Registriert seit
    10.04.2005
    Beiträge
    5.045
    Zitat Zitat von Spindoctor Beitrag anzeigen
    Wie kann ich das bewerkstelligen?
    Code:
    \documentclass{scrartcl}
    \usepackage{multido}
    \expandafter\def\csname befehl1\endcsname{Apfel}
    \expandafter\def\csname befehl2\endcsname{Birne}
    \expandafter\def\csname befehl3\endcsname{Banane}
    
    \begin{document}
    
    \multido{\iA=1+1}{3}{%
      \edef\currentbefehl{\csname befehl\iA\endcsname}
      \currentbefehl
    }
    \end{document}
    Herbert

  3. #3
    Registrierter Benutzer
    Registriert seit
    19.05.2009
    Beiträge
    4.045
    Mit \def kannst du so keine Befehle mit Nummern im Namen erzeugen. Da musst du \@namedef nehmen. Benutzen kannst du die Befehle dann mit \csname \endcsname oder \@nameuse.

    Code:
    \documentclass{scrartcl}
    \usepackage{multido}
    
    % Counter
    \newcounter{befehlnummer}
    \setcounter{befehlnummer}{0}
    
    % Befehle
    \makeatletter
    \@namedef{befehl1}{Apfel}
    \@namedef{befehl2}{Birne}
    \@namedef{befehl3}{Banane}
    \makeatother
    \begin{document}
    
    \multido{}{3}{%
        \stepcounter{befehlnummer}
        \def \currentbefehl {\csname befehl\thebefehlnummer\endcsname}
    currentbefehl:    \currentbefehl\\
    csname: \csname befehl\thebefehlnummer\endcsname\\
    }
    \end{document}
    Das def\currentbefehl ist dabei etwas überflüssig. Direkt
    \csname befehl\thebefehlnummer\endcsname ergibt das gleiche Ergebnis.

    Ulrike Fischer

  4. #4
    Registrierter Benutzer
    Registriert seit
    09.06.2007
    Beiträge
    338
    cool,

    vielen dank!

Stichworte

Lesezeichen

Berechtigungen

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