列表环境中的 \inputminted 向左对齐

列表环境中的 \inputminted 向左对齐

我想在环境中包含以下文件的一部分foo.py使用。\inputmintedlisting

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}

图片显示了此处提供的 MWE 的编译结果

我认为这与将 \inputminted 置于图形中心?,但我并不完全确定解决方案是什么。根据文档fancyvrbresetmargins默认情况下为 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为其他内容。

相关内容