![Quadro Beamer: adicione opções de usuário](https://rvso.com/image/298792/Quadro%20Beamer%3A%20adicione%20op%C3%A7%C3%B5es%20de%20usu%C3%A1rio.png)
Gostaria de adicionar mais 2 opções de usuário ao \frame
comando. Porém, ao chamar \frame
com 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 \frame
dispara um \setkeys
e dispara outro \setkeys
enquanto o primeiro não é finalizado. Um experimento simples mostra que aninhados \setkeys
não funcionarão. Então você tem que mudar para outros sistemas de valores-chave, como o excelenteteclas pgf.
PS. Beamer incluipgfpor padrão, o que significa queteclas pgfestá incluído por padrão. Não sei por que o beamer (ainda) usa o keyval
.