私は次のようなラテックスコードを持っています:
\usepackage{listings}
\lstset{
breaklines = true,
numbers = left,
stepnumber = 5,
}
\begin{lstlisting}
for (int i = 0, j = 0, k = 1; i <= 10, j < foo; i++, j *= factor, k--) { // a comment here
% something code here ...
}
\end{lstlisting}
用紙が狭すぎるため、forループの長い行が中央のどこかで自動的に壊れます。それは私が望んでいることです。さもなければ、紙の終わりに線が消えてしまいます。しかし今、私の質問は、この線が壊れていることをマークまたは示す方法があるかどうかです。それ以外の場合は、新しい行が作成されたように見えます。
そのようなものが私が欲しいものです(行番号で、矢印に注意してください):
10 for (int i = 0, j = 0, k = 1; i <= 10, j < foo;
↳ i++, j *= factor, k--) { // a comment here
11 % something code here ...
どうやらこれはprebreak
/postbreak
オプションで達成できます。 そのCTANページ からリンクされているlistings
パッケージのドキュメントを参照してください(PDFの33ページの下部と34ページの上部です)。
編集: リストパッケージのマニュアル への直接リンク。また、私はここで関連するビットを再現できると思います-だからここに行きます:
prebreak=<tokens> (default {})
postbreak=<tokens> (default {})
<tokens>
は、現在の行の終わり、次の(壊れた部分の)行の先頭にそれぞれ表示されます。内部的には
\\discretionary
を使用するため、動的スペース(特にスペース)を使用しないでください。ただし、\\space
は<tokens>
内で使用されるように再定義されています。
編集2:改行マーカーの配置については、質問で提供されている例の外観に近いものを、breakindent
を0pt
に設定し、breakautoindent
をfalse
に設定し、マーカーをたとえば、 \\space
。
たとえば、改行が通常開始されるニースの太字マーカータイプセットには、postbreak={\textbf{marker}\\space\\space\\space\\space}
を使用し、次に4つのスペース、次に破線の残りの内容を使用します。これらのオプションは、prebreak
'マニュアルのpostbreak
/listings
の直後に記載されています。 :-)
次のようにリストを構成します。
\lstset{prebreak=\raisebox{0ex}[0ex][0ex]
{\ensuremath{\rhookswarrow}}}
\lstset{postbreak=\raisebox{0ex}[0ex][0ex]
{\ensuremath{\rcurvearrowse\space}}}
\lstset{breaklines=true, breakatwhitespace=true}
\lstset{numbers=left, numberstyle=\scriptsize}
ドキュメントのソースコードの例:
\begin{lstlisting}[language=C++, numbers=left, linewidth=5.1cm]
if (line.length() > line.max_length())
{
line.wrap();
}
\end{lstlisting}
結果の例:
注:\usepackage{MnSymbol}
および\rhookswarrow
を使用するには、\rcurvearrowse
が必要です。余分な依存関係を防ぐために、デフォルトのパッケージに含まれている\hookrightarrow
と\hookleftarrow
を使用できます。
出典: http://www.bollchen.de/blog/2011/04/good-looking-line-breaks-with-the-listings-package/ 。詳細な説明については、こちらをお読みください。また pdf 。