这是默认的 Beamer 脆弱框架。将默认框架设置为脆弱(或将可选的脆弱参数传递给所有框架)有什么缺点。beamer 用户指南说
如果框架包含易碎文本,则使用不同的内部机制来排版框架,以确保框架内的字符代码可以重置。切换到另一种内部机制的代价是,您无法使用覆盖,或者需要写入和读回外部文件(这并不总是可取的)。
据推测,写入和读取文件需要时间,因此这会增加编译所需的时间,但是在脆弱的框架中是否存在无法工作的东西?
对于 MWE 来说:
\documentclass{beamer}
\def\foo{Something that makes the fragile frame fail is: }
\begin{document}
\begin{frame}
\foo
\end{frame}
\begin{frame}[fragile]
\foo
\end{frame}
\end{document}
我试图了解\foo
需要定义什么才会导致问题。
答案1
没有重大的缺点。也可以使用以下选项定义新环境fragile
:
\documentclass{beamer}
\newenvironment{Foo}[1]
{\begin{frame}[environment=Foo]{#1}}
{\end{frame}}
\newenvironment{FooBar}[1]
{\begin{frame}[fragile,environment=FooBar]{#1}}
{\end{frame}}
\begin{document}
\begin{Foo}{title}
\end{Foo}
\begin{FooBar}{title}
\end{FooBar}
\end{document}
易碎品每一个内容写入外部文件并读回。没什么大不了的,但会使编译速度变慢。但是,fragile
对于逐字材料来说是必需的。
答案2
看此主题。显然,该fragile
选项与该选项不兼容allowframebreaks
,没有一些尴尬的花招。所以这是一个缺点,除了在接受的答案的评论中提到的编译速度要慢得多。
答案3
该fragile
选项对居中有一些影响:
\documentclass{beamer}
\begin{document}
\begin{frame}
\centering
center
\end{frame}
\begin{frame}[fragile]
\centering
not center
\end{frame}
\begin{frame}[fragile]
\begin{center}
center again
\end{center}
\end{frame}
\end{document}