在阅读了第 12.4 节定理环境后,beameruserguide
我了解到,除示例外,所有定理类环境(定理、引理、推论等)都使用相同的颜色,beamertemplate
这意味着相同的块颜色。这是真的吗?
如果答案是肯定的,是否有任何投影仪(不使用tcolorbox
或mdframed
定理)方式来为每个环境定制颜色?
如果答案是否定的,您能给我举个例子吗?
接下来是一小段代码:
\documentclass{beamer}
\usetheme{Warsaw}
\begin{document}
\begin{frame}
\begin{theorem}[A]
Theorem body
\end{theorem}
\begin{example}[B]
Example body
\end{example}
\begin{proof}[C]
Proof body
\end{proof}
\begin{lemma}[D]
Lemma body
\end{lemma}
\end{frame}
\end{document}
答案1
从小处着手:正如您在文档中发现的那样,插入的实际环境取决于 的值\inserttheoremblockenv
。不幸的是,文档只做了文档中所说的事情:
如果排版了具有定理样式示例的定理,它将扩展为 exampleblock
而不是他们可能暗示的内容(即类似于“如果风格是X,并且环境Xblock
存在,我将使用Xblock
,否则block
)。这样做的方式很简单(beamerbasetheorems.sty):
\def\th@example{%
\normalfont % body font
\def\inserttheoremblockenv{exampleblock}
}
\th@example
是存储定理样式的外观和布局的宏example
。因此,对于不同的样式,您可以更改环境。
定义您想要的颜色组合的环境似乎最好以蛮力的方式完成,即通过调整定义,例如exampleblock
(beamerbaselocalstructure.tex
):
\newenvironment<>{exampleblock}[1]{%
\begin{actionenv}#2%
\def\insertblocktitle{#1}%
\par%
\mode<presentation>{%\usebeamerfont{block}%
\setbeamercolor{local structure}{parent=example text}}%
\usebeamertemplate{block example begin}}
{\par%
\usebeamertemplate{block example end}%
\end{actionenv}}
不过,乍一想,这对预定义的定理名称没有帮助,因此您可能需要提供类选项notheorems
来禁用预定义theorem
等,并自行定义它们。