beamer 框架内的 Minted Python 示例

beamer 框架内的 Minted Python 示例

我想在我的 Beamer 幻灯片中包含 Minted Python 代码示例。我发现一个例子在环境之外也能正常工作\frame。也许这适合未来的报告/文档,但它不适合我更具体的用例。

我的 tex 文件中有以下内容:

\documentclass[compress]{beamer}

\usetheme{Frankfurt}
\setbeamertemplate{page number in head/foot}[totalframenumber]

%% Change shape of bullets
\setbeamertemplate{itemize items}[circle]
\setbeamertemplate{enumerate items}[circle]
%%%

%% Import packages
\usepackage{tcolorbox}
\usepackage{graphicx}
\usepackage{xcolor}
\usepackage{colortbl}
\usepackage{amsmath}
\usepackage{pifont}
\usepackage{ccicons}
\usepackage{tikz}
\usetikzlibrary{mindmap}
\usepackage{smartdiagram}
\usepackage[linesnumbered,lined,commentsnumbered]{algorithm2e}
\usepackage{hyperref}
\tcbuselibrary{minted,skins,breakable}
%%%

\newtcblisting{pythoncode}[2][]{
  listing engine=minted,
  breakable,
  coltitle=UNBCGold,
  colback=black,
  colframe=UNBCGreen,
  listing only,
  minted style=colorful,
  minted language=python,
  minted options={numbersep=3mm,texcl=true,#1},
  left=5mm,enhanced,
  overlay={\begin{tcbclipinterior}\fill[black!25] (frame.south west)
            rectangle ([xshift=5mm]frame.north west);\end{tcbclipinterior}},
            #2,
}

\begin{frame}
    \frametitle{Premature Optimization}
    \begin{pythoncode}[linenos=true,]{title=Python Code Example}
    import glob
    \end{pythoncode}
\end{frame}

但我收到一个错误:! File ended while scanning use of \next.此问题可以归结为使用,pythoncode因为将其放在frame范围之外允许编译(浮动放置行为不佳)。也就是说,以下更改会编译 PDF:

\begin{frame}
    \frametitle{Premature Optimization}
\end{frame}

\begin{pythoncode}[linenos=true,]{title=Python Code Example}
import glob
\end{pythoncode}

正如评论中所建议的,我minted env在导入minted包后尝试了。我发现了类似的模式。以下内容未编译:

\begin{frame}
    \frametitle{Premature Optimization}
    \begin{tcolorbox}
    \begin{minted}{python}
    import glob
    \end{minted}
    \end{tcolorbox}
\end{frame}

将环境移到外面时minted确实进行了编译(tcolorbox 的位置不太理想):

\begin{frame}
    \frametitle{Premature Optimization}
\end{frame}

    \begin{tcolorbox}
    \begin{minted}{python}
    import glob
    \end{minted}
    \end{tcolorbox}

我如何围绕 Beamer 框架内存在的 Python 代码示例构建类似的 listing\tcolorobox?

答案1

您需要[fragile]为您的框架使用:

\begin{frame}[fragile]
    \frametitle{Premature Optimization}
    \begin{pythoncode}[linenos=true,]{title=Python Code Example}
    import glob
    \end{pythoncode}
\end{frame}

相关内容