将清单中的行号计数器增加一个非 1 的值

将清单中的行号计数器增加一个非 1 的值

我正在尝试编写一些代码清单,但我使用的语言指的是以 4 为增量的行号。这类似于 BASIC 中的行号每行增加 10。

我尝试使用选项

  stepnumber=4

但我显然误解了这个选项的用途。

它会跳过指定数量的行,只打印间隔行上的行号。我希望每一行都有一个行号,但每次计数器都会增加一个非一 (1) 的值。使用 Listings 包可以实现这一点吗?或者还有其他解决方案吗?我对 Tex 还比较陌生(即今天才开始使用它),所以请提出任何建议。

答案1

您可以重新定义 \thelstnumber:

\documentclass{article}
\usepackage{listings}
\makeatletter
\renewcommand*\thelstnumber{\the\numexpr 2*\c@lstnumber\relax}
\begin{document}
\begin{lstlisting}[numbers=left]
a
b
c
d
\end{lstlisting}
\end{document}

在此处输入图片描述

答案2

你可以试试

\renewcommand*\thelstnumber{\the\numexpr(\value{lstnumber}-1)*4+1\relax}

数学家协会

\documentclass{article}
\usepackage{listings}

\renewcommand*\thelstnumber{\the\numexpr(\value{lstnumber}-1)*4+1\relax}

\begin{document}
\begin{lstlisting}[numbers=left]
One
Two
Three
Four
\end{lstlisting}
\end{document}

然后给出

1 一

5 二

9 三

十三 四

答案3

如果您只需要简单的逐字样式输出(无语法突出显示),这种verbatimbox方法可能会有效。

编辑为不自动重置块之间的行号(使用xpatch)。

\documentclass{article}
\usepackage{verbatimbox,xpatch}
\xpatchcmd{\verbnobox}{\setcounter}{\addtocounter}{}{}
\begin{document}
\def\vbmode{\makebox[0pt][r]{\scriptsize\the\numexpr4*\value{VerbboxLineNo}\relax\ }}
\begin{verbnobox}[\vbmode]
This
is
a
test
\end{verbnobox}
More text.
\begin{verbnobox}[\vbmode]
This
is
a
test
\end{verbnobox}
\setcounter{VerbboxLineNo}{0}Reset
\begin{verbnobox}[\vbmode]
This
is
a
test
\end{verbnobox}
\end{document}

在此处输入图片描述

相关内容