我刚刚开始使用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}