我复制并修改了接受答案中的代码片段这里突出显示cpp
代码:
\usepackage{tcolorbox}
\tcbuselibrary{minted,skins}
\newtcblisting{cppcode}[1][]{
listing engine=minted,
colback=bg,
colframe=black!70,
listing only,
minted style=colorful,
minted language=cpp,
minted options={linenos=true,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}}
}
\definecolor{bg}{rgb}{0.85,0.85,0.85}
然后,我在 Beamer 框架中使用它,如下所示:
\begin{frame}[fragile]
\frametitle{Title}
\framesubtitle{Subtitle}
\begin{cppcode}
int main() {
int x, y;
}
\end{cppcode}
\end{frame}
但是,只显示一个带有灰色边缘的空框,其中没有任何代码。
我有以下投影仪类别和主题:
\documentclass[xcolor=table]{beamer}
\usetheme{CambridgeUS}
\usecolortheme{beaver}
如何使类似的 tcolorbox 代码列表显示在 beamer 中?理想情况下,我还希望它可以跨框架分解。
更新:作者在评论中建议将 的名称更改为bg
。我将其更改为bgg
,现在背景也是(较浅的)灰色,但代码仍然没有显示。
答案1
事实证明,bg
背景颜色的名称与 冲突beamer
。只需将其命名为其他名称即可
\newtcblisting{cppcode}[1][]{
listing engine=minted,
colback=cppcodebg,
colframe=black!70,
listing only,
minted style=colorful,
minted language=cpp,
minted options={linenos=true,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}}
}
\definecolor{cppcodebg}{rgb}{0.85,0.85,0.85}
最小示例,用于运行
pdflatex -shell-escape test
或者minted
无法运行pygmentize
:
\documentclass{beamer}
\usepackage{tcolorbox}
\tcbuselibrary{minted,skins}
\newtcblisting{cppcode}[1][]{
listing engine=minted,
colback=cppcodebg,
colframe=black!70,
listing only,
minted style=colorful,
minted language=cpp,
minted options={linenos=true,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}}
}
\definecolor{cppcodebg}{rgb}{0.85,0.85,0.85}
\begin{document}
\begin{frame}[fragile]
\frametitle{Title}
\framesubtitle{Subtitle}
\begin{cppcode}
int main() {
int x, y;
}
\end{cppcode}
\end{frame}
\end{document}