使用 minted 创建自定义代码环境

使用 minted 创建自定义代码环境

我正在尝试使用 为 Python 代码创建一个环境minted,但我总是得到FancyVerb error。这是我的代码:

\documentclass{article}
\usepackage[utf8]{inputenc}

\usepackage{minted}
\usepackage{color, colortbl}
\definecolor{Gray}{gray}{0.9}

\newenvironment{code}[1][python]
{
    \begin{table}[ht]
            \begin{tabular}{p{0.8\textwidth}}
                \rowcolor{Gray}
                \begin{minted}{#1}
}
{
                \end{minted}
            \end{tabular}
    \end{table}
}



\begin{document}

\begin{code}
print("This is some code example") 
\end{code}

\end{document}

我读过这篇文章回答说这是这种包的问题,​​不能与一起使用\newenvironment。有什么办法吗?我不介意完全改变方法,但我想要的结果是能够有一个根据所需语言格式化文本的代码环境(在我的情况下是python,但最好我也希望能够将其重用于其他语言)。

答案1

我建议采用不同的方法,即使用tcolorbox

\documentclass{article}

\usepackage[many]{tcolorbox}
\tcbuselibrary{minted,skins}
%\usepackage{minted}

\definecolor{Gray}{gray}{0.9}

\newtcblisting{code}[1][python]{
  colback=Gray,
  listing engine=minted,
  minted language=#1,
  listing only,
  skin=tile,
  width=0.8\textwidth
 }
\BeforeBeginEnvironment{code}{\begin{table}[htp]}
\AfterEndEnvironment{code}{\end{table}}


\begin{document}

\begin{code}
print("This is some code example") 
\end{code}

\begin{code}[C]
print("This is some code example") 
\end{code}

\end{document}

在此处输入图片描述

让框更紧密地包围代码并不困难,请参阅的详尽手册tcolorbox

例如,如果我将代码更改为

\newtcblisting{code}[1][python]{
  colback=Gray,
  listing engine=minted,
  minted language=#1,
  listing only,
  skin=tile,
  sharp corners,
  width=0.8\textwidth,
  top=2pt,bottom=2pt,left=2pt,right=2pt,
 }
\BeforeBeginEnvironment{code}{\begin{table}[htp]}
\AfterEndEnvironment{code}{\end{table}}

结果是

在此处输入图片描述

相关内容