在 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
命令时定义。但是直接使用一些内部宏,则永远不会定义,并且您会收到该错误。\vpageref
fancyref
varioref
\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