如何为定理创建新的区块

如何为定理创建新的区块

我尝试创建两个不同的区块:一个用于“测验”,另一个用于“家庭作业”。以下 MWE 看起来还不错:

\documentclass{beamer}
\usetheme{Madrid}
\usepackage{thmtools}

\newcounter{qzcounter}
\newcounter{hwcounter}

\declaretheoremstyle[
title = Quiz \arabic{qzcounter} ,
]{qzstyle}


\declaretheoremstyle[
title = Homework \arabic{hwcounter} ,
]{hwstyle}

\declaretheorem[style=qzstyle]{qz}
\declaretheorem[style=hwstyle]{hw}

\begin{document}

\begin{frame}
\begin{qz}
Q 1
\end{qz}

\begin{qz}
Q 2
\end{qz}

\begin{hw}
HW 1
\end{hw}


\begin{qz}
Q 3
\end{qz}

\begin{hw}
HW 2
\end{hw}


\begin{qz}
Q 4
\end{qz}

\end{frame}

\end{document}

但是,有两件事我没能做到:

  1. 测验和作业分别自动编号
  2. 更改块类型(例如,exampleblock“家庭作业”和alertblock“测验”)

答案1

您正在使用beamerbeamer提供其自己的机制来声明新theorem环境。有关说明beameruserguide,请参阅第 12.4 节。

主要命令是:

\newtheorem{<environment name>}[<numbered as>]{<head text>}[<number within>]

在你的情况下可能是

\newtheorem{qz}[qzcounter]{Quiz}
\newtheorem{hw}[hwcounter]{Homework}

qzcounter和先前声明的一样hwcounter。默认情况下,beamer 不会在定理标题中显示数字,但\setbeamertemplate{theorems}[numbered]会这样做。

\documentclass{beamer}
\usetheme{Madrid}
%\usepackage{thmtools}

\newcounter{qzcounter}
\newcounter{hwcounter}

\newtheorem{qz}[qzcounter]{Quiz}
\newtheorem{hw}[hwcounter]{Homework}

\setbeamertemplate{theorems}[numbered]

\begin{document}

\begin{frame}
\begin{qz}
Q 1
\end{qz}

\begin{qz}
Q 2
\end{qz}

\begin{hw}
HW 1
\end{hw}


\begin{qz}
Q 3
\end{qz}

\begin{hw}
HW 2
\end{hw}


\begin{qz}
Q 4
\end{qz}

\end{frame}

\end{document}

在此处输入图片描述

这解决了 1. 让我有时间尝试解决 2。;-)

答案2

如果你绕过了编号机制,我不明白你为什么要使用任何定理包……beamer这表明如果你使用 theoremstyle X active 定义定理,它会尝试将其放入Xblock环境中,而不是普通块中,但它只会这样做example。我们似乎已经将其拆分为另一个问题现在。

\documentclass{beamer}
\usetheme{Madrid}
\usepackage{thmtools}
\setbeamertemplate{theorems}[numbered]

\declaretheorem[title=Quiz]{qz}

\theoremstyle{example}
\declaretheorem[title=Homework]{hw}

\begin{document}

\begin{frame}
\begin{qz}Q 1\end{qz}
\begin{qz}Q 2\end{qz}
\begin{hw}HW 1\end{hw}
\begin{qz}Q 3\end{qz}
\begin{hw}HW 2\end{hw}
\begin{qz}Q 4\end{qz}
\end{frame}

\end{document}

相关内容