![パッケージリスト内の複数行の Matlab コメント](https://rvso.com/image/335504/%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%E3%83%AA%E3%82%B9%E3%83%88%E5%86%85%E3%81%AE%E8%A4%87%E6%95%B0%E8%A1%8C%E3%81%AE%20Matlab%20%E3%82%B3%E3%83%A1%E3%83%B3%E3%83%88.png)
私はパッケージ リストを使用して、レポートに 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]
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}