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:

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:
\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.
 \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:
\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
\lamp (#1)(#2){#3}%entspricht Originalbefehl
erklären.
Der neue Befehl soll
\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:
\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:
\befehl {Parameter1}{Parameter2}{Parameter3}
soll so aussehen:
\befehl {Parameter1,Parameter2,Parameter3}


Die Parameter werden also nur durch ein Komma getrennt.

mfg
sLy

Nach oben