我正在尝试使用 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
为选项的值,使用。这假设可以承受。但重新定义为qed
qed=\qedsymbol
thmtools
\protected@edef\qedsymbol{<value of option "qed">}
\qedsymbol
\protected@edef
beamer
\qedsymbol
\def\qedsymbol{\leavevmode\hbox{\usebeamertemplate*{qed symbol}}}
其中\usebeamertemplate
脆弱因此整体无法承受。
在下面的示例中,提供了 的受保护包装器,您可以安全地\qedsymbol
在key 的值中使用。\xqedsymbol
\xqedsymbol
qed
\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}