使用自定义主题的 beamer 讲义导致自定义新命令的控制序列未定义

使用自定义主题的 beamer 讲义导致自定义新命令的控制序列未定义

我想使用相同的源文件创建幻灯片和讲义/手稿。为了方便起见,我在自定义 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}

在此处输入图片描述

相关内容