包清单中的多行 Matlab 注释

包清单中的多行 Matlab 注释

我正在使用软件包列表将一些 Matlab 代码包含到我的报告中。它适用于以 开头的注释,%但无法识别多行注释%{ ... %}

\usepackage{listings}
\lstset{language=Matlab}
...
\begin{lstlisting}
% normal comment
MATLAB code
%{
This is
a multiline
comment
%}
function [x,y] = test(x)
\end{lstlisting}

给出

在此处输入图片描述

代替

在此处输入图片描述

在 Matlab 中。

我该如何改变\lstset才能让它发挥作用?

答案1

我的建议是使用这个包matlab-prettifier,它基于listings但为 MATLAB 代码提供了增强的功能,超出了listings'Matlab语言定义所提供的功能(包括对块注释的支持):

\documentclass{article}
\usepackage{matlab-prettifier}
\lstset{style=Matlab-editor}

\begin{document}
\begin{lstlisting}
% normal comment
MATLAB code
%{
This is
a multiline
comment
%}
function [x,y] = test(x)
\end{lstlisting}
\end{document}

在此处输入图片描述

如果由于某种原因您必须使用listings该语言的现有实现Matlab,则可以通过设置包的morecomment键来添加对块注释的支持:

morecomment=[s]{\%\{}{\%\}}

这里,[s]表示我们正在寻找两个分隔符,第一个用于打开块注释,第二个用于关闭块注释。以下括号组分别包含块注释的开始和结束分隔符。请注意,在定义注释分隔符时,百分号和单独的开始/结束括号都必须用反斜杠转义。

\documentclass{article}
\usepackage{listings}
\lstset{
  language=Matlab,
  basicstyle=\ttfamily,
  morecomment=[s]{\%\{}{\%\}},
}

\begin{document}
\begin{lstlisting}
% normal comment
MATLAB code
%{
This is
a multiline
comment
%}
function [x,y] = test(x)
\end{lstlisting}
\end{document}

在此处输入图片描述

相关内容