当我使用 Beamer 包时,我经常使用代码块。
\RequirePackage{etoolbox}
\documentclass[handout, 14pt]{beamer}
\usecolortheme{seahorse}
\begin{document}
# Start of the block
\def\name{OOP Features}
\section[OOP]{\name}
\begin{frame}[fragile]{}%
\begin{center}%
\usebeamerfont*{frametitle}%
\usebeamercolor[fg]{frametitle}%
\name
\end{center}%
\end{frame}
\input{a}
# end of a block
\end{document}
我需要用单个命令“buildchapter”替换该块,所以我想到了以下宏。
\newcommand\buildchapter[3]{
\section[#1]{#2}
\begin{frame}[fragile]{}%
\begin{center}%
\usebeamerfont*{frametitle}%
\usebeamercolor[fg]{frametitle}%
#2
\end{center}%
\end{frame}
\input{#3}
}
...
\buildchapter{h}{hello}{a.tex}
但是,我遇到了错误,包括“Extra },或者忘记了 \endgroup”。我尝试使用 \def,但结果是一样的。
可能出了什么问题?
答案1
脆弱框架选项只应在真正必要时使用。它严重限制了框架。
就您而言,脆弱框架选项不是必需的。脆弱内容不能作为宏的参数,因此任何通过宏到达框架的内容都不是脆弱的,因此不需要脆弱框架。
\documentclass[handout, 14pt]{beamer}
\usecolortheme{seahorse}
\begin{filecontents*}[overwrite]{a.tex}
\begin{frame}
test
\end{frame}
\end{filecontents*}
\newcommand\buildchapter[3]{
\section[#1]{#2}
\begin{frame}%
\begin{center}%
\usebeamerfont*{frametitle}%
\usebeamercolor[fg]{frametitle}%
\insertsection
\end{center}%
\end{frame}
\input{#3}
}
\begin{document}
\buildchapter{h}{hello}{a.tex}
\end{document}