minted
当代码片段很短或适合一页时,效果很好。当我粘贴一个包含几百行的代码片段时,就会出现问题。有时它可以处理,但输出被截断;有时它会产生一堆错误。如果我把它分成几页,每页的字符数就很重要了,也就是说,它可能会在后面产生一个空白页\end{minted}
。例如:
....
\begin{minted}[bgcolor=bg,mathescape]{c++}
code here
\end{minted}
... -> a blank page sometimes appear
\begin{minted}[bgcolor=bg,mathescape]{c++}
code here
\end{minted}
....
有人遇到过这种尴尬的minted
包裹行为吗?任何想法或建议都将不胜感激。谢谢。
答案1
不幸的是,这种行为由于已知错误。更糟糕的是,我不知道如何修复它。
从长远来看,我计划彻底放弃这个fancyvrb
包,因为严格来说,它minted
不需要逐字功能——LaTeX 序列无论如何都会被转义。这将带来更多的灵活性。
但就目前而言,不幸的是这不是一个微不足道的改变。如果你想亲自动手,你可以尝试\let
ting\Verbatim
和\endVerbatim
to \relax
,然后稍微修修补补,让渲染再次正确。免责声明:我还没有尝试过这个。
答案2
通过 mdframed 包可以防止 minted 包在截断代码方面的不良行为。例如:
\begin{mdframed}[linecolor=black, topline=true, bottomline=true,
leftline=false, rightline=false, backgroundcolor=yellow!20!white]
\begin{minted}[mathescape]{c++}
int main()
{
bla bla...
}
\end{minted}
\end{mdframed}
显然,你应该在序言中加载 mdframed 包,只需通过\usepackage{mdframed}
并最终使用全局选项即可。更好的是,无需粘贴:
\begin{mdframed}[linecolor=black, topline=true, bottomline=true,
leftline=false, rightline=false, backgroundcolor=yellow!20!white]
\inputminted[fontsize=\scriptsize, linenos, frame=lines]{c++}{path/to/your/code.cpp}
\end{mdframed}