如何使用 minted 在 tcolorbox 中放置代码片段?

如何使用 minted 在 tcolorbox 中放置代码片段?

这是我的一段 LaTeX 代码:

\documentclass[a4paper,oneside]
\usepackage{minted}
\usepackage{tcolorbox}
\tcbuselibrary{breakable,skins}
\usepackage{etoolbox}
\usepackage{fancyvrb}

\begin{document}
\begin{tcolorbox}[breakable=true]
\centering
\RecustomVerbatimEnvironment{Verbatim}{BVerbatim}{}
\inputminted{gnuplot}{script.txt}
\end{tcolorbox}  
\end{document}

script.txt文件:

输出如下所示:

tcolorbox 跨越多个页面,但生成的代码并不在它“内部”

我正在尝试将 minted 代码放入 tcolorbox 中,这样代码也可以跨页面。有人能指导我正确的方法吗?

答案1

我想我找到了问题的原因。你使用的\RecustomVerbatimEnvironment似乎使生成的代码牢不可破。如果你省略了这一点(从而也省略了居中),你的代码就是可破坏的:

\begin{filecontents*}{script.txt}
Bla bla bla bla bla.
Blub blub blub.
Bla bla bla bla bla.
Blub blub blub.
Bla bla bla bla bla.
Blub blub blub.
Bla bla bla bla bla.
Blub blub blub.
Bla bla bla bla bla.
Blub blub blub.
Bla bla bla bla bla.
Blub blub blub.
Bla bla bla bla bla.
Blub blub blub.
Bla bla bla bla bla.
Blub blub blub.
Bla bla bla bla bla.
Blub blub blub.
Bla bla bla bla bla.
Blub blub blub.
\end{filecontents*}

\documentclass[a4paper,oneside]{report}
\usepackage{minted}
\usepackage{tcolorbox}
\tcbuselibrary{breakable,skins}
\usepackage{etoolbox}
\usepackage{fancyvrb}

\begin{document}

\rule{1pt}{14cm}

\begin{tcolorbox}[breakable,enhanced]
%\centering
%\RecustomVerbatimEnvironment{Verbatim}{BVerbatim}{}
\inputminted{gnuplot}{script.txt}
\end{tcolorbox}
\end{document}

在此处输入图片描述

更新:

minted如果您使用库tcolorbox及其\tcbinputlisting命令而不是放入,\inputminted则会得到相同的结果tcolorbox

使用您提供的加号换行script.txt设置,可以得到以下结果:minted options={breaklines}

\documentclass[a4paper,oneside]{report}
\usepackage{minted}
\usepackage{tcolorbox}
\tcbuselibrary{breakable,skins,minted}
\usepackage{etoolbox}
\usepackage{fancyvrb}

\begin{document}

\tcbinputlisting{
  listing file=script.txt,
  minted language=gnuplot,
  minted options={breaklines},% <-- put other minted options inside the brackets
  breakable,enhanced,% <-- put other tcolorbox options here
  listing only
}

\end{document}

在此处输入图片描述

如果您有许多 gnuplot 输入,您可以使用\newcommand\newtcbinputlisting(来自tcolorbox)将所有设置包装到一个新的宏中。

例如,创建一个\gnuplotinput如下所示的新宏:

\documentclass[a4paper,oneside]{report}
\usepackage{tcolorbox}
\tcbuselibrary{breakable,skins,minted}

\newtcbinputlisting{\gnuplotinput}[2][]{%
  listing file={#2},
  minted language=gnuplot,
  minted options={breaklines},% <-- put other minted options inside the brackets
  breakable,enhanced,% <-- put other tcolorbox options here
  listing only,#1
}

\begin{document}

\gnuplotinput{script.txt}

\end{document}

相关内容