这是我的一段 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
文件:
输出如下所示:
我正在尝试将 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}