使用 minted 和 listings 定义两部分环境

使用 minted 和 listings 定义两部分环境

我正在为学生编写一些编程说明,并尝试格式化代码,使其看起来像 Jupyter 或 Google Colab 笔记本的单元格输入/输出结构。所以我希望它看起来像

在此处输入图片描述

到目前为止,我一直在使用 minted 包来获取代码,因为我喜欢它的自动语法突出显示,并使用 listings 包,因为它看起来像笔记本的输出。

\documentclass[11pt]{amsart}

\usepackage[framemethod=tikz]{mdframed} %%to make a framed environment

\usepackage{listings}
\usepackage{minted}


\usemintedstyle{xcode}

\definecolor{light-gray}{rgb}{0.789035,0.789035,0.789035}
\setminted{bgcolor=light-gray}


\lstset{frame=b,
  language=Python,
  aboveskip=-2mm,
  belowskip=3mm,
  columns=flexible,
  basicstyle={\small\ttfamily}
}

\newminted{py}{linenos=true,
autogobble,
python3=true,
obeytabs=true,
tabsize=3,
frame=none,
framesep=10pt}


\begin{document}


\begin{pycode}
print("Hello world!")
\end{pycode}
\begin{lstlisting}
Hello world!
\end{lstlisting}

\end{document}

在大多数情况下,这看起来不错,但当 LaTeX 在页面上扩展垂直间距时,它会将 minted 环境与 listings 环境垂直分开。我想将它们合并到一个环境中,以强制它们保持在一起。

我知道我可以将环境组合在一起,例如

\newenvironment{doubleproof}{
    \newcommand{\nextpart}{\end{proof} \begin{proof}}
     \begin{proof}}{\end{proof}}

以便

\begin{doubleproof}
First proof
\nextpart
Second proof
\end{doubleproof}

生产

在此处输入图片描述

然而,当我尝试定义

\newenvironment{cell}{
    \newcommand{\nextpart}{\end{pycode}\begin{lstlisting}}
     \begin{pycode}}{\end{lstlistings}}

并以类似的方式使用它,我得到了一个错误。有没有办法让它工作,或者有另一种解决方案来格式化我的输出?提前谢谢!

答案1

listing and comment通过某种列表可以获得与所需结果类似的结果tcolorbox

对于非LaTeX语言列表,输出不是自动的,comment可以使用选项输入假定的结果。

\documentclass{article}
\usepackage[most, minted]{tcolorbox}

\DeclareTCBListing{pythonexample}{m}{%
    listing and comment,
    listing engine=minted,
    minted style=xcode,
    minted language=Python,
    minted options={linenos, numbersep=3mm},
    sharp corners,
    toprule=0pt, leftrule=0pt, rightrule=0pt,
    colback=black!30, colframe=red!75!black,
    bicolor, colbacklower=white, colframe=black,
    fontlower=\ttfamily,
    comment={#1},
}

\begin{document}

\begin{pythonexample}{Hello World!}
print("Hello World!")
\end{pythonexample}

\end{document}

在此处输入图片描述

相关内容