我希望能够自定义一个frame
具有两个参数的环境,<+->
和fragile
。第一个允许我在列表环境中发现项目,第二个允许我使用 matlab-prettifier 包。似乎有两个障碍 1)fragile
似乎与不兼容<+->
2) 我无法自定义环境,即使只是在fragile
其中。下面的 MWE 说明了这两个问题。它按编写正确编译。有两行注释掉的行。如果取消注释其中任何一行,并注释掉下面的行,则会pdflatex
引发错误是否有解决其中一个或两个问题的方法?
\documentclass{beamer}
\usepackage[framed]{matlab-prettifier}
\lstnewenvironment{myMPcolor}{%
\lstset{basicstyle=\color{red}}
}{}
%\newenvironment{colorFrame}[fragile][1]{%
\newenvironment{colorFrame}[1]{%
\setbeamercolor{background canvas}{bg=cyan}
\begin{frame}[<+->]{\hfill #1 \hfill }
}{\end{frame}}
\begin{document}
%\begin{frame}[<+->,fragile]{Title}
\begin{frame}[fragile]{Title}
\begin{itemize}
\item first point
\begin{itemize}
\item subpoint
\end{itemize}
\end{itemize}
\begin{myMPcolor}
This is a matlab command
\end{myMPcolor}
\end{frame}
\begin{colorFrame}{Title}
\begin{itemize}
\item first point
\begin{itemize}
\item subpoint
\end{itemize}
\end{itemize}
\end{colorFrame}
\end{document}
答案1
除了使用框架选项之外,您还可以直接传递<+->
给 itemize 环境:
\documentclass{beamer}
\usepackage[framed]{matlab-prettifier}
\lstnewenvironment{myMPcolor}{%
\lstset{basicstyle=\color{red}}
}{}
\begin{document}
\begin{frame}[fragile]{Title}
\begin{itemize}[<+->]
\item first point
\begin{itemize}[<+->]
\item subpoint
\end{itemize}
\end{itemize}
\begin{myMPcolor}
This is a matlab command
\end{myMPcolor}
\end{frame}
\end{document}
如果你需要更自动化的解决方案,你也可以使用
\documentclass{beamer}
\usepackage[framed]{matlab-prettifier}
\lstnewenvironment{myMPcolor}{%
\lstset{basicstyle=\color{red}}
}{}
\begin{document}
\begin{frame}[fragile]{Title}
\beamerdefaultoverlayspecification{<+->}
\begin{itemize}
\item first point
\begin{itemize}
\item subpoint
\end{itemize}
\end{itemize}
\begin{myMPcolor}
This is a matlab command
\end{myMPcolor}
\end{frame}
\end{document}