我一直在尝试使用一个 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 编译文档时,它会正常工作。存在一些混乱的定义和重新定义,有点难以跟踪。对我有用的一种方法是复制出\title
from的(重新)定义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}
解决了这个问题。