Cleveref 无法引用列表中的行号

Cleveref 无法引用列表中的行号

考虑以下最小示例:

\documentclass{article}

\usepackage{listings}
\usepackage{cleveref}

% \crefname{lstnumber}{line}{Line}

\begin{document}

% \section{Section}

\begin{lstlisting}[escapechar=@]
Lorem ipsum@\label{lineref}@
\end{lstlisting}

See \cref{lineref}: line~\ref{lineref}.

\end{document}

编译此文档(两次)会产生警告

LaTeX 警告:输入行 16 上标签类型 `` 的 cref 参考格式未定义。

输出为:

??:第 1 行。

如果我取消注释该\section{Section}行,则所有内容都会编译,并且引用结果为

参见第 1 节:第 1 行。

似乎 cleveref 出于某种原因选择了最接近的环境引用,而不是引用行号。请注意,在较长的示例中,该\ref命令始终会生成正确的行号。

我使用的 cleveref 版本不需要手册\crefname{lstnumber}{line}{Line},事实上,取消注释不会改变任何东西。

我的日志文件中的相关信息是:

This is pdfTeX, Version 3.1415926-1.40.10 (TeX Live 2009/Debian) (format=pdflatex 2011.7.11)  21 APR 2012 21:29
...
(/usr/share/texmf-texlive/tex/latex/listings/listings.sty
...
(/usr/share/texmf-texlive/tex/latex/listings/lstmisc.sty
File: lstmisc.sty 2007/02/22 1.4 (Carsten Heinz)
...
(/usr/share/texmf-texlive/tex/latex/listings/listings.cfg
File: listings.cfg 2007/02/22 1.4 listings configuration
...
Package: listings 2007/02/22 1.4 (Carsten Heinz)
...
(/home/cs-students/12abs1/texmf/tex/latex/cleveref/cleveref.sty
Package: cleveref 2012/02/15{} v0.18.4{} Intelligent cross-referencing
Package cleveref Info: `listings' support loaded on input line 2843.
Package cleveref Info: loaded `english' language definitions on input line 6732
...

对于正在发生的事情或如何解决它,您有什么想法吗?

答案1

尝试最新版本 v0.18.5。更新日志显示

修复列表和算法包支持,由于更改为本地而不是全局\cref@currentlabel定义而中断....

从 Gonzalo Medina 的评论来看,这似乎解决了问题,但如果没有,我建议你应该写信给 cleveref 的作者 Toby Cubitt,并提供你的 MWE。他非常乐于助人,很可能会修复错误。

相关内容