
Ich schreibe einen Algorithmus mit 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}
Aber mit diesem Algorithmus habe ich folgende Ausgabe erhalten: AnzeigeWie kann man das beheben?
Antwort1
Wie Sie bemerkt haben, sieht die lstlisting
Umgebung bei langen Zeilen nicht immer gut aus. Es gibt Alternativen (z. B. minted
), aber Sie können die lstlisting
Ausgabe anpassen, damit sie besser aussieht.
So kann man beispielsweise die Grundgröße auf klein setzen, Zeilen umbrechen (und als solches kennzeichnen), Einrückungen verkleinern. Das folgende MWE wurde zusammengeflickt ausListings: Tabulatorgröße festlegen und gleichzeitig Leerzeichen für Einrückungen in der geladenen Datei verwenden funktioniert nichtUnd lstlisting Zeilenumbruchund manuelles Entfernen der Einrückung der obersten Ebene.
\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}