列表:跳过当前行的行号

列表:跳过当前行的行号

因此,我尝试使用 listings 包来显示一些源代码。但是,我希望能够跳过某些行的行号,这样它们就不会收到任何行号,但也不会增加行号。它与此非常相似:抑制列表包中特定行的行号

除了我需要能够抑制第一行。像这样:

\begin{lstlisting}
|\Suppressnumber|First line.|\Reactivatenumber| % ONLY SKIP LINE NUMBER ON THIS LINE!
Second line. % START WITH LINE NUMBER 1 HERE
Third line.
Next line.
Next Line
\end{lstlisting}.

我如何更改这个命令:

\lstset{numbers=left,numberblanklines=false,escapeinside=||}
\let\origthelstnumber\thelstnumber
\makeatletter
\newcommand*\Suppressnumber{%
  \lst@AddToHook{OnNewLine}{%
    \let\thelstnumber\relax%
     \advance\c@lstnumber-\@ne\relax%
    }%
}

\newcommand*\Reactivatenumber{%
  \lst@AddToHook{OnNewLine}{%
   \let\thelstnumber\origthelstnumber%
   \advance\c@lstnumber\@ne\relax}%
}

那么它能像我希望的那样工作吗?

对于有同样问题的人,我目前正在使用解决方案:

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

答案1

\Suppressnumber来自\Reactivatenumber的命令回答您提到的可以使用,不需要更改。您只需\Suppressnumber在之前致电即可\begin{lstlisting}

例子:

\Suppressnumber
\begin{lstlisting}
    First line.|\Reactivatenumber| % NO ON THIS LINE!
    Second line. % START WITH LINE NUMBER 1 HERE
    Third line.
    Next line.
    Next Line
\end{lstlisting}

相关内容