如何解决 lstlisting 部分排版混乱问题

如何解决 lstlisting 部分排版混乱问题
\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}

在此处输入图片描述

相关内容