Beamer-Frame: Benutzeroptionen hinzufügen

Beamer-Frame: Benutzeroptionen hinzufügen

Ich möchte dem \frameBefehl zwei weitere Benutzeroptionen hinzufügen. Wenn jedoch \framebeide Parameter gleichzeitig in einer bestimmten Reihenfolge aufgerufen werden (der mit dem impliziten Wert zuerst), wird ein Fehler generiert. Hier ist einer MWE:

\documentclass{beamer}

\usepackage{etoolbox}

\makeatletter
\define@key{beamerframe}{oneparam}[true]{%
    \setbeamercolor{background canvas}{bg=black}
}
\define@key{beamerframe}{twoparam}{%
    \color{#1}
}
% Default framestyle
\pretocmd{\beamer@@@@frame}
{
    \setbeamercolor{background canvas}{bg=white}
    \setbeamertemplate{background}{}
}
{}{}
\makeatother

\begin{document}
\frame[oneparam]{
    Works
}

\frame[twoparam=red]{
    Works
}

\frame[oneparam, twoparam=green]{
    Fail
}

\frame[twoparam=green, oneparam]{
    Works
}
\end{document}

Fehlermeldung:

Paket keyval Fehler: twoparam undefiniert \frame[oneparam, twoparam=red]

Antwort1

Dies liegt daran, dass \frameein Skript einen \setkeysweiteren Skriptbefehl auslöst \setkeys, während der erste nicht beendet wird. Ein einfaches Experiment zeigt, dass verschachtelte \setkeysSkriptbefehle nicht funktionieren. Sie müssen also auf andere Schlüsselwertsysteme umsteigen, wie z. B. das ausgezeichnete.

PS. Beamer beinhaltetstandardmäßig, was bedeutet, dassist standardmäßig enthalten. Ich weiß nicht, warum Beamer (immer noch) verwendet keyval.

verwandte Informationen