I've got a large document that LaTeX always wants to re-run. Using the technique described at
How to diagnose a permanent "Label(s) may have changed" warning?, I traced the problem to some \vref
s. But I expected the problematic \vref
s to be flagged for me by the varioref
package. The documentation for package varioref
states,
Defining commands like the ones described above poses some interesting problems. Suppose, for example, that a generated text like ‘on the next page’ gets broken across pages. If this happens it is very difficult to find an acceptable solution and in fact can even result in a document that will always change from one state to an- other (i.e., inserting one string, finding that this is wrong, inserting another string on the next run which makes the first string correct again, inserting . . . ). The current implementation of varioref therefore issues an error message whenever the generated text is broken across page boundaries, e.g.,
table 5 on the current hpage break i page
would would result in an error, which needs to be resolved by the user by replacing the
\vref
command with an ordinary\ref
just before the final run. This is not completely satisfactory but in such case no solution really is.
The cleveref
package, which I have (correctly) loaded after varioref
, claims that it implements \vref
correctly. But is cleveref
supposed to replicate this diagnostic capability? I need to figure out whether to report a bug or a feature request, and to what maintainer :-)
I have tried and failed to produce a MWE that has a \vref
in exactly the right place to reproduce the issue.
cleveref
makes some changes to the innards ofvarioref
so that\vref
works "as expected" ifcleveref
is loaded too. (Aside: Loadingcleveref
also resolves some deep-seated conflicts betweenvarioref
andhyperref
.) But "as expected" contains the caveat that page-related labels may change from run to run without ever settling down. It is not the job ofcleveref
-- and the package certainly makes no claim to this effect -- to improve on the jobvarioref
's does and come up with a better page-related algorithm.