Quadro Beamer: adicione opções de usuário

Quadro Beamer: adicione opções de usuário

Gostaria de adicionar mais 2 opções de usuário ao \framecomando. Porém, ao chamar \framecom os dois parâmetros ao mesmo tempo em uma ordem específica (aquele com valor implícito primeiro), gera um erro. Aqui está um 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}

Mensagem de erro:

Erro de keyval do pacote: twoparam indefinido \frame[oneparam, twoparam=red]

Responder1

Isso ocorre porque \framedispara um \setkeyse dispara outro \setkeysenquanto o primeiro não é finalizado. Um experimento simples mostra que aninhados \setkeysnão funcionarão. Então você tem que mudar para outros sistemas de valores-chave, como o excelente.

PS. Beamer incluipor padrão, o que significa queestá incluído por padrão. Não sei por que o beamer (ainda) usa o keyval.

informação relacionada