我正在尝试使用列表包将 MatLab 代码包含到我的文档中,但似乎字符串解释不正确。
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}
结果:
是否可以添加"
到同一个列表'
中?
答案1
Matlab 语言定义'
默认只定义了字符串分隔符。但您也可以"
通过在清单的选项中添加以下行来创建一个:
morestring=[m]"
m
是 Matlab 代码的特殊分隔符类型,定义为
[...] 一种用于 Ada 和 Matlab 以及其他语言的特殊类型,其中字符串分隔符也用于其他目的。它相当于
d
,但字符串不是以字母、右括号、右方括号或其他字符开头。
如果您不想要那种特殊行为,请使用morestring=[d]"
。
您还可以定义一种基于 Matlab 的新语言并添加新的字符串类型:
\lstdefinelanguage{MyMatlab}{
language=Matlab,
morestring=[m]"
}
在列表中使用该新语言可获得所需的输出: