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:
"
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]"
m
ist 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: