因此,我尝试使用 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}