我想在环境中包含以下文件的一部分foo.py
使用。\inputminted
listing
def foo(a, b):
return a + b
def bar(a, b)
return a - b
但是,如果这种listing
环境出现在其他一些增加左边距缩进的环境中,\inputminted
似乎并不尊重这一点。
(请注意,您需要将第一个代码块的内容保存foo.py
在与此 MWE 相同的目录中,以便进行编译。)
\documentclass{article}
\usepackage{minted}
\begin{document}
\begin{enumerate}
\item
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Suspendisse euismod, orci ac iaculis posuere, felis augue ultricies augue.
\begin{listing}[H]
\inputminted[firstline=1,lastline=2]{python}{foo.py}
\caption{The function foo}
\end{listing}
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Suspendisse euismod, orci ac iaculis posuere, felis augue ultricies augue.
\begin{listing}[H]
\begin{minted}{python}
def foo(a, b):
return a + b
\end{minted}
\caption{The function foo}
\end{listing}
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Suspendisse euismod, orci ac iaculis posuere, felis augue ultricies augue.
\end{enumerate}
\end{document}
我认为这与将 \inputminted 置于图形中心?,但我并不完全确定解决方案是什么。根据文档fancyvrb
,resetmargins
默认情况下为 false,因此边距不应被重置,但它似乎已被重置。在环境\inputminted
内部使用时,如何确保边距尊重其他缩进环境listing
?也就是说,我希望能够使用,但具有仅使用时\inputminted
为第二个环境获得的代码块的缩进。listing
\begin{minted}...\end{minted}
答案1
使用不同的方法\captionof
:
\begin{filecontents*}{\jobname.py}
def foo(a, b):
return a + b
def bar(a, b)
return a - b
\end{filecontents*}
\documentclass{article}
\usepackage{minted}
\usepackage{caption}
\usepackage{showframe}% just for the example
\newenvironment{pseudolisting}
{\begin{minipage}{\linewidth}\vspace*{\topsep}}
{\vspace*{\topsep}\end{minipage}}
\begin{document}
Some text before to check the spacing
\begin{listing}[H]
\inputminted[firstline=1,lastline=2]{python}{\jobname.py}
\caption{The function foo}
\end{listing}
Some text after to check the spacing
\begin{enumerate}
\item Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Suspendisse euismod, orci ac iaculis posuere, felis augue ultricies augue.
\begin{pseudolisting}
\inputminted[firstline=1,lastline=2]{python}{\jobname.py}
\captionof{listing}{The function foo}
\end{pseudolisting}
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Suspendisse euismod, orci ac iaculis posuere, felis augue ultricies augue.
\begin{pseudolisting}
\begin{minted}{python}
def foo(a, b):
return a + b
\end{minted}
\captionof{listing}{The function foo}
\end{pseudolisting}
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Suspendisse euismod, orci ac iaculis posuere, felis augue ultricies augue.
\end{enumerate}
\end{document}
生产说明。我以前经常showframe
看到页边距;文件保存为\jobname.py
只是为了不破坏我的文件。你可能需要更改\topsep
为其他内容。