我尝试创建两个不同的区块:一个用于“测验”,另一个用于“家庭作业”。以下 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}
但是,有两件事我没能做到:
- 测验和作业分别自动编号
- 更改块类型(例如,
exampleblock
“家庭作业”和alertblock
“测验”)
答案1
您正在使用beamer
并beamer
提供其自己的机制来声明新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}