lstlisting を使用してアルゴリズムをフォーマットする方法

lstlisting を使用してアルゴリズムをフォーマットする方法

私は 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ご存知のとおり、長い行の場合、環境の見栄えが必ずしも良くなるわけではありません。代替手段 (例: ) もありますがmintedlstlisting出力を調整して見栄えを良くすることができます。

例えば、基本サイズを小さく設定したり、行を折り返したり(折り返し表示したり)、インデントを小さくしたりできます。次のMWEは、リスト: 読み込まれたファイルでインデントにスペースを使用しているときにタブサイズを設定すると機能しませんそして lstlisting 行折り返し最上位のインデントを手動で削除します。

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

結果: ここに画像の説明を入力してください

関連情報