如何使用 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提供键值numberfirstlinefalse默认设置为),但似乎无法兑现不对第一行进行编号的承诺。因此,以下是解决方法:从 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={$}{$}
}

相关内容