beamerarticle脚本中的mdframed定理

beamerarticle脚本中的mdframed定理

我需要按照框架定理环境的制作方式来使用它像书中一样制作一个示例和阴影框
使用 的实现\usepackage[framemethod=TikZ]{mdframed}工作正常。但现在,我必须在用\documentclass{article}和编写的现成脚本中实现这一点\usepackage{beamerarticle}。使用
德语 等语言的预定义定理环境。我已经尝试使用和插入那些装箱命令,Satz例如Beispiel\setbeamertemplate{theorem begin}{...}\setbeamertemplate{theorem end}{...}

\setbeamertemplate{theorem begin}{\begin{mdframed}%
[linecolor=yellow,outerlinewidth=3pt,backgroundcolor=red!10,roundcorner=15pt,%
skipabove=\baselineskip,skipbelow=\baselineskip]}%
\setbeamertemplate{theorem end}{\end{mdframed}}

但它不起作用。
还有其他方法吗?因为我不想重命名所有使用过的环境并创建新的环境?

我找到了解决方案

\usepackage{etoolbox}
\BeforeBeginEnvironment{Satz}{\begin{mdframed}[linecolor=yellow,outerlinewidth=3pt,backgroundcolor=red!10,roundcorner=15pt,%
skipabove=\baselineskip,skipbelow=\baselineskip]\vspace{-0.5cm}}
\AfterEndEnvironment{Satz}{\end{mdframed}}

但仍然欢迎其他人。

答案1

的解决方案\setbeamertemplate{begin theorem}不起作用,因为它未定义。beamerbasetheorems.sty加载的文件beamerarticle提供了定理环境的定义。

\mode
<article>
{
  \ifbeamer@ams
    \RequirePackage{amsmath}
    \RequirePackage{amsthm}

    \renewenvironment<>{proof}[1][\proofname]
    {\begin{actionenv}#2\begin{originalproof}[{#1}]}{\end{originalproof}\end{actionenv}}

    % Make new theorem overlay-specification-aware
    \let\beamer@origthm=\@thm
    \def\@thm#1#2#3{\def\beamer@store{{#1}{#2}{#3}}\beamer@readspec}
    \def\beamer@storeaction{\begin{actionenv}}
    \newcommand<>\beamer@readspec[1][]{\def\beamer@storeaction{\begin{actionenv}#2}%
      \expandafter\beamer@origthm\beamer@store[{#1}]}

    \let\beamer@origbegintheorem=\@begintheorem
    \def\@begintheorem{\beamer@storeaction\beamer@origbegintheorem}

    \let\beamer@origendtheorem=\@endtheorem
    \def\@endtheorem{\beamer@origendtheorem\end{actionenv}}
  \fi

  \def\th@example{\th@remark}

  \newcommand{\ExampleInline}[1]{\translate{Example}: \ignorespaces#1}

  % Compatiblity:
  \newcommand{\BeispielInline}[1]{Beispiel: \ignorespaces#1}
}

你看,没有定义。环境lemma等也在引用的文件中定义。

根据这些信息,我更喜欢使用etoolbox(由 加载mdframed)的解决方案。要修改每个定理环境,您还可以使用\BeforeBeginEnvironment{\@begintheorem}{...}

为了验证我的答案,你可以测试这个简单的例子:

\documentclass[ngerman]{book}
\usepackage{babel}
\usepackage{beamerarticle}
\setbeamertemplate{theorem begin}{\undefined \fooo}
\begin{document}
Text
\begin{theorem}
foo bar
\end{theorem}
Text
\begin{lemma}
foo bar
\end{lemma}
\end{document}

该设置\setbeamertemplate{theorem begin}{\undefined \fooo}没有影响。

相关内容