Beamer框架:新增使用者選項

Beamer框架:新增使用者選項

我想在\frame命令中新增 2 個使用者選項。但是,當\frame以特定順序同時呼叫兩個參數時(首先具有隱式值的參數),它會產生錯誤。這裡有一個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}

錯誤訊息:

套件 keyval 錯誤:twoparam 未定義 \frame[oneparam,twoparam=red]

答案1

這是因為在第一個尚未終止的情況下,\frame會觸發 a\setkeys並觸發另一個。\setkeys一個簡單的實驗表明,nested\setkeys是行不通的。所以你必須切換到其他key-val系統,例如優秀的

附言。投影機包括預設情況下,這意味著預設包含在內。我不知道為什麼 beamer(仍然)使用keyval.

相關內容