我希望beamer
幻灯片的标题和副标题分别为“当前”部分和小节 - 就像下面的例子一样:
\documentclass{beamer}
\newenvironment{fr}{
\begin{frame}{\insertsectionhead}{\insertsubsectionhead}
}{
\end{frame}
}
\begin{document}
\section{A}
\subsection{a}
\begin{fr}
bla
\end{fr}
\subsection{b}
\begin{fr}
blo
\end{fr}
\end{document}
然而,当我改变线路时
\begin{frame}{\insertsectionhead}{\insertsubsectionhead}
到
\begin{frame}[fragile]{\insertsectionhead}{\insertsubsectionhead}
(添加[fragile]
),我得到错误“ File ended while scanning use of \next
”。我发现解决方案通常是不缩进\end{frame}
,但在我的处境下我无法控制这一点。
答案1
这不是缩进的问题(以前是,但代码改变了,所以现在它不重要了)。问题是,当你启动一个fragile
框架时,beamer
会查找确切的字符串\
e
n
d
{
f
r
a
m
e
}
,但文件中永远找不到该字符串,所以你会得到一个File ended
错误。即使之后的评论\end{frame}
是不允许的。
但是,只要您告诉它名称是什么,就beamer
可以定义具有不同名称的 verbatim ( ) 环境。为此,您可以使用以下选项:fragile
environment
\documentclass{beamer}
\newenvironment{fr}[1][]{%
\begin{frame}[environment=fr,#1]{\insertsectionhead}{\insertsubsectionhead}
}{%
\end{frame}
}
\begin{document}
\section{A}
\subsection{a}
\begin{fr}
bla
\end{fr}
\subsection{b}
\begin{fr}[fragile]
\begin{verbatim}
\blo\
\end{verbatim}
\end{fr}
\end{document}
答案2
在另一个环境中隐藏框架通常不是一个好主意。一个大问题是,这会诱使用户fragile
默认使用框架,这可能会产生各种令人惊讶的副作用。
相反,我建议自动显示章节和小节标题:
\documentclass{beamer}
\addtobeamertemplate{frametitle}{%
\let\insertframetitle\insertsectionhead
\let\insertframesubtitle\insertsubsectionhead
}{}
\makeatletter
\CheckCommand*\beamer@checkframetitle{\@ifnextchar\bgroup\beamer@inlineframetitle{}}
\renewcommand*\beamer@checkframetitle{\global\let\beamer@frametitle\relax\@ifnextchar\bgroup\beamer@inlineframetitle{}}
\makeatother
\begin{document}
\section{A}
\subsection{a}
\begin{frame}
bla
\end{frame}
\subsection{b}
\begin{frame}
blo
\end{frame}
\section{B}
\subsection{c}
\begin{frame}
bla
\end{frame}
\end{document}