带有铸造包的背景颜色:代码放错了位置

带有铸造包的背景颜色:代码放错了位置

使用以下示例

\listfiles
\documentclass{article}
\usepackage{minted}
\definecolor{bg}{rgb}{0.95,0.95,0.95}
\begin{document}
Some text
\begin{minted}{latex}
A test
\end{minted}

Some text
\begin{minted}[linenos=true]{latex}
A test
\end{minted}

Some text
\begin{minted}[bgcolor=bg]{latex}
A test
\end{minted}
\end{document}

前两个代码块排版在文本下方,但最后一个代码块排版在侧面: 示例输出

我有Pymentizev1.4 已安装,并\listfiles提供

 *File List*
 article.cls    2007/10/19 v1.4h Standard LaTeX document class
  size10.clo    2007/10/19 v1.4h Standard LaTeX file (size option)
  minted.sty    2010/01/27 v1.6 Yet another Pygments shim for LaTeX
  keyval.sty    1999/03/16 v1.13 key=value parser (DPC)
fancyvrb.sty    2008/02/07
   color.sty    2005/11/14 v1.0j Standard LaTeX Color (DPC)
   color.cfg    2007/01/18 v1.5 color configuration of teTeX/TeXLive
  pdftex.def    2010/11/26 v0.05c Graphics/color for pdfTeX
   float.sty    2001/11/08 v1.3d Float enhancements (AL)
  ifthen.sty    2001/05/26 v1.1c Standard LaTeX ifthen package (DPC)
    calc.sty    2007/08/22 v4.3 Infix arithmetic (KKT,FJ)
ifplatform.sty    2010/10/22 v0.4 Testing for the operating system
pdftexcmds.sty    2010/04/01 v0.9 Utility functions of pdfTeX for LuaTeX (HO)
infwarerr.sty    2010/04/08 v1.3 Providing info/warning/message (HO)
ifluatex.sty    2010/03/01 v1.3 Provides the ifluatex switch (HO)
 ltxcmds.sty    2010/04/26 v1.7 LaTeX kernel commands for general use (HO)
catchfile.sty    2010/04/28 v1.5 Catches the contents of a file (HO)
etexcmds.sty    2010/01/28 v1.3 Prefix for e-TeX command names (HO)
minted-test.w18
supp-pdf.mkii
minted-test.pyg
minted-test.out.pyg
minted-test.out.pyg
minted-test.out.pyg
 ***********

这看起来像是一个会被注意到的错误,那么我错在哪里了?

答案1

minted如果选择了背景颜色,则内部使用以下宏:

\newsavebox{\minted@bgbox}

\newenvironment{minted@colorbg}[1]{
  \def\minted@bgcol{#1}
  \noindent
  \begin{lrbox}{\minted@bgbox}
  \begin{minipage}{\linewidth-2\fboxsep}}
 {\end{minipage}
  \end{lrbox}%
  \colorbox{\minted@bgcol}{\usebox{\minted@bgbox}}}

在没有进一步测试的情况下,我假设使用 aminipage不会引入新段落。如果是这样,\par在框前执行一个简单的命令应该可以解决问题。

这似乎是一个会被注意到的错误,

应该有。事实上,文档minted.pdf目前几乎是唯一的测试案例,并且在文档中该bgcolor选项仅在一个示例中使用,没有周围文本,因此缺少段落分隔符没有任何区别。

答案2

您可以使用 mdframed 包 ( \usepackage{mdframed}) 来解决此问题,方法如下:

\definecolor{bg}{rgb}{0.95,0.95,0.95}
...

\begin{mdframed}[backgroundcolor=bg]
    \begin{minted}{latex}
        your code
    \end{minted}
\end{mdframed}

答案3

为了更新以前的答案,这就是手册2016 年的情况如下:

此选项将阻止断线与\mintinline。A\colorbox不能跨行断开。

此选项将防止环境跨页面中断。如果您需要支持分页符和高级选项,则应考虑使用框架包,例如framedmdframedtcolorbox。使用包可以轻松地将框架添加到 minted 命令和环境中etoolbox。例如,使用mdframed

\BeforeBeginEnvironment{minted}{\begin{mdframed}}
\AfterEndEnvironment{minted}{\end{mdframed}}

一些框架包还提供了用于此类目的的内置命令。例如, mdframed提供了一个\surroundwithmdframed命令,可用于将框架添加到所有已创建的环境中:

\surroundwithmdframed{minted} 

tcolorbox甚至提供了带有 minted 支持的内置框架环境。

相关内容