如何解决 beamer 和 amsthm 冲突?

如何解决 beamer 和 amsthm 冲突?

我想要一种的风格Theorem 1,下一个是Theorem 1'借助Amsthm包。

下面的代码看起来没有问题,但是无法编译:

\documentclass{beamer}

\newtheorem{mthm}{Theorem}
\newtheorem{thm}{Theorem}
\renewcommand{\themthm}{\ref{thm:1}'}

\begin{document}
\begin{frame}
  \begin{thm}\label{thm:1}
  test
  \end{thm}
  \begin{mthm}
    test
  \end{mthm}
\end{frame}
\end{document} 

错误日志为:

! Missing \endcsname inserted.
<to be read again> 
                   \csname\endcsname
l.16 \end{frame}

? 
! Emergency stop.
<to be read again> 
                   \csname\endcsname
l.16 \end{frame}

我发现了该行引起的错误\renewcommand{\themthm}{\ref{thm:1}'},但如何修复它?

答案1

第一种可能性:非共享计数器

\documentclass{beamer}

\setbeamertemplate{theorems}[numbered]
\newtheorem{thm}{Theorem}
\newtheorem{mthm}{Theorem}
\renewcommand{\themthm}{\arabic{mthm}'}

\begin{document}
\begin{frame}
  \begin{thm}\label{thm:1}
  test
  \end{thm}
  \begin{thm}\label{thm:2}
  test
  \end{thm}
  \begin{mthm}
    test
  \end{mthm}
  \begin{thm}\label{thm:3}
  test
  \end{thm}
\end{frame}
\end{document} 

输出

在此处输入图片描述

第二种可能性:共享柜台

\documentclass{beamer}

\setbeamertemplate{theorems}[numbered]
\newtheorem{thm}{Theorem}
\newtheorem{mthm}[thm]{Theorem}

\usepackage{etoolbox}
\AtBeginEnvironment{mthm}{\addtocounter{thm}{-1}\renewcommand{\thethm}{\arabic{thm}'}}

\begin{document}
\begin{frame}
  \begin{thm}\label{thm:1}
  test
  \end{thm}
  \begin{thm}\label{thm:2}
  test
  \end{thm}
  \begin{mthm}
    test
  \end{mthm}
  \begin{thm}\label{thm:3}
  test
  \end{thm}
\end{frame}
\end{document} 

在此处输入图片描述


amsthm是不需要的,但加载它不会引起任何冲突。

相关内容