lstlistings를 사용하여 첫 번째 줄에서 줄 번호 매기기를 건너뛰는 방법

lstlistings를 사용하여 첫 번째 줄에서 줄 번호 매기기를 건너뛰는 방법

목록 목록에 대한 도움이 필요합니다. 다음으로 시작하는 코드가 있습니다.

INPUT: c, m
rest of code...

나는 첫 번째 줄이 수직선을 보지 않기를 원합니다. 이것은 내 목록 세트입니다.

\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키-값 numberfirstline( false기본적으로 설정됨)을 제공하지만 첫 번째 줄에 번호를 매기지 않는다는 약속을 이행하지 않는 것 같습니다. 따라서 해결 방법은 다음과 같습니다. 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={$}{$}
}

관련 정보