如何使用 bgcolor 在 \inputminted 代码块之前和之后放置空格?

如何使用 bgcolor 在 \inputminted 代码块之前和之后放置空格?

这与问题有关如何使用 bgcolor 在 `minted` 代码块前后留出空间? 那里解释了 minted 的一个错误,当您设置背景颜色时,它会导致代码块上方和下方的空间消失。针对 minted 环境给出了修复。我也想修复 \inputminted 命令!不幸的是,同样的修复不起作用,因为这是一个命令而不是环境。

我以为我可以使用 \apptocmd 和 \pretocmd 来修复它,但是如下面的最小工作示例所示,\pretocmd 做了正确的事情,但 \apptocmb 给出了错误“!缺少插入的 \endcsname。”

\documentclass{article}
\usepackage{lipsum}
\usepackage{filecontents}

\usepackage{minted}
\setminted{bgcolor=blue!8}

\usepackage{etoolbox}
\pretocmd{\inputminted}{\par\vspace{1em}}{}{}
% The following line doesn't work
\apptocmd{\inputminted}{\par\vspace{1em}}{}{}

% These are the fixes given for the minted environment
\BeforeBeginEnvironment{minted}{\vspace{1em}}
\AfterEndEnvironment{minted}{\par\vspace{1em}}

\begin{document}

\begin{filecontents*}{test.py}
n = 20
for i in range(n)
    print("Hello World")
\end{filecontents*}

\lipsum*[1]

% Here is where the problem lies.
\inputminted{python}{test.py}

\lipsum*[1]

% This bit of code works as it should
\begin{minted}{python}
n = 10
for i in range(n)
    print("Hello World")
\end{minted}

\lipsum*[1]
\end{document}

答案1

\inputminted命令是用可选参数定义的,因此无法用 进行修补etoolbox,除非您说

\expandafter\pretocmd\csname\string\inputminted\endcsname...

(看如何使用带有可选参数的命令 \patchcmd?

该软件包xpatch本身完成了必要的部分工作。

\usepackage{xpatch}
\xpretocmd{\inputminted}{\par\vspace{1em}}{}{}
\xapptocmd{\inputminted}{\par\vspace{1em}}{}{}

在此处输入图片描述

相关内容