lstlistings で最初の行の行番号をスキップする方法

lstlistings で最初の行の行番号をスキップする方法

lstlistings について助けが必要です。次で始まるコードがあります:

INPUT: c, m
rest of code...

最初の行に数直線が表示されないようにします。これが私の lstset です:

\lstset{language=Java,
 numberstyle=\scriptsize,
 numbers=left,
 numbersep=5pt,
 numberblanklines=false,
 captionpos=b,
 basicstyle=\small\sffamily,
        columns=fullflexible,
        xleftmargin=16pt,
        frame=leftline,
 breaklines=true,
 tabsize=2,
 prebreak=\raisebox{0ex}[0ex][0ex]{\ensuremath{\hookleftarrow}},
        escapeinside={$}{$}
}

誰か助けてくれませんか?

答え1

その間listingsキー値numberfirstline(falseデフォルトでは に設定) を提供しますが、最初の行に番号を付けないという約束は果たされていないようです。そのため、次の回避策があります。0 から「番号付け」を開始し、番号を印刷するときに条件を使用して印刷するかどうかを確認します。

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

\documentclass{article}
\usepackage{listings}
\lstset{
  basicstyle=\ttfamily,
  numberstyle=\small\ttfamily,
  %numberfirstline=false,
  firstnumber=0,
  numbers=left
}
\makeatletter
\def\lst@PlaceNumber{\ifnum\value{lstnumber}=0\else
  \llap{\normalfont\lst@numberstyle{\thelstnumber}\kern\lst@numbersep}\fi}
\makeatother
\begin{document}
\begin{lstlisting}
INPUT: c, m
rest of code...
\end{lstlisting}
\end{document}

数値を右側に配置する場合( を使用numbers=right)、 を次のように再定義する\lst@PlaceNumber必要があります。

\makeatletter
\def\lst@PlaceNumber{\ifnum\value{lstnumber}=0\else
  \rlap{\normalfont\kern\linewidth \kern\lst@numbersep\lst@numberstyle{\thelstnumber}}\fi}
\makeatother

これらの再定義は\lst@PlaceNumberオプションを設定しますnumbers

答え2

firstline=2を追加します\lstset

\lstset{language=Java,
 firstline=2,
 numberstyle=\scriptsize,
 numbers=left,
 numbersep=5pt,
 numberblanklines=false,
 captionpos=b,
 basicstyle=\small\sffamily,
        columns=fullflexible,
        xleftmargin=16pt,
        frame=leftline,
 breaklines=true,
 tabsize=2,
 prebreak=\raisebox{0ex}[0ex][0ex]{\ensuremath{\hookleftarrow}},
        escapeinside={$}{$}
}

関連情報