![Mehrzeilige Matlab-Kommentare in Paketlisten](https://rvso.com/image/335504/Mehrzeilige%20Matlab-Kommentare%20in%20Paketlisten.png)
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
anstatt
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 ' listings
bereitgestellten Funktionen hinausgehen (einschließlich Unterstützung für Blockkommentare):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}
Wenn Sie aus irgendeinem Grund listings
die vorhandene Implementierung der Matlab
Sprache verwenden müssen, können Sie Unterstützung für Blockkommentare hinzufügen, indem Sie den morecomment
Schlü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}