我如何使用“minted”创造这样的环境?

我如何使用“minted”创造这样的环境?

我如何才能创造这样的环境:

\documentclass[a4paper,12pt]{report}
\usepackage{minted,fancyvrb}
\newenvironment{mycode}[1]{
\begin{listing}
    \begin{minted}{bash}}{
    \end{minted}
    \caption{#1}
\end{listing}}

\begin{document}
    \begin{mycode}{My title}
        echo $PATH
    \end{mycode}
\end{document}

我尝试这样做:

\documentclass[a4paper,12pt]{report}
\usepackage{minted,fancyvrb}
\newminted{bash}{}
\newenvironment{mysupercode}{\VerbatimEnvironment\begin{bashcode}}{\end{bashcode}}
\newenvironment{mycode}[1]{
    \VerbatimEnvironment\begin{listing}\begin{mysupercode}}{
        \end{mysupercode}\caption{#1}\end{listing}}

\begin{document}
    \begin{mycode}{My title}
        echo $PATH
    \end{mycode}
\end{document}

但出现以下错误:

\endmycode 定义中的参数编号非法。\end{mysupercode}\caption{#1}\end{listing}}

答案1

您不能在环境部分进行参数替换 ( #1) 。您可以在部分中执行,然后在稍后使用,如下所示:\end\begin\def\mysupercodecaption{#1}\caption{\mysupercodecaption}

\documentclass[a4paper,12pt]{report}
\usepackage{minted,fancyvrb}
\newminted{bash}{}
\newenvironment{mysupercode}{\VerbatimEnvironment\begin{bashcode}}{\end{bashcode}}
\newenvironment{mycode}[1]{%
  \def\mysupercodecaption{#1}%
  \VerbatimEnvironment
  \begin{listing}
    \begin{mysupercode}%
}{%
    \end{mysupercode}%
    \caption{\mysupercodecaption}%
  \end{listing}%
}

\begin{document}
    \begin{mycode}{My title}
        echo $PATH
    \end{mycode}
\end{document}

这不能按您想要的方式工作,因为该\newenvironment命令基本上取代了这一点:

\newenvironment{mycode}[1]{<begin-part>}{<end-part>}

经过

\newcommand{\mycode}[1]{<begin-part>}
\newcommand{\endmycode}{<end-part>}

因此\endmycode宏不接受参数。这主要是因为如果\endmycode宏被定义为接受参数,则必须像这样使用它:

\begin{mycode}
  ...
\end{mycode}{<argument>}

相关内容