我想根据某些规则更改列表的编号:
- 第 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
使用以下方法执行(可扩展)int
eger 计算/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
}