Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

I have a problem using \intertext together with \vref when hyperref is also used. Consider the following minimal example:

\documentclass{article}
  \usepackage{amsmath, varioref}
  \usepackage{hyperref}
\begin{document}
  \begin{equation}
    \label{kinetic-energy}
    E = MC^2
  \end{equation}
  \begin{gather}
      A \\
  \intertext{ and therefore due to \vref{kinetic-energy}: }
      B
  \end{gather}
\end{document}

which yields an error message of the pattern:

! Package amsmath Error: Multiple \label's: label '1@xvr' will be lost.

at the end of the gather environment.

If I either comment out hyperref, OR use \ref instead of \vref the example works fine. I am using TeXLive 2011.

Have I encountered a package bug/conflict, or is there some remedial I have missed?


UPDATE: I tried the solution of Mico, and it works except for a slight incompatibility between cleveref and refstyle (sic); it misses a space between the equation number and the page reference. Adding this to the preamble after including cleveref seems to fix the problem:

\makeatletter
\let\withoutspacecref@@vpageref\cref@@vpageref
\renewcommand\cref@@vpageref{\space\withoutspacecref@@vpageref}
\makeatother
share|improve this question
    
varioref and hyperref are not fully compatible, so some bad interaction is to be expected. –  egreg Apr 12 '12 at 9:17
    
@RolKau: Please see my edit based on your suggested edit. –  Marco Daniel Apr 30 '12 at 9:39
add comment

1 Answer 1

up vote 12 down vote accepted

You have indeed discovered a (mild) incompatibility between the varioref and hyperref packages. A solution to this problem is to load yet one more cross-referencing package, viz., the cleveref package. This approach would appear to work because cleveref modifies some of varioref's internals in order to make varioref and cleveref cooperate better; in the process, varioref and hyperref also become mutually (more) compatible. Note that in the MWE below, the cross-referencing command that's executed is still \vref (and not, say, \cref).

Incidentally, the cleveref package should be loaded later than all other packages that perform cross-referencing tasks. In fact, it's highly advisable to load cleveref last, i.e., after all other packages have been loaded, simply because one may not know for sure whether or not the other packages might perform certain tasks -- however trivial they may seem at first -- that are related to LaTeX's cross-referencing mechanisms.

\documentclass{article}
  \usepackage{amsmath, varioref}
  \usepackage[colorlinks]{hyperref} % added 'colorlinks' option to make output 
                                    % show up in attached image file
  \usepackage{cleveref}  % new instruction
\begin{document}
  \begin{equation}
    \label{kinetic-energy}
    E = mc^2
  \end{equation}
  \begin{gather}
      A \\
  \intertext{and therefore due to \vref{kinetic-energy}: }
      B
  \end{gather}
\end{document}

enter image description here

share|improve this answer
    
You Sir, are a gentleman and a scholar! ;-) –  RolKau Apr 13 '12 at 7:27
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.