newcommand mit mehreren Argumenten anpassen Thema ist als GELÖST markiert

Schriftbild, Absätze und Auflistungen einstellen


Gast

newcommand mit mehreren Argumenten anpassen

Beitrag von Gast »

ist es möglich, den command \newcommand{\Name}[Anzahl]{Definition} so zu schreiben, dass der folgende Code wie folgt funktioniert
 \test[3]{Hallo #1, #2 und #3} 

\test{Peter}{Maria}{Stefan} --> Hallo Peter, Maria und Stefan

Aber wenn man einigibt
\test{Peter}{Maria} --> Hallo Peter, Maria ausgibt

also dass das und nur gedruckt wird, wenn auch die 3. Ausgabe eingegeben wird?

Gast

Beitrag von Gast »

Mit xparse wäre das zwar möglich, es wird aber dringend davon abgeraten. Optionale Argumente gehören in eckige Klammern, damit man weiß, dass das Argument optional ist. Bei \newcommand kann man genau ein optionales Argument definieren, das dann das erste Argument zu sein hat. Mit mehrstufiger Definition kann man aber durchaus mehr optionale Argumente definieren und auch an anderer Stelle. Mit xparse ist es dagegen sehr einfach beliebig viele optionale Argumente an beliebiger Stelle zu haben.

Eine weitere Möglichkeit, die sich in deinem Fall anböte, wäre die Verarbeitung eines einzigen Arguments als Liste. Eine mit Komma separierte Liste kann man beispielsweise mit \@for aus dem LaTeX-Kern und noch schöner mit dem l3kernel verarbeiten. Das Paket etoolbox bietet ebenfalls Befehle für das List Processing.

Antworten