PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : xkeyval: listen in key?



rafael
20-11-2012, 21:09
Ich möchte mit xkeyval eine Liste mit Argumenten speichern und später z.B. an geometry (oder tikz) weiterreichen.

Als key scheint es nicht zu funktionieren (oder ich habe etwas übersehen?).
Sicher gibt es eine einfache Lösung (aus der Doku für xkeyval habe ich es allerdings nicht herausbekommen).


\documentclass{scrartcl}

\usepackage[showframe]{geometry}
\usepackage{xkeyval,blindtext}

\makeatletter
\define@cmdkey{something}{geometry}{}
\presetkeys{something}{%
geometry={top=8cm}
}{}

\newenvironment{something}[1][]{%
\setkeys{something}{#1}%
%%das klappt nicht
\newgeometry{\cmdKV@something@geometry}%
%%manuell klappt es
%\newgeometry{top=8cm}
%Test, ob der Parameter durch xkeyval definiert ist
Das ist der gewünschte Parameter: \cmdKV@something@geometry\par%
}
{\restoregeometry}
\makeatother

\begin{document}
\blindtext

\begin{something}%[geometry={top=0cm}]%
\blindtext
\end{something}

\blindtext
\end{document}

sommerfee
21-11-2012, 07:59
Solange du nicht selber die Key-Value-Parameter interpretierst, würde auch einfach sowas gehen:


\documentclass{scrartcl}

\usepackage[showframe]{geometry}
\usepackage{blindtext}

\newcommand\somethinggeometry{}

\newenvironment{something}[1][]{%
\renewcommand\somethinggeometry{#1}%
\expandafter\newgeometry\expandafter{\somethinggeo metry}%
}
{\restoregeometry}

\begin{document}
\blindtext

\begin{something}[top=0cm]%
\blindtext
\end{something}

\blindtext
\end{document}


Wenn etwas an deine gespeicherte Liste angehängt werden soll, könnte dies einfach mittels \l@addto@macro oder \g@addto@macro geschehen.