Warum werden Strings im MatLab-Code mit Listings falsch interpretiert

Warum werden Strings im MatLab-Code mit Listings falsch interpretiert

Ich versuche, MatLab-Code mithilfe des Listings-Pakets in mein Dokument einzubinden, aber es scheint, als würden die Zeichenfolgen nicht richtig interpretiert.

fprintf('ABC %s:\n', mystring);
fprintf("ABC %s:\n", mystring);
\documentclass{article}
\usepackage[english]{babel}     %use english or ngerman
\usepackage[utf8]{inputenc}     %German äöü for input
\usepackage[T1]{fontenc}        %German äöü for pdf
\usepackage{textcomp}           %Additional Symbols e.g. degree
\usepackage{xcolor}
\usepackage{listings}

\definecolor{keyword}{RGB}{0,175,203}      %color
\definecolor{comment}{rgb}{0.06,0.58,0.07} %color
\definecolor{label}{rgb}{0.5,0.5,0.5}      %color

\lstset{                                   %Configure code
  keywordstyle=\bfseries\color{keyword},
  stringstyle=\ttfamily\color{label},
  commentstyle=\color{comment}
}

\begin{document}

\begin{lstlisting}[
    language=MatLab,
    label=lst:broken,
    caption={Broken Syntax Highlighting}
]
fprintf('ABC %s:\n', mystring);
fprintf("ABC %s:\n", mystring);
\end{lstlisting}

\end{document}

Ergebnis:

Ergebnis der MWE

"Ist es möglich , derselben Liste, die 'vorhanden ist, etwas hinzuzufügen ?

Antwort1

Die Matlab-Sprachdefinition definiert 'standardmäßig nur String-Trennzeichen. Sie können aber auch "eines erstellen, indem Sie die folgende Zeile zu den Optionen der Auflistung hinzufügen:

morestring=[m]"

mist ein spezieller Trennzeichentyp für Matlab-Code, definiert als

[...] ein spezieller Typ für Ada und Matlab und möglicherweise andere Sprachen, in denen die String-Trennzeichen auch für andere Zwecke verwendet werden. Es ist gleichwertig mit d, außer dass ein String nicht nach einem Buchstaben, einer rechten Klammer, einer rechten eckigen Klammer oder einigen anderen Zeichen beginnt.

Wenn Sie dieses spezielle Verhalten nicht wünschen, verwenden Sie morestring=[d]".

Sie können auch eine neue Sprache definieren, die auf Matlab basiert und den neuen Zeichenfolgentyp hinzugefügt hat:

\lstdefinelanguage{MyMatlab}{
  language=Matlab,
  morestring=[m]"
}

Die Verwendung dieser neuen Sprache in Ihrem Eintrag führt zum gewünschten Ergebnis:

Bildbeschreibung hier eingeben

verwandte Informationen