Mehrzeilige Matlab-Kommentare in Paketlisten

Mehrzeilige Matlab-Kommentare in Paketlisten

Ich verwende die Paketlisten, um Matlab-Code in meinen Bericht einzubinden. Das funktioniert gut mit Kommentaren, die mit beginnen, %aber mehrzeilige Kommentare werden nicht erkannt %{ ... %}:

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

gibt

Bildbeschreibung hier eingeben

anstatt

Bildbeschreibung hier eingeben

in Matlab.

Was kann ich ändern \lstset, damit es funktioniert?

Antwort1

Meine Empfehlung wäre, das Paket zu verwendenmatlab-prettifier, das auf basiert, aber erweiterte Funktionen für MATLAB-Code bietet, die über die in der Sprachdefinition von ' listingsbereitgestellten Funktionen hinausgehen (einschließlich Unterstützung für Blockkommentare):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}

Bildbeschreibung hier eingeben

Wenn Sie aus irgendeinem Grund listingsdie vorhandene Implementierung der MatlabSprache verwenden müssen, können Sie Unterstützung für Blockkommentare hinzufügen, indem Sie den morecommentSchlüssel des Pakets festlegen:

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

Hier [s]bedeutet, dass wir nach zwei Trennzeichen suchen, das erste zum Öffnen eines Blockkommentars und das zweite zum Schließen. Die folgenden Klammergruppen enthalten jeweils die öffnenden und schließenden Trennzeichen für einen Blockkommentar. Beachten Sie, dass sowohl das Prozentzeichen als auch die einzelnen öffnenden/schließenden Klammern beim Definieren der Kommentartrennzeichen durch Backslashes maskiert werden müssen.

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

Bildbeschreibung hier eingeben

verwandte Informationen