使用 matlab-prettifier 在自己的环境中封闭一个 lstlisting 环境

使用 matlab-prettifier 在自己的环境中封闭一个 lstlisting 环境

我刚刚开始使用matlab-prettifier。由于要输入的内容\begin{lstlisting}[style=Matlab-editor]很多,因此我创建了自己的环境:

\newenvironment{myMP}
     {\begin{samepage}\begin{lstlisting}[style=Matlab-editor]}
     {\end{lstlisting}\end{samepage}}

我以前多次使用过此语法,但在这种情况下它不起作用。有什么原因导致我不能将lstlisting自己的语法包含在里面?

以下示例代码说明了该问题。

\documentclass{minimal}
\usepackage[framed]{matlab-prettifier}%For matlab code
\newenvironment{myMP}
     {\begin{samepage} \begin{lstlisting}[style=Matlab-editor]}
     {\end{lstlisting} \end{samepage}}
\begin{document}
\begin{myMP}
matlab word
\end{myMP}
\end{document}

当我运行它时,pdflatex它返回一个 *,表明环境未正确关闭。

谢谢!

答案1

您不能将一个逐字逐句的环境嵌入lstlisting到另一个环境中,至少不能不使用太多技巧(例如\scantokens等)。

listings提供使用 生成自己的可自定义环境的功能lstnewenvironment。使用\lstset{style=Matlab-editor}在环境的启动代码部分提供相关设置。

\documentclass{article}

\usepackage[framed]{matlab-prettifier}%For matlab code



\lstnewenvironment{myMP}{%
  \lstset{style={Matlab-editor}%
  }
}{% End code -- empty here
}

\begin{document}
\begin{myMP}
  a = 1
  matlab word
\end{myMP}
\end{document}

在此处输入图片描述

相关内容