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
キー値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={$}{$}
}