列表标题编号

列表标题编号

我正在listings通过以下\begin命令使用该包:

\begin{lstlisting}[
   language=Python,
   caption={Simple Python Program},
]

这样会生成一个漂亮的代码列表,标题为“清单 1 简单的 Python 程序”。有没有办法更改标题,使其变成“清单 1-1 简单的 Python 程序”,其中 1-1 是节号和子节号的组合?

任何提示都将不胜感激!

答案1

列表与计数器一起打印lstlisting。你可以修改打印方式,并\thesection使用以下方式添加章节编号

\renewcommand{\thelstlisting}{\thesection-\arabic{lstlisting}}

这是一个使用两种不同编号样式展示相同列表的简单示例。将上述代码添加到文档前言中正在加载listings包裹

在此处输入图片描述

\documentclass{article}
\usepackage{listings}% http://ctan.org/pkg/listings
\begin{document}
\section{My section}
\begin{lstlisting}[
   language=Python,
   caption={Simple Python Program}
]
print "Hello, World!"
\end{lstlisting}

\renewcommand{\thelstlisting}{\thesection-\arabic{lstlisting}}

\begin{lstlisting}[
   language=Python,
   caption={Simple Python Program}
]
print "Hello, World!"
\end{lstlisting}
\end{document}

如果您的所有列表都使用language=Python,则可以通过执行全局设置

\lstset{language=Python}

答案2

您还可以在文档序言中使用类似这样的内容:

\usepackage{chngcntr}
\AtBeginDocument{\counterwithin{lstlisting}{section}}

这与以下行为类似:

\renewcommand{\thelstlisting}{\thechapter.\thesection.\arabic{lstlisting}}

但我认为第一种变体更简洁、更灵活。您\AtBeginDocument{\counterwithin{lstlisting}{subsection}}也可以指定。

或者\AtBeginDocument{\counterwithin{lstlisting}{chapter}}如果你喜欢的话。

我希望这有帮助。

相关内容