为了我自己的方便,我定义了各种标签类型,例如“sec:”,“cha:”,“fig:”,“lst:”等等。
现在我想指出我的某个列表中的某一行代码。该列表不需要标签,但我想在其他页面上放置“(参见第 X 页)”,特别是因为列表可能会被自然分页符分割。
在代码行的末尾我写了$\label{lbl:mySpecialLineOfCode}$
。 在我想要放置页码的位置\pageref{lbl:mySpecialLineOfCode}
,它会输出正确的页码。
出于实验原因,我输入\ref{lbl:mySpecialLineOfCode}
了 14,它打印了出来。我不明白 Latex 如何确定这个数字。标签既没有放在第 14 章,也没有放在第 X.14 节,也不是第 14 个标签或第 14 个列表(我在该位置之前有更大的数字)。
我唯一担心的是,它占据了一个“位置”/“数字”,文档开头的 listofwhatever 会在下一行从 13 变为 15。那太糟糕了。我最好事先知道这样的事情可能会发生(我不能说它会发生 - 虽然就我的情况而言)。
有人可以给我提示吗?
答案1
LaTeX 的\label
-\ref
系统默认的工作方式如下:
- 随着问题出现
\label{<lab>}
,LaTeX 存储了最后更新计数器使用\refstepcounter
以及文件中关联的页码.aux
。\label
实际使用\@currentlabel
,由 设定\refstepcounter
。此步骤仅在页面发货时发生,以确保正确的页码与标签关联; - 问题检索在()
\ref
期间写入的计数器,同时检索随附的页码。\label
\@currentlabel
\pageref
listings
对每个列表都有一个计数器lstlisting
(计数器lstlisting
),而且对特定列表的每一行也都有一个计数器(计数器lst@lineno
)。
如果您希望引用清单中的计数器,请将您的 放在\label
清单后面\caption
。如果您希望引用清单中某一行的计数器,请将您的 放在\label
相应的行上。