Cómo omitir la numeración de líneas en la primera línea con lstlistings

Cómo omitir la numeración de líneas en la primera línea con lstlistings

Necesito ayuda para los listados. Tengo un código que comienza con:

INPUT: c, m
rest of code...

Quiero que la primera línea no vea la recta numérica. Este es mi primer conjunto:

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

Alguien puede ayudarme por favor?

Respuesta1

Mientraslistingsproporciona el valor-clave numberfirstline(establecido falsede forma predeterminada), no parece cumplir la promesa de no numerar la primera línea. Como tal, la siguiente solución es: comience a "numerar" desde 0 y verifique al imprimir el número si debe imprimirse o no usando un condicional.

ingrese la descripción de la imagen aquí

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

Si la ubicación del número está a la derecha (usando ), entonces se requiere numbers=rightla siguiente redefinición de :\lst@PlaceNumber

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

Tenga en cuenta que estas redefiniciones de \lst@PlaceNumberdeberían ocurrirdespuésconfigurando la numbersopción.

Respuesta2

Agregue firstline=2el \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={$}{$}
}

información relacionada