我想在我的 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}