如何在 beamer 中为不同的定理类环境定义不同的颜色

如何在 beamer 中为不同的定理类环境定义不同的颜色

在阅读了第 12.4 节定理环境后,beameruserguide我了解到,除示例外,所有定理类环境(定理、引理、推论等)都使用相同的颜色,beamertemplate这意味着相同的块颜色。这是真的吗?

如果答案是肯定的,是否有任何投影仪(不使用tcolorboxmdframed定理)方式来为每个环境定制颜色?

如果答案是否定的,您能给我举个例子吗?

接下来是一小段代码:

\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。因此,对于不同的样式,您可以更改环境。

定义您想要的颜色组合的环境似乎最好以蛮力的方式完成,即通过调整定义,例如exampleblockbeamerbaselocalstructure.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等,并自行定义它们。

相关内容