Beamer 幻灯片和 tufte 讲义

Beamer 幻灯片和 tufte 讲义

我一直在尝试使用一个 main.tex 文件设置幻灯片和讲义,该文件\input{}分为“幻灯片”和“讲义”文件(如 beamer 用户指南 21.2.1 中所述,或者这个例子。此设置允许使用不同的文档类(即报告、文章 - 我可以制作)排版讲义。

然而,我一直在尝试使用 tufte-handout 类,但编译却停止了,没有给出任何特定的错误消息。

我注意到编译在 上停止了,amsthm所以我使用了[noamsthm]{beamerarticle}class 选项。然后编译在 上停止了,beamerbasetheorems.sty所以我使用了[notheorems]{beamerarticle}class 选项,但它又在 上停止了amsthm

然后我尝试在类选项中给出两者(即[notheorems,noamsthm]{beamerarticle}),但这似乎忽略了[notheorems]{beamerarticle}选项,导致出现与仅给出选项时相同的错误消息[noamsthm]{beamerarticle}

所以,我的问题是,是否有人成功使用此设置使用 tufte-handout 类制作投影仪幻灯片和讲义?

根据要求提供的最少示例:

文件1(幻灯片.tex):

\documentclass[ignorenonframetext]{beamer}  
\input{main.tex} 

文件2(讲义.tex):

\documentclass{article} % This class works  
%\documentclass{tufte-handout} % Whish to use this documentclass  
\usepackage{beamerarticle}  
\input{main.tex}

文件3(main.tex):

\usetheme{Singapore}  
\title{Title here}  
\author{Some author}  
\date{}  
\begin{document}  
\maketitle  
\begin{frame}  
\titlepage  
\end{frame}  
\section{One section}  
\begin{frame}  
\frametitle{One frame} 
\end{frame}  
Text out of frame. Should print on handout only.  
\end{document}

答案1

问题似乎与命令有关\title。当我使用 then 编译文档时\title,它会挂起,而当我不使用 then 编译文档时,它会正常工作。存在一些混乱的定义和重新定义,有点难以跟踪。对我有用的一种方法是复制出\titlefrom的(重新)定义tufte-common.def并将其粘贴在对 的调用之后beamerarticle。因此,我的主文件如下所示:

\documentclass{tufte-handout}
\usepackage{beamerarticle}

\makeatletter
\renewcommand{\title}[2][]{%
  \gdef\@title{#2}%
  \begingroup%
    % TODO store contents of \thanks command
    \renewcommand{\thanks}[1]{}% swallow \thanks contents
    \protected@xdef\thanklesstitle{#2}%
  \endgroup%
  \ifthenelse{\isempty{#1}}%
    {\renewcommand{\plaintitle}{\thanklesstitle}}% use thankless title
    {\renewcommand{\plaintitle}{#1}}% use provided plain-text title
  \@ifpackageloaded{hyperref}{\hypersetup{pdftitle={\plaintitle}}}{}% set the PDF metadata title
}
\makeatother

\input{tufteMain}

当然,这意味着标题不会被“光束化”,但由于这仅适用于文章版本,所以这并不重要。

\title我尝试在调用之前存储旧的定义beamerarticle,然后重置它,但没有效果:

\documentclass{tufte-handout}
\let\tufteTitle=\title
\usepackage{beamerarticle}
\let\title=\tufteTitle

\input{tufteMain}

仍然挂着。

一般来说,TeX 在进入无限循环时就会这样挂起,所以我的猜测是定义和重新定义意味着\title它最终会一次又一次地调用自身。此外,当 TeX 进入无限循环时,日志文件会包含它最后执行的操作,因此删除日志文件中出现的内容并不是最佳策略(你可能发生在创建循环的任何东西上,但没有保证。

答案2

答案由安德鲁·史黛西包括将样式定义从 tufte-common.def 复制到 main.tex 文件。

以下操作正常:

\documentclass{tufte-handout}  
\usepackage{beamerarticle}  

\makeatletter  
\renewcommand{\title}[2][]{%  
  \gdef\@title{#2}%  
  \begingroup%  
    % TODO store contents of \thanks command  
    \renewcommand{\thanks}[1]{}% swallow \thanks contents  
    \protected@xdef\thanklesstitle{#2}%  
  \endgroup%  
  \ifthenelse{\isempty{#1}}%  
    {\renewcommand{\plaintitle}{\thanklesstitle}}% use thankless title  
    {\renewcommand{\plaintitle}{#1}}% use provided plain-text title  
  \@ifpackageloaded{hyperref}{\hypersetup{pdftitle={\plaintitle}}}{}% set the PDF metadata title  
}  
\makeatother  

\makeatletter  
\renewcommand*{\author}[2][]{%  
  \gdef\@author{#2}%  
  \begingroup%  
    % TODO store contents of \thanks command  
    \renewcommand{\thanks}[1]{}% swallow \thanks contents  
    \protected@xdef\thanklessauthor{#2}%  
  \endgroup%  
  \ifthenelse{\isempty{#1}}  
    {\renewcommand{\plainauthor}{\thanklessauthor}}% use thankless author  
    {\renewcommand{\plainauthor}{#1}}% use provided plain-text author  
  \@ifpackageloaded{hyperref}{\hypersetup{pdfauthor={\plainauthor}}}{}% set the PDF   metadata author  
}  
\makeatother  
\input{main.tex}

答案3

这是一个老问题,但我最近遇到了这个问题。在我的例子中,将标题、作者和日期宏 \usepackage{beamerarticle}解决了这个问题。

相关内容