我使用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@colorbg
bgcolor
以下是建议的修复方案:
\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}