这是对我的问题的后续此主题,对此@samcarter 向我展示了如何<+->
与相结合fragile
。在下面的示例中,我尝试通过创建一个fragileFrame
包含上述两个功能的环境来进一步自动化他的代码。(显然,在这个 MWE 中,它并没有给我带来太多好处,但在我的实际代码中,我的 beamer 框架包含大量自定义,我不想每次都重写。但是环境构造会引发错误。为了验证它是否真的是fragile
导致错误的选项,我创建了一个normalFrame
除了选项之外完全相同的环境fragile
,并且编译时没有错误。有没有办法解决这个问题?
\documentclass{beamer}
\usepackage[framed]{matlab-prettifier}
\lstnewenvironment{myMPcolor}{%
\lstset{basicstyle=\color{red}}
}{}
\newenvironment{fragileFrame}[1]{%
\beamerdefaultoverlayspecification{<+->}
\begin{frame}[fragile]{#1}
}{\end{frame}}
\newenvironment{normalFrame}[1]{%
\beamerdefaultoverlayspecification{<+->}
\begin{frame}{#1}
}{\end{frame}}
\begin{document}
\begin{normalFrame}{Title}
\begin{itemize}
\item first point
\begin{itemize}
\item subpoint
\end{itemize}
\end{itemize}
\end{normalFrame}
\begin{fragileFrame}{Title}
\begin{itemize}
\item first point
\begin{itemize}
\item subpoint
\end{itemize}
\end{itemize}
\begin{myMPcolor}
This is a matlab command
\end{myMPcolor}
\end{fragileFrame}
\end{document}
答案1
正如您在上一个问题的评论中所说,将框架环境隐藏在新环境中是一个坏主意 —— 这通常会导致比它解决的问题更多的问题。
但是如果你真的必须这么做:
\documentclass{beamer}
\usepackage[framed]{matlab-prettifier}
\lstnewenvironment{myMPcolor}{%
\lstset{basicstyle=\color{red}}
}{}
\newenvironment{slide}
{\begin{frame}[fragile,environment=slide]}
{\end{frame}}
\begin{document}
\begin{slide}
\frametitle{title}
\begin{itemize}
\item first point
\begin{itemize}
\item subpoint
\end{itemize}
\end{itemize}
\begin{myMPcolor}
This is a matlab command
\end{myMPcolor}
\end{slide}
\end{document}