PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Dynamischer Kommandoname



Mithrandir
10-08-2009, 18:22
Hallo,

ich würde gerne innerhalb eines \newcommand-Befehls ein weiteres neues Kommando definieren. Dabei soll allerdings ein Argument mit in die Namenserstellung einfließen. Beispiel:



\newcommand{\test}[1][]{
...
\newcommand{\foobar#1}{irgendwas}
...
}


Dies schlägt jedoch fehl. Wie müsste ich richtig vorgehen, um dynamische Variablennamen zu erhalten?

Wie geht man mit so etwas denn generell um, also wie kann ich generell Kommando- oder Variablennamen auf dynamische Weise verwenden?

u_fischer
10-08-2009, 18:39
\newcommand\test[1]{%
\expandafter\newcommand\csname foobar#1\endcsname{....}}

(Überlege dir aber gut, ob du das innere \newcommand willst, denn dann kannst du #1 nur einmal benutzen).

Mithrandir
11-08-2009, 08:46
Danke schon mal. Aber wieso kann ich das #1 dann nur einmal benutzen?

Kann ich das neue Kommando dann mit \foobar#1 aufrufen? Denn darum gehts mir ja eigentlich.

u_fischer
11-08-2009, 09:41
\test{a} wird \foobara definieren. Noch einmal \test{a} wird einen Fehler geben, weil \foobara schon definiert ist.

Nach \test{a} kannst du \foobara verwenden (das hättest du doch einfach mal probieren können), Nach \test{123} kannst du nicht \foobar123 benutzen, aber \csname foobar123\endcsname wird gehen.

Mithrandir
11-08-2009, 11:26
Ok, danke, werde das mal ausprobieren.