Anzeige:
Ergebnis 1 bis 2 von 2

Thema: xkeyval: listen in key?

  1. #1
    Registrierter Benutzer
    Registriert seit
    26.07.2008
    Ort
    Dresden
    Beiträge
    136

    xkeyval: listen in key?

    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).

    Code:
    \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}

  2. #2
    Registrierter Benutzer Avatar von sommerfee
    Registriert seit
    02.07.2006
    Beiträge
    1.603
    Solange du nicht selber die Key-Value-Parameter interpretierst, würde auch einfach sowas gehen:
    Code:
    \documentclass{scrartcl}
    
    \usepackage[showframe]{geometry}
    \usepackage{blindtext}
    
    \newcommand\somethinggeometry{}
    
    \newenvironment{something}[1][]{%
    \renewcommand\somethinggeometry{#1}%
    \expandafter\newgeometry\expandafter{\somethinggeometry}%
    }
    {\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.

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •