![如何解决 lstlisting 部分排版混乱问题](https://linux22.com/image/339465/%E5%A6%82%E4%BD%95%E8%A7%A3%E5%86%B3%20lstlisting%20%E9%83%A8%E5%88%86%E6%8E%92%E7%89%88%E6%B7%B7%E4%B9%B1%E9%97%AE%E9%A2%98.png)
\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}