Beamer 中的 Thmtools 和 \declatheoremstyle

Beamer 中的 Thmtools 和 \declatheoremstyle

我正在尝试使用 thmtools 定义自定义定理环境。它在例如中按预期工作,\documentclass{article}但在beamer我收到错误

“\ifbeamercolorempty 的使用与其定义不符”

编译结束。以下是我的尝试:

\documentclass[10pt,xcolor={dvipsnames},notheorems]{beamer}

\usepackage{amsthm,thmtools}
\colorlet{theoremblue}{blue!4}
    \declaretheoremstyle[
    spaceabove=6pt, 
    spacebelow=6pt,
    headfont=\normalfont\bfseries,
    notefont=\mdseries, notebraces={(}{)},
    bodyfont=\itshape,
    postheadspace=1em,
    qed=\qedsymbol,
    shaded= {rulecolor=blue,
            rulewidth=2pt, 
            bgcolor=theoremblue
            },
]{myplain}

\declaretheorem[name=Theorem, style=myplain]{theorem}

\begin{document}
\begin{frame}{Test}
\begin{theorem}[test]
Let $x$ be \ldots
\end{theorem}
\end{frame}
\end{document}

答案1

在允许使用的同时,将内部重新定义\qedsymbol为选项的值,使用。这假设可以承受。但重新定义为qedqed=\qedsymbolthmtools\protected@edef\qedsymbol{<value of option "qed">}\qedsymbol\protected@edefbeamer\qedsymbol

\def\qedsymbol{\leavevmode\hbox{\usebeamertemplate*{qed symbol}}}

其中\usebeamertemplate脆弱因此整体无法承受。

在下面的示例中,提供了 的受保护包装器,您可以安全地\qedsymbol在key 的值中使用。\xqedsymbol\xqedsymbolqed

\documentclass[10pt,xcolor={dvipsnames},notheorems]{beamer}
\usepackage{amsthm,thmtools}
\colorlet{theoremblue}{blue!4}

\makeatletter
% a robust wrapper of \qedsymbol
\protected\edef\xqedsymbol{\unexpanded\expandafter{\qedsymbol}}
\makeatother

\declaretheoremstyle[
    spaceabove=6pt, 
    spacebelow=6pt,
    headfont=\normalfont\bfseries,
    notefont=\mdseries, notebraces={(}{)},
    bodyfont=\itshape,
    postheadspace=1em,
    qed=\xqedsymbol,
    shaded= {rulecolor=blue,
            rulewidth=2pt, 
            bgcolor=theoremblue
            },
]{myplain}

\declaretheorem[name=Theorem, style=myplain]{theorem}

\begin{document}
\begin{frame}{Test}
  \begin{theorem}[test]
    Let $x$ be \ldots
  \end{theorem}
\end{frame}
\end{document}

在此处输入图片描述

相关内容