使用Latex中的Listings包进行代码行号标记

29

我正在尝试使用listings包插入代码片段,并希望对行进行编号。 但是,根据手册,我只想让每个第五行和第一行编号(编号为(1,5,10,15,...)):

stepnumber=5

使用这个应该就可以了,但是在我的最小示例中(见底部),我得到的行号是1、6、11、16……

也许我曾经误解过手册(以前发生过一次),但我现在毫无头绪。

如果有真正的 LaTeX 大师在场,我想要更多的东西,即每个行号都打印出来,但是每五个换一种粗体/不同风格的数字,而不是:1 2 3 4 5 6 7 8 9 10 11……但由于文档中没有这个内容,我确信它需要一些更深入的 LaTeX/listings 知识。

P.S.:还有一个奇怪的地方,尽管我设置了 "numberfirstline=false",但我仍然得到了行号 1 (即使我没有设置 numberfirstline,应该默认为 false,我也会得到那个行号),这只是为了指出有些问题。

我正在使用 miktex 进行编译,如果这有帮助的话。

提前致谢。

\documentclass{scrreprt}        %[twoside,headings=openright]
%Sourcecode formatting
\usepackage{listings}

\lstset{
         numbers=left,               % Ort der Zeilennummern
         stepnumber=5,               % Abstand zwischen den Zeilennummern       
         numberfirstline=false
 }

\begin{document}
\lstinputlisting{sourcecode/AES/lookupSoftcoded.S} %codefile with 15 lines or so...
\end{document}
1个回答

41

你可以按照以下方法获得所需的编号:

\lstset{
  numbers=left,
  stepnumber=5,    
  firstnumber=1,
  numberfirstline=true
}

实际上那个可行,我从来没想到过,因为之前它也是从1开始计数的。非常感谢。附言:你不会偶然知道如何做更复杂的事情,即所有数字但只有每5个加粗吗? - ted
@ted 对此一无所知,抱歉。 - Fabian Steeg
行号范围超出了我的边距,这能改变吗? - Benny Code
1
如果您使用\lstinputlisting和行范围标记,则此方法无效。有什么想法吗? - Bambino

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接