I use

\begin{lemma} \label{aaa} ... \end{lemma}
\begin{theorem} \label{bbb} ... \end{theorem}

and many other similar kinds in the same document.

When I cross-reference those lemmas and theorems somewhere in the manuscript, I don't remember if I named it a lemma or a theorem, but I perhaps remember the label name. When I just \ref{aaa}, it only gives the number; so I have to put something like Lemma \ref{aaa} or Theorem \ref{bbb}. How can I print "Lemma 1" when it is a lemma, and "Theorem 2", when it is a theorem, without explicitly typing "Lemma" and "Theorem"?

  • 1
    I find RefTeX mightily useful, with some combination of keys it will bring a list of choices to choose from, and it will produce the \ref{aaa} automatically. Too bad not many other software provides this function. Mar 2, 2012 at 6:54
  • I would advise you to name your labels using prefixes like \label{lem:lemma} or \label{theo:theorem} or similar.
    – basseur
    Nov 30, 2013 at 11:47

1 Answer 1


hyperref's \autoref function does this for you. It's neat. I believe there's also ntheorem's \thref and the theoremref package. And finally, there is the cleveref package.

To get custom names with hyperref you need to add \newcommand{\xxxautorefname}{Xxx}, e.g.:

  • 4
    \autoref doesn't work out of the box on custom defined theorems. theoremref doesn't seem to work on figures.
    – Turion
    Jul 22, 2016 at 9:56

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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