rafael
20-11-2012, 22: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}
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}