비머 프레임: 사용자 옵션 추가

비머 프레임: 사용자 옵션 추가

\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

이는 첫 번째 항목이 종료되지 않은 동안 \framea를 실행 \setkeys하고 다른 항목을 실행하기 때문입니다 . \setkeys간단한 실험을 통해 중첩된 \setkeys은 작동하지 않는다는 것을 알 수 있습니다. 따라서 우수한 시스템과 같은 다른 key-val 시스템으로 전환해야 합니다..

추신. 비머에는 다음이 포함됩니다.기본적으로 이는 다음을 의미합니다.기본적으로 포함되어 있습니다. 왜Beamer(여전히)가 keyval.

관련 정보