如何在 minted 代码中使用 beamer overlay?显而易见的解决方案不起作用:
\documentclass{beamer}
\usepackage{minted}
\begin{document}
\begin{frame}[fragile]
\frametitle{Foo}
\begin{minted}{lua}
\uncover<1>{print("foo")}
\uncover<2>{print("bar")}
\uncover<3>{print("baz")}
\end{minted}
\end{frame}
\end{document}
答案1
不幸的是,由于 minted 内部的工作方式,没有明显的方法来实现这一点。事实上,代码至关重要的是不是由 TeX 以通常方式解析。
可能有一些技巧可以解决这个问题,但目前我建议,近似所需行为的最简单方法是使用多个连续minted
环境:
\uncover<1>{\begin{minted}{lua}
print("foo")
\end{minted}}
\uncover<2>{\begin{minted}{lua}
print("bar")
\end{minted}}
\uncover<3>{\begin{minted}{lua}
print("baz")
\end{minted}}
但说实话我并不确定这是否有效。
答案2
似乎已经取得了一些进展,并且现在可以按预期运行:
\documentclass{beamer}
\usepackage{minted}
\begin{document}
\begin{frame}[fragile]
\frametitle{Foo}
\begin{minted}[escapeinside=||]{lua}
|\pause|print("foo")
|\pause|print("bar")
|\pause|print("baz")
\end{minted}
\end{frame}
\end{document}
答案3
经过反复试验后,以下是唯一对我有用的解决方案:
\begin{frame}
\begin{overprint}
\onslide<1>
\begin{minted}{c++}
...
\end{minted}
\onslide<2>
\begin{minted}{c++}
...
\end{minted}
\end{overprint}
\end{frame}
答案4
您不能将 minted 环境放在\only
or中\uncover
,但可以在 minted 中使用它环境。照例,您仍然需要fragile
框架选项。这是一个例子(其中code
是 minted 环境)。
\newminted[code]{scala}{}
\begin{frame}[fragile]
\begin{code}
snippet1
\end{code}
\begin{onlyenv}<2>
\begin{code}
snippet2
\end{code}
\end{onlyenv}
\note[item]{M}
\end{frame}