我正在尝试在我的 tex 文档中插入一个 matlab 代码文件,listings
但是输出很混乱,因为我%
在字符串中使用了fprintf
一个注释字符。
在行中fprintf("ess = %.2f%%\n", ess);
,一旦%
读到,其后的所有内容(直到行的)都被视为注释。
以下是 MWE:
\documentclass[english]{article}
\usepackage{color}
\usepackage{listings}
\definecolor{mycomment}{rgb}{0.63,0.63,0.65}
\definecolor{mygray}{rgb}{0.02,0.68,0.72}
\definecolor{mymauve}{rgb}{0.77,0.64,0.2}
\definecolor{mykw}{rgb}{0, 0.6, 0.87}
\definecolor{myblack}{rgb}{0.22,0.23,0.26}
\definecolor{myred}{rgb}{0.84,0.15,0.33}
\definecolor{mynumber}{rgb}{0.81,0.2,0.75}
\definecolor{row_hl}{rgb}{0.72,0.93,0.99}
\lstset{
language=Matlab,
backgroundcolor={\color{white}},
basicstyle={\footnotesize\ttfamily},
breakatwhitespace=false,
breaklines=true,
captionpos=b,
commentstyle={\color{mycomment}\small},
deletekeywords={...},
escapeinside={"*}{*")},
extendedchars=true,
firstnumber=1,
frame=tb,
keepspaces=true,
keywordstyle={\color{mykw}},
morekeywords={tf,step,stepinfo,damp,factorial,poissrnd,normpdf,normcdf},
numbers=left,
numbersep=5pt,
numberstyle={\tiny\color{mygray}},
rulecolor={\color{black}},
showspaces=false,
showstringspaces=false,
showtabs=false,
stepnumber=1,
stringstyle={\color{mymauve}},
tabsize=2,
title={\lstname}
}
\begin{document}
% \lstinputlisting[caption={Matlab code.},label={lst:matlab-code}]{mod_sys_code.m}
\begin{lstlisting}
fprintf("ess = %.2f%%\n", ess);
fprintf("ess = should look like this\n");
\end{lstlisting}
\end{document}
有办法解决这个问题吗?
答案1
答案2
matlab-prettifier
如果将'
其用作字符串分隔符,则该包可以工作。
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[numbered,framed]{matlab-prettifier}
\lstset{
style = Matlab-editor,
basicstyle = \mlttfamily,
}
\begin{document}
% \lstinputlisting[caption={Matlab code.},label={lst:matlab-code}]{mod_sys_code.m}
\begin{lstlisting}
fprintf('ess = %.2f%%\n', ess);
fprintf('ess = should look like this\n');
\end{lstlisting}
\end{document}
我不知道是否有选项可以让它对"
分隔符执行相同的操作...您可以尝试在 GitHub 上提问。