Mehrere Parameter innerhalb eines Parameters übergen

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: Mehrere Parameter innerhalb eines Parameters übergen

von Heinrich » Fr 6. Sep 2013, 09:05

Das erste PDF-Dokument hat mir geholfen. Dieser Code macht jetzt, was er soll (auch wenn es mir ein wenig umständlich vorkommt):
\documentclass{scrartcl}

\usepackage{pgfkeys}

\pgfkeys{/ueberschrift/.initial={}}
\pgfkeys{/breite/.initial={}}
\pgfkeys{/text/.initial={}}

\newcommand{\meinbefehl}[1]{\pgfkeys{#1}
\pgfkeysgetvalue{/ueberschrift}{\macro}
\textbf{\macro}

\pgfkeysgetvalue{/breite}{\macro}
\rule{\linewidth}{\macro}
\pgfkeysgetvalue{/text}{\macro}
\macro}

\begin{document}

\meinbefehl{/ueberschrift = {Hallo!}, /text = {Das ist ein Text}, /breite = {0.5mm}}

\end{document} 

von u_fischer » Do 5. Sep 2013, 16:40

Du musst den key definieren, indem du mindestens einen der Handlers benutzt, also z.B.

\pgfkeys{/ueberschrift/.code=#1}

von Heinrich » Do 5. Sep 2013, 16:21

Da ich ohnehin TikZ benutze, habe ich mich für das pgfkeys-Paket entschieden. Um dieses auszuprobieren, habe ich folgendes Minimalbeispiel konstruiert:
\documentclass{scrartcl}

\usepackage{pgfkeys}

\newcommand{\meinbefehl}[1]{\pgfkeys{#1}\Large{\pgfkeysvalueof{/ueberschrift}}\rule{\linewidth}{\pgfkeysvalueof{/breite}}\pgfkeysvalueof{/text}}

\begin{document}

\meinbefehl{/ueberschrift = {Hallo!}, /text = {Das ist ein Text}, /breite = 0.5mm}

\end{document}
Beim Kompilieren gibt er mir aber immer den Fehler aus: "I do not know the key '/ueberschrift' and I am going to ignore it. Perhaps you mispelled it" Habe ich etwas falsch verstanden?

von u_fischer » Do 5. Sep 2013, 15:47

Dafür gibt diverse keyval-Pakete:

http://tex.stackexchange.com/questions/ ... al-package

https://tug.org/TUGboat/tb30-1/tb94wright-keyval.pdf
https://tug.org/TUGboat/tb31-1/tb97wright-l3keys.pdf


Welches man nimmt ist im Wesentlichen Geschmackssache. Wenn man sowieso expl3 benutzt, ist l3keys sinnvoll. Wenn pgf sowieso geladen wird, ist pgfkeys auch eine gute Wahl - allerdings irritiert mich da immer, dass die Definition und die Nutzung eines keys mit dem gleichen Befehl \pgfkeys gemacht wird, zwei getrennte Befehle finde ich übersichtlicher.

Mehrere Parameter innerhalb eines Parameters übergen

von Heinrich » Do 5. Sep 2013, 15:28

Ich möchte einen eigenen Befehl definieren, der sehr viele Parameter hat. Damit ich nicht die Übersicht verliere, möchte ich meinen Befehl auf folgende Art aufrufen können:
\meinbefehl{parameter1=wert1,parameter2=wert2,parameter3=wert3, ... ,parametern=wertn}
Das bedeutet, dass ich alle Parameter in einem Parameter übergebe, ähnlich wie z.B. bei \sisetup aus dem siunitx-Paket. Gibt es dafür bereits eine fertige Möglichkeit oder muss man LaTeX so etwas selbst beibringen?

Nach oben