![如何使列表里的标签编号保持一致?](https://linux22.com/image/355894/%E5%A6%82%E4%BD%95%E4%BD%BF%E5%88%97%E8%A1%A8%E9%87%8C%E7%9A%84%E6%A0%87%E7%AD%BE%E7%BC%96%E5%8F%B7%E4%BF%9D%E6%8C%81%E4%B8%80%E8%87%B4%EF%BC%9F.png)
我已经使用 定义了两种语言\lstdefinelanguag
,然后使用 来设置它们\lstset
。重点是,稍后当我编写一些列表并将它们标记为。
\begin{lstlisting}[language=JavaScript,label={lst:animate}]
\\just some function
\end{lstlisting}
当我使用 引用标签编号时,它们不一致\ref
。我的文档中的第一个和第二个列表都获得值1
。我猜是因为它们是不同的语言。但是,我有来自同一种语言的 3 个列表,它们同样都具有列表值。有什么想法可以让列表值持续增加吗?
答案1
由于您没有提供 MWE,因此只能猜测,但引用的数字是否与列表所在的部分编号一致?为了能够引用列表,需求有标题!你问题中的那个没有标题,所以标签引用了最后被引用的计数器。
\documentclass{article}
\usepackage{listings}
\begin{document}
\section{bla}
\section{bla}
\begin{lstlisting}[label=lst:foo]
foo
\end{lstlisting}
First listing without caption: \ref{lst:foo} -- ups! Section number!
Second listing with caption: \ref{lst:bar} -- this looks right!
\begin{lstlisting}[label=lst:bar,caption=bar]
bar
\end{lstlisting}
\end{document}
标题和其他几个编号的文档元素\refstepcounter{...}
与相应的计数器和标签有关总是指上次执行此操作的计数器\label
。如果列表没有标题,那么这可能是\section
我示例中的标题,也可能是其他标题,具体取决于您的实际文档。这很有意义:如果您引用清单 1那么应该有一个清单 1标记为这样附上标题。否则,您只会让读者感到困惑。