如何在 Lyx 中的程序列表中对行号 1,5,10,15,20,25...

如何在 Lyx 中的程序列表中对行号 1,5,10,15,20,25...

我基本上希望每 5 行都编号,但希望保持 5、10、15、20……,因为这对读者来说似乎很直观。这意味着 1、5、10、15……第一个间隙为 4,所有后续间隙均为 5。有办法做到这一点吗?谢谢!

答案1

firstnumber这可以通过和的组合来实现numberfirstline

\documentclass{article}
\usepackage{listings}
\lstset{numbers=left,stepnumber=5,firstnumber=1,numberfirstline}
\begin{document}
\begin{lstlisting}
a
b
c
d
A
B
C
D
E
a
b
c
d
e
Q
\end{lstlisting}
\end{document}

产量:

列表

[我假设您正在使用该listings软件包。]

答案2

当您使用 键时 stepnumber=5,数字会以 5 为步长递增。但是,在这种情况下,您的数字将变成 5、10……而不是您要求的顺序。因此,您必须哄骗 LaTeX 从第一行开始您的数字。numberfirstline,firstnumber=1为此,您可以添加 和 。

根据相关文献,

numberfirstline= true|false默认值: false

每个列表的第一行都会被编号(如果有数字的话),即使行号不能被步数整除。

firstnumber= auto|last| number默认值:auto

auto让包选择第一个数字:新列表从数字一开始,命名列表继续最近的同名列表(见下文),独立文件以与第一个输入行相对应的数字开始。last 继续最近列表的编号,number 将其设置为数字。

无论如何,这是您的 MWE。

\documentclass{article}

\usepackage{listings}

\begin{document}

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

\begin{lstlisting}
#include <stdio.h>

int main()
{
  int a;
  printf("Enter an integer\n");
  scanf("%d", &a);
  printf("Integer that you have entered is %d\n", a);
  return 0;
}
\end{lstlisting}

\end{document}

输出如下,

在此处输入图片描述


我不确定您使用的是哪种语言,也许您也想使用, basicstyle=\ttfamily以使输出更像程序。(如果您还没有使用它的话。)

相关内容