在 beamer 中,如何编号定理但不编号定义?

在 beamer 中,如何编号定理但不编号定义?

我希望我的定理有编号,但定义没有。我找到的选项可以通用地打开或关闭编号。我尝试自定义不同的定理环境,但没有效果。

这个问题已针对 article 文档类进行了解决,但我在 beamer 中找不到解决方案。针对为不同的定理环境创建单独序列的问题,发布了一个解决方案,但没有针对在一个环境中完全关闭数字而在另一个环境中不关闭数字的解决方案。

考虑一下:

\documentclass[t,handout]{beamer}
\mode<presentation>
\usepackage[english]{babel}
%\setbeamertemplate{theorems}[ams style] 

\begin{document}
\frame{
    \begin{theorem}
    \end{theorem}
    \begin{definition}
    \end{definition}
    }
\end{document}

请注意,定理或定义上没有编号。取消注释第 4 行会在两者上放置编号(还会将术语加粗,我可以保留或保留)。我该如何执行以下操作之一:

  1. 激活第四行,然后修改其设置,使定义不编号,
  2. 在第四行停用的情况下,分别定义环境,以便定理被编号,但不定义,
  3. 使用不同的包来实现上述任一功能?

令我特别惊讶的是,如果我省去模板,并像在文章中那样做,就会是这样的:

\newtheorem*{definition}{Definition}
\newtheorem{theorem}{Theorem}

我收到一条错误消息,提示这些环境已定义。但如果我进一步精简文件,它甚至不会生成文档,那么定义环境是什么?为什么我不能自定义它?

答案1

正如@Andrew所建议的,这可以通过关闭编号并自定义环境来实现,如他发布的链接中所示。但这里所需效果的具体解决方案是:

\documentclass[notheorems]{beamer}
\usepackage[english]{babel}
\setbeamertemplate{theorem}[ams style]
\setbeamertemplate{theorems}[numbered]

\makeatletter
    \ifbeamer@countsect
      \newtheorem{theorem}{\translate{Theorem}}[section]
    \else
      \newtheorem{theorem}{\translate{Theorem}}
    \fi
    \theoremstyle{definition}
    \newtheorem*{definition}{\translate{Definition}}

    \newenvironment{Theorem}{\begin{theorem}}{\end{theorem}}
    \newenvironment{Definition}{\begin{definition}}{\end{definition}}
\makeatother

\begin{document}
    \begin{theorem}\end{theorem}
    \begin{definition}\end{definition}
\end{document}

这里的关键部分是 \newtheorem 和 {definition} 之间的 *。

相关内容