将 和 crispy 组合为 begin{frame} 命令的可选参数

将  和 crispy 组合为 begin{frame} 命令的可选参数

我希望能够自定义一个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}

相关内容