在 TeX Live 2019 中使用 fancyref 失败,并出现未定义的控制序列

在 TeX Live 2019 中使用 fancyref 失败,并出现未定义的控制序列

在 2019 年之前的 TeX Live 中,以下代码对我来说运行良好:

\documentclass{article}

\title{TEST}

\usepackage{fancyref}

\begin{document}

\section{Actor}\label{sec:actor}

See \fref{sec:actor}

\end{document}

但是自从更新到 TeX Live 2019 以来,我在尝试构建文档时收到以下错误:

This is pdfTeX, Version 3.14159265-2.6-1.40.20 (TeX Live 2019/Arch Linux) (preloaded format=latex)
 restricted \write18 enabled.
entering extended mode
(./org.tex
LaTeX2e <2019-10-01> patch level 1
(/usr/share/texmf-dist/tex/latex/base/article.cls
Document Class: article 2019/08/27 v1.4j Standard LaTeX document class
(/usr/share/texmf-dist/tex/latex/base/size10.clo))
(/usr/share/texmf-dist/tex/latex/fancyref/fancyref.sty
(/usr/share/texmf-dist/tex/latex/tools/varioref.sty))
No file org.aux.

LaTeX Warning: Reference `sec:actor' on page 1 undefined on input line 11.

! Undefined control sequence.
\@@vpageref ...@vrefhandlespace \vref@maybe@space 
                                                  \else \ifdim \@tempskipa =...
l.11 See \fref{sec:actor}

为了确保它在升级之前可以正常工作,我请一位同事在他的 TeX Live 2018 安装上构建它,它运行良好。我不确定是我误用了软件包fancyref还是 TeX Live 中的一个错误。

答案1

varioref最近更新并\vref@maybe@space添加了此宏。在调用\vref@maybe@space命令时定义。但是直接使用一些内部宏,则永远不会定义,并且您会收到该错误。\vpagereffancyrefvarioref\vref@maybe@space

由于fancyref使用了varioref的内部结构,因此可能需要更新以考虑这些变化。同时,您可以在加载后使用此补丁fancyref

\makeatletter
\renewcommand*{\@fancyref@page@ref}{%
  \let\vref@maybe@space\@empty % <-- Define \vref@maybe@space
  \@ifnextchar[%]
  \@vpageref{\@vpageref[\unskip]}}%
\makeatother

相关内容