Beamer 与 Minted:覆盖

Beamer 与 Minted:覆盖

如何在 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 环境放在\onlyor中\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}

相关内容