完整代码

完整代码

(编辑以包含 MWE;请注意,当前版本比原始问题中提到的简单得多,并且基本上是可以接受的。)

现在,我创建了我的 beamer 演示文稿的文章版本,其中每张幻灯片都明确地使用 \showslide 命令包含在内:

\begin{frame}<presentation>[label=slide1]
   ...
\end{frame}
\showslide{slide1}

以及我使用该选项来避免文本中幻灯片内容重复的情况。是否可以(重新)定义环境以便自动完成此操作(最好使用自动幻灯片标签编号。)?理想情况下,我希望能够重新定义框架或定义新环境,然后只需键入

\begin{myframe}
   ...
\end{myframe}

这样就避免了每次都必须指定模式,也避免了必须指定新标签。

以下是使用 3 个文件的 MWE 示例。请注意,有时文章版本中特定幻灯片所含的解释性文字可能长达几页。

%minitest.beamer.tex

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

%minitest.article.tex

\documentclass{article} 
\usepackage{beamerarticle}
\usepackage{pgf}

\setjobnamebeamerversion{minitest.beamer}

\newcommand{\showslide}[1]{\begin{figure}
\center \fbox{\includeslide[width=12cm]{#1}}
\end{figure}}

\input{minitest.tex}

%minitest.tex

\begin{document}

\begin{frame}<presentation>[label=slide1]
\frametitle{First slide}
\begin{enumerate}
\item First item
\item Second item
\end{enumerate}
\end{frame}
\showslide{slide1}

Some text included only in the article mode.
\newpage

\begin{frame}<presentation>[label=slide2]
Second slide
\end{frame}
\showslide{slide2}

Yet more text included here for the second slide.
\end{document}

答案1

我认为你可以通过修改笔记页面模板来实现这一点。下面这个示例并不完全符合你的要求,但很接近,而且使用起来也相当简单:

在此处输入图片描述

%%% For normal presentations
%\documentclass{beamer}
%%%

%%% For handouts with lots of extra notes
\documentclass[handout]{beamer}
\usepackage{pgfpages}
\pgfpagesuselayout{2 on 1}[a4paper,border shrink=5mm] % could also use letterpaper
\setbeameroption{show notes on second screen=bottom} % Beamer manual, section 19.3
%%%

\setbeamertemplate{note page}[plain] % Beamer manual, section 19.1
\newlength{\parskipbackup}
\setlength{\parskipbackup}{\parskip}
\newlength{\parindentbackup}
\setlength{\parindentbackup}{\parindent}
\newcommand{\baselinestretchbackup}{\baselinestretch}
\usetemplatenote{\rmfamily \scriptsize%
  \setlength{\parindent}{1em} \setlength{\parskip}{1ex}%
  \renewcommand{\baselinestretch}{1}%
  \noindent \insertnote%

  \setlength{\parskip}{\parskipbackup}%
  \setlength{\parindent}{\parindentbackup}%
  \renewcommand{\baselinestretch}{\baselinestretchbackup}%
}

\title{The Title}
\author{The Author}
\usetheme{Copenhagen}

\begin{document}
\begin{frame}
Here's some content, with no notes added.
\end{frame}
\begin{frame}
Here's some content, with notes added.
\end{frame}
\note{
Here are things to remember:
\begin{enumerate}
\item Stress this first. (We probably need to ensure that this item wraps properly, too.)
\item Then this.
\end{enumerate}
Afterwards, talk about other things. Stall for as long as possible. Eventually, we'll
run out of room on this line, and will spill over onto another one.

And if we need a second paragraph, we can add one of those, too. Math like Euler's
identity
\[
1+e^{i \pi}=0
\]
isn't hard to add, but you may want to adjust the default math font family back to the
Roman default.

For some unknown reason, it appears that the last paragraph gets some weird line
spacing unless we put an extra paragraph break in the template before resetting the
paragraph-related lengths. 
}
\end{document}

改编自更改 Beamer 中注释的文本宽度自定义 LaTeX beamer 笔记页面

答案2

既然您要制作幻灯片的 PDF,那么为什么不直接将该 PDF 的页面包含在讲义中呢?

假设您有一个handout幻灯片版本,比如名为的 PDF 文件a.pdf,我会定义\showslide如下:

\newcommand\showslide{
  \clearpage % new page for each slide
  \begin{center}
    \framebox{\includegraphics[page=\arabic{slidenum},width=.95\textwidth]{a.pdf}}
    \stepcounter{slidenum}
  \end{center}
}

a.pdf每次调用命令时,都会包含一个新的页面\showslide\framebox只是添加来标记幻灯片的边框,如果需要,可以将其删除。

几个优点:

  • 仅需两个.tex文件,而不是三个
  • 无需在 Beamer 中标记每一帧
  • 每帧后的解释可以任意长

当然,缺点就是你必须handout打开 Beamer 选项来生成 PDF 文件。

完整代码

\documentclass{article}
\usepackage{graphicx} 
\usepackage{lipsum} % dummy texts

\newcounter{slidenum}
\setcounter{slidenum}{1} % set to 2 if want to exclude title page of presentation

\newcommand\showslide{
  \clearpage 
  \begin{center}
    \framebox{\includegraphics[page=\arabic{slidenum},width=.95\textwidth]{a.pdf}}
    \stepcounter{slidenum}
  \end{center}
}

\begin{document}
\showslide
\lipsum[1-5] % explanations exceeding one page

\showslide
\lipsum[2]
\end{document}

输出

在此处输入图片描述

答案3

非常好的问题!这是我的方法。它远非完美,但我不是专家。我鼓励其他人改进这种方法,因为我认为这极大地提高了 的价值beamerarticle

我们定义一个计数器baslide,并调整环境的定义frame以自动“标记和增加”。

幻灯片

对于幻灯片,我们有以下文件minitest.slides.tex

\documentclass[handout,ignorenonframetext]{beamer}
\input{minitest}

讲义

minitest.handout.tex

\documentclass[handout,ignorenonframetext]{beamer} 
\newcounter{baslide}
\setcounter{baslide}{1}

\let\oldframe
\frame                                                             
\let\oldendframe
\endframe

\def\frame{\oldframe \label{baslide\roman{baslide}}%
\addtocounter{baslide}{1}}  
\def\endframe{\oldendframe}

\input{minitest}

handout加载时请注意选项beamer。它确保我们在笔记中包含每张幻灯片的最终版本。

笔记

minitest.article.tex

\documentclass{article} 
\usepackage{beamerarticle}

\usepackage{verbatim}

\newcounter{baslide}
\setcounter{baslide}{1}

\let\oldframe\frame
\let\oldendframe\endframe

\setjobnamebeamerversion{minitest.handout}
\def\frame{\noindent%
{\par \centering%
\includeslide[width=.8\textwidth]{baslide\roman{baslide}}%
\par}
\addtocounter{baslide}{1}%
\comment}
\def\endframe{\endcomment}

这将重新定义框架环境以包含幻灯片编号baslideminitest.handout.pdf(我使用了 80% 的\textwidth,+ 居中。)然后它将计数器增加baslide1,用于下一帧。最后,它充当comment环境(因此是verbatim包)中所有包含在环境中的文本frame。这有效地从文档中删除了旧的框架输出。

Makefile

我还为这种工作流程制作了一个 Makefile:

all: slides handout article

projname = minitest
compile = pdflatex

slides: $(projname).slides.tex $(projname).tex
        $(compile) $(projname).slides.tex

handout: $(projname).handout.tex $(projname).tex
        $(compile) $(projname).handout.tex

article: $(projname).article.tex $(projname).tex $(projname).handout.pdf
        $(compile) $(projname).article.tex

clean: cleans cleanh cleana

cleans:
        rm -f $(projname).slides.{aux,fdb_latexmk,fls,log,nav,out,snm,toc}

cleanh:
        rm -f $(projname).handout.{aux,fdb_latexmk,fls,log,nav,out,snm,toc}

cleana:
        rm -f $(projname).article.{aux,fdb_latexmk,fls,log,nav,out,snm,toc}

我担心 TeX.sx 会从 Makefile 源代码中删除制表符。Make 对此非常挑剔,因此您可能需要将制表符转换为空格。


这绝对是一种黑客攻击。它可能相当脆弱,但据我所知,它在我进行的测试中完成了工作。我希望它对你有用!

答案4

我开发了一些可以有用的东西

gitlab 上带有示例截图的新链接将很快发布:https://gitlab.com/benoitldr/beamerarticle-teacher

相关内容