Как сделать таймер обратного отсчета в Beamer?

Как сделать таймер обратного отсчета в Beamer?

Я делаю несколько слайдов для интеграции с помощью Beamer, но у меня возникли проблемы с созданием таймера. Мне нужен таймер обратного отсчета для каждого слайда (например, 2 мин и 30 секунд) и автоматический переход к следующему слайду, когда таймер истечет (второй слайд — ответ на первый слайд). После того, как я нажал на третий слайд (следующий вопрос), таймер обратного отсчета сбросился и автоматически запустился.

Я искал примеры в Overleaf, но сам шаблон не отображался правильно в Overleaf. Я не могу найти никакой другой поддержки (все шаблоны таймеров, похоже, созданы одним и тем же парнем), поэтому я здесь прошу поддержки.

Хотя не очень-то хочется говорить это вслух, я новичок в Beamer, поэтому, пожалуйста, оставьте мне немного кода. Было бы здорово, если бы вы сделали пример по моему запросу. Кроме того, поскольку я использую Overleaf в качестве компилятора, иногда код, который работает в другом месте (например, VS Code), может не работать в Overleaf. Пожалуйста, дайте мне версию Overleaf, если есть разница. Спасибо~

решение1

Вы можете создать свой собственный небольшой обратный отсчет, используя макрос Beamer \transdurationдля автоматического переключения слайдов (просмотрите PDF-файл с помощью Adobe Reader в режиме презентации):

\documentclass{beamer}

\usepackage{pgffor}
\makeatletter
\newcommand{\countdown}[1]{
  \transduration<1-#1>{1}
  \foreach \macro in {#1,...,1}{\only<+>{\pgfmathparse{int((\macro-mod(\macro,60))/60)}\pgfmathresult:\pgfmathparse{int(mod(\macro,60))}\two@digits{\pgfmathresult}}}
}
\makeatother

\begin{document}

\begin{frame}
  Problem 
  
  \countdown{150}
  
  \only<+->{Solution}
\end{frame}

\end{document}

введите описание изображения здесь


С отдельными рамками:

\documentclass{beamer}

\usepackage{pgffor}
\makeatletter
\newcommand{\countdown}[1]{
  \begin{frame}
  \transduration<1->{1}
  \foreach \macro in {#1,...,1}{\only<+>{\pgfmathparse{int((\macro-mod(\macro,60))/60)}\pgfmathresult:\pgfmathparse{int(mod(\macro,60))}\two@digits{\pgfmathresult}}}
  \end{frame}
}
\makeatother

\begin{document}

\begin{frame}
\transduration<1->{1}
  Problem 
\end{frame}
\countdown{150}

\begin{frame}
  Solution
\end{frame}

\end{document}

Связанный контент