如何使用 \labelformat 进行 lstlisting(带有 listing 包),以便 \vref(varioref 包中的)给出“第 x 页的列表 1.1”?

如何使用 \labelformat 进行 lstlisting(带有 listing 包),以便 \vref(varioref 包中的)给出“第 x 页的列表 1.1”?

我想通过 \vref(来自 varioref)引用类似于图形的列表(使用 listings 包)。所以我在寻找 \labelformat{figure}{Figure~#1} 的类似物。相应计数器的名称是什么,即 \labelformat{???}{Listing~#1} 中的问号必须用什么代替?

我尝试了以下和其他一些方法。但我只得到了“请参阅 1.1”,而不是“请参阅清单 1.1”。

\usepackage{listings}
\usepackage[nospace]{varioref}
\labelformat{lstlisting}{Listing #1}

\begin{document}
\chapter{Chapter 1}

\begin{lstlisting}[caption=A, label=lst:a]
  some code
\end{lstlisting}

Pls see \vref*{lst:a}


\end{document}

答案1

由于未知原因,列表仅在 begindocument 钩子中定义其计数器。因此您必须稍后进行更改:

\documentclass{book}
\usepackage{listings}
\usepackage[nospace]{varioref}
\AddToHook{begindocument}{\labelformat{lstlisting}{Listing #1}}
\begin{document}
\chapter{Chapter 1}

\begin{lstlisting}[caption=A, label=lst:a]
  some code
\end{lstlisting}

Pls see \vref*{lst:a}

\end{document}

在此处输入图片描述

相关内容