编辑:

编辑:

我使用minted来格式化文档中的代码示例,并设置了一个bgcolor选项使它们脱颖而出。默认情况下(如下面的 Harish 的回答所示),代码块自然会有一些上下边距,以将代码与段落分开。但是,当我设置 时bgcolor,它就消失了。问题是:如何获得彩色背景,同时在代码块上方和下方获得正常的空白?(自从我将问题缩小到设置 的情况后,问题已被编辑bgcolor。)

示例代码:

\documentclass{article}
\usepackage{minted}
\usepackage{lipsum}

\usepackage{color}
\definecolor{light-gray}{rgb}{0.9,0.9,0.9}
\setminted{bgcolor=light-gray}  % this line causes the problem

\begin{document}
\lipsum*[1] Some text

\begin{minted}{c}
int main() {
printf("hello, world");
return 0;
}
\end{minted}

Some text \lipsum*[2]
\end{document}

结果: 在此处输入图片描述

答案1

我相信这是一个错误,因为在给出选项时使用的minted内部环境不会在上方和下方添加垂直空间。minted@colorbgbgcolor

以下是建议的修复方案:

\documentclass{article}
\usepackage{minted}
\usepackage{etoolbox}

\usepackage{color}

\usepackage{lipsum}

\definecolor{light-gray}{rgb}{0.9,0.9,0.9}
\setminted{bgcolor=light-gray}  % this line causes the problem

\makeatletter
\patchcmd{\minted@colorbg}{\noindent}{\medskip\noindent}{}{}
\apptocmd{\endminted@colorbg}{\par\medskip}{}{}
\makeatother

\begin{document}
\lipsum*[1] Some text

\begin{minted}{c}
int main() {
printf("hello, world");
return 0;
}
\end{minted}

Some text \lipsum*[2]
\end{document}

在此处输入图片描述

答案2

我不知道你为什么要这样做,但这样,minted 就分离得足够好了,就像

\documentclass{article}
\usepackage{minted}
\usepackage{lipsum}
\begin{document}
\lipsum*[1] Some text
\begin{minted}{c}
int main() {
printf("hello, world");
return 0;
}
\end{minted}
Some text \lipsum*[2]
\end{document}

在此处输入图片描述

但是,如果你坚持的话,这里有一种方法。

\documentclass{article}
\usepackage{minted}
\usepackage{lipsum}
\usepackage{etoolbox}
\BeforeBeginEnvironment{minted}{\bigskip}
\AfterEndEnvironment{minted}{\bigskip}
\begin{document}
\lipsum*[1] Some text
\begin{minted}{c}
int main() {
printf("hello, world");
return 0;
}
\end{minted}
Some text \lipsum*[2]
\end{document}

在此处输入图片描述

编辑:

现在给出了 MWE 并且解决方案仍然有效:

\documentclass{article}
\usepackage{minted}
\usepackage{lipsum}
\usepackage{etoolbox}
\BeforeBeginEnvironment{minted}{\vspace{2cm}}
\AfterEndEnvironment{minted}{\vspace{2cm}}
\usepackage{xcolor}
\definecolor{light-gray}{rgb}{0.9,0.9,0.9}

\begin{document}
\lipsum*[1] Some text

\begin{minted}[bgcolor=light-gray]{c}
int main() {
printf("hello, world");
return 0;
}
\end{minted}

Some text \lipsum*[2]
\end{document}

在此处输入图片描述

相关内容