我想做一个包含某些任务的演示文稿,但是由于使用enumitem
with存在某些问题beamer
,所以我决定自己做,因此我有这个示例代码:
\documentclass{beamer}
\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage{ifthen}
\usetheme{CambridgeUS}
\newcounter{tasknumber}
\stepcounter{tasknumber}
\newcounter{taskletter}
\resetcounteronoverlays{tasknumber}
\resetcounteronoverlays{taskletter}
\newcommand{\task}[1][ ]
{
\ifthenelse{\equal{#1}{+}}{
\stepcounter{tasknumber}\setcounter{taskletter}{0}}{} %<- why this doesn't work?
Task \thetasknumber.
}
\newcommand{\taskl}
{
\stepcounter{taskletter}
\alph{taskletter})
}
\begin{document}
\begin{frame}
\frametitle{\task}
\taskl ...
\taskl ...
\taskl ...
\end{frame}
%\setcounter{taskletter}{0}
\begin{frame}
\frametitle{\task[+]}
\taskl ...
\taskl ...
\taskl ...
\end{frame}
\end{document}
显然,我希望获得第一个任务的第一帧(a)、b)和 c),以及第二个任务的第二帧(a)b)和 c),但我在第二帧上获得了 d)、e)和 f)。我不喜欢\setcounter{taskletter}{0}
在每一帧之后添加。
答案1
您应该将其放入\frametitle
里面\task
,而不是将其放回去。
\documentclass{beamer}
\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage{ifthen}
\usetheme{CambridgeUS}
\newcounter{tasknumber}
\stepcounter{tasknumber}
\newcounter{taskletter}
\resetcounteronoverlays{tasknumber}
\resetcounteronoverlays{taskletter}
\newcommand{\task}[1][ ]
{
\ifthenelse{\equal{#1}{+}}{
\stepcounter{tasknumber}\setcounter{taskletter}{0}}{} %<- why this doesn't work?
\frametitle{Task \thetasknumber.}
}
\newcommand{\taskl}
{
\stepcounter{taskletter}
\alph{taskletter})
}
\begin{document}
\begin{frame}
\task
\taskl ...
\taskl ...
\taskl ...
\end{frame}
%\setcounter{taskletter}{0}
\begin{frame}
\task[+]
\taskl ...
\taskl ...
\taskl ...
\end{frame}
\end{document}