\documentclass[UTF8]{ctexart}
\usepackage{listings}
\usepackage{xcolor}
\begin{document}
\lstset{language=Matlab,numbers=left,frame=shadowbox,
escapeinside='', breaklines=true}
\begin{lstlisting}
mask=abs(bestline*[data ones(size(data,1),1)]')<sigma;
hold on;
for i=1:length(mask)
if mask(i)
stem(data(i,1),data(i,2),'fill');
end
end
xAxis = 1:6;
yAxis = (-bestline(1)*xAxis - bestline(3) )/bestline(2);
plot(xAxis, yAxis,'r-','LineWidth',2);
\end{lstlisting}
\end{document}
答案1
escapeinside=''
在正常模式下排版所有包含在一对 中的文本'
,其中换行符被忽略。如您所见,您有很多不匹配的'
。删除escapeinside
可以消除问题。我还做了一些视觉增强。
注意:你可能需要看看matlab-prettifier
。
\documentclass[UTF8]{ctexart}
\usepackage{listings}
\usepackage{xcolor}
\begin{document}
\lstset{
language=Matlab,
numbers=left,
frame=shadowbox,
%escapeinside='',
breaklines=true,
basicstyle=\small\ttfamily,
keywordstyle=\color{red!80!black}
}
\begin{lstlisting}
mask = abs(bestline*[data ones(size(data,1),1)]')<sigma;
hold on;
for i=1:length(mask)
if mask(i)
stem(data(i,1),data(i,2),'fill');
end
end
xAxis = 1:6;
yAxis = (-bestline(1)*xAxis - bestline(3))/bestline(2);
plot(xAxis, yAxis,'r-','LineWidth',2);
\end{lstlisting}
\end{document}