如何更改特定定理环境的块模板(LaTeX beamer)

时间:2010-04-08 13:48:44

标签: latex beamer

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

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

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

  • 为名为\th@foo的类似定理的环境重新定义foo命令。新命令应将\inserttheoremblockenv重新定义为所需的块环境。请参阅beamerbasetheorems.sty(第63行),了解example的具体操作方法。

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

1 个答案:

答案 0 :(得分: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}}

希望有所帮助