Parameter ohne {}-Klammern

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

Markdown is OFF

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Parameter ohne {}-Klammern

von phi » Mo 30. Nov 2009, 19:15

müsste so gehen:

Code: Alles auswählen

\newcommand*{\Lampe}[1]{\L@mpe#1}
\newcommand*{\L@mpe}{}
\def\L@mpe#1#{%
  \L@@pe{#1}%
}
\newcommand*{\L@@pe}[2]{%
  \L@@@e{#1}#2\@nil
}
\newcommand*{\L@@@e}{}
\def\L@@@e#1#2,#3\@nil{%
  \lamp(#1)(#2){#3}%
}

von flying sheep » Mo 30. Nov 2009, 10:33

versuchs mal mit dem keysystem von pgf.

von sLy » Do 12. Nov 2009, 15:53

Hi,
danke, deine Lösung funktioniert so, wie sie soll.

Meine Fragen:
1. Was bedeutet \@nil ?
2. Lässt sich das auch so machen, dass man bestimmte parameter in klammern stellt? also z.b.

Code: Alles auswählen

 \Lampe {#1{#2,#3}}
mfg
sLy

von phi » So 8. Nov 2009, 00:02

\docsvlist ist im etoolbox-Handbuch umfassend erklärt. Für dein Problem ist es jedoch nicht geeignet, da musst du wohl selber parsen:

Code: Alles auswählen

\makeatletter
\newcommand*{\Lampe}[1]{\L@mpe#1\@nil}
\newcommand*{\L@mpe}{}
\def\L@mpe#1,#2,#3\@nil{%
  \lamp(#1)(#2){#3}%
}
\makeatother

von sLy » Sa 7. Nov 2009, 13:15

Danke für deine schnelle antwort phi.
Leider hab ich deinen code nicht ganz verstanden.
Ich hab mir die docu von etoolbox durchgelesen, konnte aber nicht herausfinden, was die befehle \do und \docsvlist machen.
Mir ist auch noch nicht ganz klar, was ##1 bedeutet.
Außerdem wüsste ich gerne, wo der "Komma-Parameter" in die einzelnen zerlegt wird.

Hoffe du kannst mir das genauer erklären.

P.S.
Wenn du willst, kannst dus am beispiel von

Code: Alles auswählen

\lamp (#1)(#2){#3}%entspricht Originalbefehl
erklären.
Der neue Befehl soll

Code: Alles auswählen

\Lampe {#1,#2,#3}%entspricht neuem, eigenen Befehl

lauten, wobei die 3 Parameter in den Orginalbefehl eingesetzt werden.

mfg
sLy

von phi » Fr 6. Nov 2009, 21:06

beispielsweise mit dem etoolbox-Paket:

Code: Alles auswählen

\newcommand*{\befehl}[1]{%
  \def\do##1{%
    % hier jetzt etwas mit ##1 machen
  }%
  \docsvlist{#1}%
}

Parameter ohne {}-Klammern

von sLy » Fr 6. Nov 2009, 17:26

Hallo allezusammen,

ich würde gerne wissen, ob es (möglichst einfach) realisierbar ist, dass man die parameter eines befehls nur mit trennzeichen voneinander trennt.

Schematisches Beispiel:
Dieser Befehl:

Code: Alles auswählen

\befehl {Parameter1}{Parameter2}{Parameter3}
soll so aussehen:

Code: Alles auswählen

\befehl {Parameter1,Parameter2,Parameter3}


Die Parameter werden also nur durch ein Komma getrennt.

mfg
sLy

Nach oben