PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : LaTeX-Befehl zusammensetzen (multido)



Spindoctor
09-06-2009, 11:38
Hallo liebes mrunix-Forum!

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

Ungefähr so:


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

voss
09-06-2009, 12:07
Wie kann ich das bewerkstelligen?



\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

u_fischer
09-06-2009, 12:09
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.


\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

Spindoctor
09-06-2009, 12:55
cool,

vielen dank!