我如何阻止 matlab-prettifier 认为打印字符串是注释?

我如何阻止 matlab-prettifier 认为打印字符串是注释?

我正在尝试使用 matlab-prettifier 将我的代码放入 Latex 文档中。我使用 \lstinputlisting[style=Matlab-editor]{Trap.m} 执行此操作。

Trap.m(MATLAB 文件)的示例如下

step size = 5
sub_int=100
fprintf("To get an estimation to two decimal places we needed a step size of %f which is %.0f intervals. \n",  step_size, sub_int)

当我运行 matlab-prettifier 时,它假设“%”后面的字符串实际上是注释而不是语句。由于它意味着将浮点数输入到字符串中,因此颜色应该是黑色。我不确定如何纠正这个问题。

我在下面为 Latex 添加了 MWE。

\documentclass{article}
\usepackage{matlab-prettifier}
Text...
\lstinputlisting[style=Matlab-editor]{Trap.m}

输出

答案1

您可以使用单引号代替双引号来包裹字符串

或者您可以定义一些转义字符,并在转义字符内放置“%”。这是一个 MWE。

\documentclass{article}
\usepackage{matlab-prettifier}
\lstset{
escapechar         = `,
    }
\begin{document}
Text...
\lstinputlisting[style=Matlab-editor]{Trap.m}
\end{document}

陷阱

step size = 5
sub_int=100
fprintf('To get an estimation to two decimal places we needed a step size of %f which is %.0f intervals. \n',  step_size, sub_int)
fprintf("To get an estimation to two decimal places we needed a step size of `\%`f which is `\%`.0f intervals. \n",  step_size, sub_int)

输出: 在此处输入图片描述

答案2

尝试:

\lstset{style=Matlab-editor}
\lstset{morestring=[m]"}

\lstinputlisting{filename.m}

它确实应该被添加到样式文件中,也许带有版本选项,以便 2017 年之前有缺陷的代码仍然“正确”地突出显示,但 CTAN 没有列出存储库,所以我不能只发送拉取请求。

相关内容