我想使用相同的源文件创建幻灯片和讲义/手稿。为了方便起见,我在自定义 beamer 主题中定义了一些快捷方式,但在翻译文章时似乎会跳过这些快捷方式。MWE:
% beamerthemeFOO.sty
\usetheme{Berlin}
\newcommand{\foo}{bar}
% main.tex
\usetheme{FOO}
\begin{document}
\frame{\foo}
\end{document}
% main.beamer.tex
\documentclass{beamer}
\input{main.tex}
% main.article.tex
\documentclass{scrartcl}
\usepackage{beamerarticle}
\setjobnamebeamerversion{main.beamer}
\input{main.tex}
latexmk -pdf main.beamer.tex
做得很好。latexmk -pdf main.article.tex
导致:
! Undefined control sequence.
<recently read> \foo
l.3 \frame{\foo
}
更改\newcommand...
也\mode<all>{\newcommand...}
无济于事。我该如何解决?
这些宏非常方便,因为它们在插入自定义样式的目录框架时设置了多个 beamertemplates \maketocframe
。作为热修复,我手动将目录添加到我的文章中:
\mode<presentation>{\maketocframe}
\mode<article>{\tableofcontents}
不过,我还是很好奇为什么 MWE 会坏掉。如能得到任何帮助我将不胜感激。
答案1
在文章模式下,这似乎\usetheme
被忽略了。但假设您有一个名为“beamerthemeFOO.sty”的文件,其中包含以下内容
% beamerthemeFOO.sty
\usetheme{Berlin}
\newcommand{\foo}{bar}
您可以使用\usepackage{beamerthemeFOO}
(甚至 \input{beamerthemeFOO.sty}
)加载它。
因此你可以这样做:
% main.beamer.tex
\documentclass{beamer}
% [main.tex]
\usepackage{beamerthemeFOO}
\begin{document}
\frame{\foo}
\end{document}
和:
% main.article.tex
\documentclass{scrartcl}
\usepackage{beamerarticle}
\setjobnamebeamerversion{main.beamer}
% [main.tex]
\usepackage{beamerthemeFOO}
\begin{document}
\frame{\foo}
\end{document}