如果一个框架中所需的垂直空间不够,那么如何将类似定理的环境(自动)分成多个框架?
在我的文件序言中
\theoremstyle{definition}
\newtheorem{exercise}{Exercício}
文档中给定的框架有一个exercise
不适合单个框架的环境。所以我想将它分成多个框架。
有什么线索吗?
答案1
通常你可以使用beamer
allowframebreaks
如果一个框架的内容不适合一个框架,则可以自动拆分该框架:
\begin{frame}[allowframebreaks]
...
\end{frame}
遗憾的是,这不适用于定理类环境,原因是beamercolorbox
默认情况下这些是使用 a 排版的。 a 的内容beamercolorbox
集中在一个无法跨框架拆分的单个框中。
目前我只看到两种克服这一问题的可能性:
使定理环境不使用
beamercolorbox
内容。这可以通过重新定义 beamer 模板theorem begin
和来实现theorem end
:\documentclass{beamer} \theoremstyle{definition} \newtheorem{exercise}{Exercício} \setbeamertemplate{theorem begin} {% \par\vskip\medskipamount% \begin{beamercolorbox}[colsep*=.75ex]{block title} \usebeamerfont*{block title}% \inserttheoremname \ifx\inserttheoremaddition\empty\else\ (\inserttheoremaddition)\fi% \end{beamercolorbox}% {\parskip0pt\par}% \ifbeamercolorempty[bg]{block title} {} {\ifbeamercolorempty[bg]{block body}{}{\nointerlineskip\vskip-0.5pt}}% \usebeamerfont{block body}% \vskip-.25ex\vbox{}% } \setbeamertemplate{theorem end}{} \usepackage{lipsum} \begin{document} \begin{frame}[allowframebreaks] \begin{exercise} \lipsum[1] \lipsum[2] \end{exercise} \end{frame} \end{document}
(这
lipsum
用于创建虚拟文本,您可以删除它并将其替换为自己的内容。但请注意,如果您使用的主题具有彩色背景,这可能会大大改变定理的外观。对于像默认主题这样的朴素主题,
Montpellier
它应该完全没问题。您可以手动发出帧中断。为此,定义一个新宏
\theorembreak
来结束当前beamercolorbox
,开始一个新帧和一个新的beamercolorbox
:\documentclass{beamer} \theoremstyle{definition} \newtheorem{exercise}{Exercício} \newcommand*{\theorembreak}{\usebeamertemplate{theorem end}\framebreak\usebeamertemplate{theorem begin}} \usepackage{lipsum} \begin{document} \begin{frame}[allowframebreaks] \begin{exercise} \lipsum[1] \theorembreak \lipsum[2] \end{exercise} \end{frame} \end{document}
这样做的好处是你可以保留定理的精确风格,但却迫使你手动进行打破。
答案2
由于定理类结构使用beamercolorbox
,allowframebreaks
因此在这种情况下直接使用选项不起作用。一种解决方法是使用 来“模拟”定理类标题,beamercolorbox
然后使用选项在框外写文本allowframebreaks
:
\documentclass{beamer}
\usepackage[utf8]{inputenc}
\usepackage{lipsum}
\begin{document}
\begin{frame}[allowframebreaks=0.8]
\begin{beamercolorbox}{section in head/foot}
Exercício
\end{beamercolorbox}{}
\lipsum[1-2]
\end{frame}
\end{document}