代码之家  ›  专栏  ›  技术社区  ›  Matthew Leingang

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

  •  4
  • Matthew Leingang  · 技术社区  · 14 年前

    amsthm定理环境(定理、示例、证明、解等)在波束滑道上生成块。默认情况下,示例环境使用与定理、解决方案或证明(块)不同的模板(块示例)。

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

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

    • 重新定义 \th@foo foo . 新命令应该重新定义 \inserttheoremblockenv 成为所需的块环境。看到了吗 beamerbasetheorems.sty (在第63行附近)了解如何为 example .

    • 重新定义 theorem begin theorem end 基于全局变量查找正确定理块环境的模板 \inserttheoremname (参见 beamerinnerthemedefault.sty ). 查找表可以保存在 pgfkeys 登记处。这种方法的层次会更高一些,并且不会涉及任何与 @ 然而,在他们的脑海中浮现出亚格尼。

    1 回复  |  直到 14 年前
        1
  •  2
  •   Meinersbur    14 年前

    如所见 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}}
    

    希望有帮助