![為什麼在帶有列表的 MatLab 程式碼中字串解釋錯誤](https://rvso.com/image/399825/%E7%82%BA%E4%BB%80%E9%BA%BC%E5%9C%A8%E5%B8%B6%E6%9C%89%E5%88%97%E8%A1%A8%E7%9A%84%20MatLab%20%E7%A8%8B%E5%BC%8F%E7%A2%BC%E4%B8%AD%E5%AD%97%E4%B8%B2%E8%A7%A3%E9%87%8B%E9%8C%AF%E8%AA%A4.png)
我試圖使用清單包將 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]"
}
在清單中使用該新語言可以得到所需的輸出: