Beamer:重新定义框架的问题

Beamer:重新定义框架的问题

我在使用 beamer 时遇到了一些问题:我从一个简单的例子开始:

\documentclass{beamer}
\usepackage[utf8]{inputenc}
\usepackage{default}
\begin{document}
\begin{frame}
    first frame
\end{frame}
\end{document}

现在我想添加一些“逻辑”,所以我想定义一些可以帮助我控制帧开始的东西:

\documentclass{beamer}
\usepackage[utf8]{inputenc}
\usepackage{default}
\newcommand{\myframe}{\begin{frame}}
\newcommand{\myend}{\end{frame}}
\begin{document}
\myframe
    first frame
\myend
\myframe
    second frame
\myend
\end{document}

并在编译时出现错误:

Runaway argument?
\let \AtEndDocument \@firstofone \@enddocumenthook \@checkend {docume\ETC.
! File ended while scanning use of \beamer@collect@@body

你知道我该如何重新定义投影仪框架的开头吗?

添加了 if/then/else 的简单示例:

\documentclass{beamer}
\usepackage[utf8]{inputenc}
\usepackage{default}
\usepackage{ifthen}
\newcommand{\myframe}{\begin{frame}}
\newcommand{\myend}{\end{frame}}
\newboolean{boolvar}
\setboolean{boolvar}{false}
\begin{document}
\begin{frame}
        \ifthenelse{\boolean{boolvar}}{truecase}{falsecase}
\end{frame}
\end{document}

我想让幻灯片具有不同的框架标题和/或副标题,问题之一是文章模式下重复的框架标题。我不能使用 allowframebreaks,因为这会破坏包括 /pause 在内的叠加层。所以,我猜最简单的解决方案是在演示模式下为第二/第三张幻灯片添加新框架 (/end{frame}/begin{frame}oldframetitle}{newsubtitle}),在文章模式下忽略它,或者只添加换行符,或者将新的副标题作为段落标题。

因此我们的想法是:

\documentclass{beamer}
\newcommand{\nextslideyesno}{\ifthenelse{\boolean{boolvar}}{\end{frame}\begin{frame}}{falsecase}}
\usepackage[utf8]{inputenc}
\usepackage{default}
\newcommand{\myframe}{\begin{frame}}
\newcommand{\myend}{\end{frame}}
\begin{document}
\begin{frame}
    first text
\nextslideyesno{}
    second text
\end{frame}
\end{document}

但它也会返回很多错误。

答案1

无需重新定义frame;如果我正确理解了您的问题,您可以使用覆盖和\mode

这是一个简单的示例文档:

\documentclass{beamer}
%\documentclass{article}
%\usepackage{beamerarticle}

\begin{document}

\begin{frame}
\frametitle{%
  \mode<presentation>{%
    \only<1>{Title A}%
    \only<2>{Title B}%
    \only<3>{Title C}%
  }%
  \mode<article>{\noindent Title for article}%
}
\framesubtitle{%
  \mode<presentation>{%
    \only<1>{Subtitle A}%
    \only<2>{Subtitle B}%
    \only<3>{Subtitle C}%
  }%
  \mode<article>{\noindent Subtitle for article}%
}
Here is the contents of the frame with a list:
\begin{enumerate}[<+->]
\item First.
\item Second.
\item Third.
\end{enumerate}
\end{frame}

\end{document}

处理上述代码,照原样您将获得一个包含三张幻灯片的演示文稿;每张幻灯片都有自己的标题和副标题,并使用叠加层分步显示列表:

在此处输入图片描述

现在使用文章模式;即更改为

%\documentclass{beamer}
\documentclass{article}
\usepackage{beamerarticle}

您将获得以下结果(请注意,只有一个标题和副标题):

在此处输入图片描述

相关内容