\meinbefehl{parameter1=wert1,parameter2=wert2,parameter3=wert3, ... ,parametern=wertn}
Mehrere Parameter innerhalb eines Parameters übergen
Mehrere Parameter innerhalb eines Parameters übergen
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:
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?
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.
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.
Ulrike Fischer
www.troubleshooting-tex.de
www.troubleshooting-tex.de
Da ich ohnehin TikZ benutze, habe ich mich für das pgfkeys-Paket entschieden. Um dieses auszuprobieren, habe ich folgendes Minimalbeispiel konstruiert:
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?
\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}
Du musst den key definieren, indem du mindestens einen der Handlers benutzt, also z.B.
\pgfkeys{/ueberschrift/.code=#1}
\pgfkeys{/ueberschrift/.code=#1}
Ulrike Fischer
www.troubleshooting-tex.de
www.troubleshooting-tex.de
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}