更改列表编号

更改列表编号

我想根据某些规则更改列表的编号:

  • 第 10 行:无号码
  • 第11行及以后:该行对应的数字+5

因此显示的数字应该是:1、2、3、4、5、6、7、8、9、16、17、18 等。

列表的内容是从单独的文件中获取的。

到目前为止,我正在用if语句尝试这一点,但它不起作用:

\renewcommand\thelstnumber{%
\ifnum\value{lstnumber}=10  \else \ifnum\value{lstnumber}>10 \arabic{lstnumber + 5} \else\arabic{lstnumber}\fi\fi

我怎样才能做到这一点?

答案1

您的代码的主要问题是您无法在\arabic本机执行算术计算。为了易于使用,请使用xfp使用以下方法执行(可扩展)integer 计算/eval评估\inteval

在此处输入图片描述

\documentclass{article}

\usepackage{listings,xfp}

\renewcommand\thelstnumber{%
  \ifnum\value{lstnumber}=10
  \else
    \ifnum\value{lstnumber}>10
      \inteval{\value{lstnumber} + 5}%
    \else
      \arabic{lstnumber}%
    \fi
  \fi
}

\begin{document}

\begin{lstlisting}[numbers = left]
Line A
Line B
Line C
Line D
Line E
Line F
Line G
Line H
Line I
Line J
Line K
Line L
Line M
Line N
Line O
Line P
Line Q
\end{lstlisting}

\end{document}

如果因任何原因无法使用xfp,你可以使用

\renewcommand\thelstnumber{%
  \ifnum\value{lstnumber}=10
  \else
    \ifnum\value{lstnumber}>10
      \the\numexpr\value{lstnumber} + 5\relax%
    \else
      \arabic{lstnumber}%
    \fi
  \fi
}

相关内容