我正在使用 lstlisting 编写一个算法:
\lstset{language=C++}
\begin{lstlisting}[frame=single,caption=Algorithme de la méthode "HOG+SVM"]
HOGDescriptor hog;\\
hog.setSVMDetector(HOGDescriptor::getDefaultPeopleDetector());\\
while(1)
{
Mat image=imread("image.jpg");
vecor<Rect> detected_persons;
hog.detectMultiScale(image,detected_persons, 0, Size(8,8), Size(32,32), 1.05, 2);
for(int i=0;i<detected_persons.size();i++)
{
rectangle(image, detected_persons[i], cv::Scalar(0,255,0),1,8,0);
}
imshow("image",image);
}
\end{lstlisting}
但是我得到了这样的算法的输出: 展示如何修复?
答案1
正如您所注意到的,长队的环境lstlisting
并不总是看起来不错。有其他选择(例如minted
),但您可以调整lstlisting
输出以使其看起来更好。
例如,可以将基本尺寸设置为小,可以换行(并标明换行),缩进变小。以下 MWE 是从listings: 在加载的文件中设置 tabsize 并使用空格进行缩进不起作用和 列表换行并手动删除顶层缩进。
\documentclass{article}
\usepackage{amsmath}
\usepackage{xcolor}
\usepackage{listings}
\lstset{
language=C++,
basicstyle=\small, % font size
breaklines=true, % line wrap
postbreak=\raisebox{0ex}[0ex][0ex]{\ensuremath{\color{red}\hookrightarrow\space}}, % arrow on wrapped lines
literate={\ \ }{{\ }}1 % adjust tab size
}
\begin{document}
\begin{lstlisting}[frame=single,caption=Algorithme de la m\'{e}thode "HOG+SVM"]
HOGDescriptor hog;
hog.setSVMDetector(HOGDescriptor::getDefaultPeopleDetector());
while(1)
{
Mat image=imread("image.jpg");
vecor<Rect> detected_persons;
hog.detectMultiScale(image,detected_persons, 0, Size(8,8), Size(32,32), 1.05, 2);
for(int i=0;i<detected_persons.size();i++)
{
rectangle(image, detected_persons[i], cv::Scalar(0,255,0),1,8,0);
}
imshow("image",image);
}
\end{lstlisting}
\end{document}