4

amsthm 定理环境(定理,示例,证明,解决方案,...)在投影仪幻灯片上制作块。默认情况下,示例环境使用与定理或解决方案或证明(块)不同的模板(块示例)。

如何使解决方案使用我可以定义的不同模板,例如“块解决方案”?

编辑:感谢那些回答的人。我还没有实施解决方法,但似乎有两个想法:

  • \th@foo为名为 的类似定理的环境重新定义命令foo。新命令应重新定义\inserttheoremblockenv为所需的块环境。请参阅beamerbasetheorems.sty(在第 63 行附近)了解如何专门针对example.

  • 重新定义theorem beginandtheorem end模板以根据全局变量查找正确的定理块环境\inserttheoremname(请参阅 参考资料beamerinnerthemedefault.sty)。查找表可以保存在pgfkeys注册表中。这种方法会有点高级,并且不会涉及任何命令@;然而,YAGNI 浮现在脑海中。

4

1 回答 1

2

如中所示beamerbasetheorems.sty

\documentclass[notheorems]{beamer}

\theoremstyle{plain}
\newtheorem{theorem}{\translate{Theorem}}
\newtheorem{example}[theorem]{\translate{Example}}

% or

\theoremstyle{definition}
\newtheorem{theorem}{\translate{Theorem}}
\newtheorem{example}[theorem]{\translate{Example}}

% or

\theoremstyle{example}
\newtheorem{theorem}{\translate{Theorem}}
\newtheorem{example}[theorem]{\translate{Example}}

不管你喜欢什么风格。您还可以更改 [alert|example] 块的外观:

\setbeamercolor{block body}{fg=blue,bg=white}
\setbeamercolor{block body alerted}{fg=blue,bg=white}
\setbeamercolor{block body example}{fg=blue,bg=white}

(没有尝试过,只是查看了投影仪的来源)

编辑:仍然不确定您想要做什么,但您可以定义自己的定理样式:

\makeatletter
\def\th@something{%
  \normalfont % body font
  \def\inserttheoremblockenv{alertblock}  
}
\theoremstyle{something}
\newtheorem{warn}[theorem]{WARNING}
\makeatother

\begin{warn}[Attention please]
This is dangerous
\end{warn}

(这行得通,我测试过)

您有 3 个预定义的块,您可以使用 \defbeamertemplate 对其进行自定义。查看有关如何执行此操作的来源和文档。如果您需要更多块环境,请参阅basebeamerlocalstructure.sty

  \newenvironment<>{alertblock}[1]{%
    \begin{actionenv}#2%
      \def\insertblocktitle{#1}%
      \par%
      \mode<presentation>{%\usebeamerfont{block}%
        \setbeamercolor{local structure}{parent=alerted text}}%
      \usebeamertemplate{block alerted begin}}
    {\par%
      \usebeamertemplate{block alerted end}%
    \end{actionenv}}

希望有帮助

于 2010-04-08T14:08:48.883 回答