新环境中的争论

新环境中的争论

我正在尝试编写一个newenvironment用于代码布局的包装器,使用minted

到目前为止,我尝试过:

\documentclass[a4paper,12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[english]{babel}
\usepackage{minted}

\newenvironment{codeblock}[1][python]{%
\minted[linenos,frame=lines]{#1}%
}{%
\end{minted}%
}

\begin{document}

\begin{codeblock}[python]
print('Hello world')
\end{codeblock}

\end{document}

但我收到以下错误:

! Illegal parameter number in definition of \reserved@a.

我不确定哪里出了问题;我读了一些关于将参数传递给宏的内容,这可能很棘手,但我不确定它究竟是如何工作的。

任何帮助,将不胜感激!

答案1

minted计划仅提供\newminted便利,但存在一些限制。

你可以tcolorbox从这个强大的软件包中获益:

\documentclass{article}

\usepackage[most]{tcolorbox}
\tcbuselibrary{minted}

\NewTCBListing{codeblock}{O{python}}{%
  %colback=white,colframe=white,
  listing only,
  minted language=#1,
}

\begin{document}

\begin{codeblock}[python]
print('Hello world')
\end{codeblock}

\end{document}

查看包文档以了解如何自定义代码块外观。

在此处输入图片描述

相关内容