So überspringen Sie die Zeilennummerierung in der ersten Zeile mit lstlistings

So überspringen Sie die Zeilennummerierung in der ersten Zeile mit lstlistings

Ich brauche Hilfe bei Listeneinträgen. Ich habe einen Code, der mit Folgendem beginnt:

INPUT: c, m
rest of code...

Ich möchte, dass die erste Zeile nicht die Zahlenreihe anzeigt. Das ist mein Listensatz:

\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={$}{$}
}

Kann mir bitte jemand helfen?

Antwort1

Währendlistingsstellt den Schlüsselwert bereit numberfirstline( falsestandardmäßig auf eingestellt), scheint aber das Versprechen, die erste Zeile nicht zu nummerieren, nicht zu erfüllen. Daher gibt es folgende Problemumgehung: Beginnen Sie mit der „Nummerierung“ bei 0 und prüfen Sie beim Drucken der Nummer, ob sie gedruckt werden soll oder nicht, indem Sie eine Bedingung verwenden.

Bildbeschreibung hier eingeben

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

Wenn die Platzierung der Zahl rechts erfolgt (mit numbers=right), ist die folgende Neudefinition von \lst@PlaceNumbererforderlich:

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

Beachten Sie, dass diese Neudefinitionen \lst@PlaceNumbererfolgen solltennachFestlegen der numbersOption.

Antwort2

Fügen Sie firstline=2hinzu \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={$}{$}
}

verwandte Informationen