パッケージリスト内の複数行の 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 コードに拡張機能を提供します(ブロック コメントのサポートを含む)。listingsMatlab

\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]2 つの区切り文字を探していることを意味します。1 つ目はブロック コメントを開始するためのもので、2 つ目はコメントを終了するためのものです。次の中括弧グループには、それぞれブロック コメントの開始区切り文字と終了区切り文字が含まれています。コメント区切り文字を定義するときは、パーセント記号と個々の開始/終了中括弧の両方をバックスラッシュでエスケープする必要があることに注意してください。

\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}

ここに画像の説明を入力してください

関連情報