我正在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}}
如果你喜欢的话。
我希望这有帮助。