Cómo formatear un algoritmo usando lstlisting

Cómo formatear un algoritmo usando lstlisting

Estoy escribiendo un algoritmo usando 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}

Pero obtuve tal resultado con este algoritmo: mostrar¿Cómo arreglar eso?

Respuesta1

El lstlistingentorno no siempre es agradable para las largas colas, como habrás notado. Hay alternativas (por ejemplo, minted), pero puede ajustar la lstlistingsalida para que se vea mejor.

Por ejemplo, el tamaño básico se puede establecer en pequeño, las líneas se pueden ajustar (e indicar como tales) y la sangría se puede hacer más pequeña. El siguiente MWE ha sido parcheado desdelistados: Establecer el tamaño de tabulación mientras se usan espacios para sangría en el archivo cargado no funcionay ajuste de línea de listadoy eliminar manualmente la sangría de nivel superior.

\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}

Resultado: ingrese la descripción de la imagen aquí

información relacionada