我需要列表方面的幫助。我有一個以以下開頭的程式碼:
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={$}{$}
}