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 am trying to use the cleveref package.

I have the following counters defined (hopefully this is the right way to do it!)

\newtheorem{thm}{Theorem}[section]
\newtheorem{lemma}[thm]{Lemma}
\newtheorem{cor}[thm]{Corollary}

This works as I would like (i.e. Theorem 1.1, Corollary 1.2, Lemma 1.3, etc.)

My problem is \cref always returns Theorem 1.2, Theorem 1.3. I

Perhaps this is not right? (In my preamble)

\crefname{thm}{theorem}{theorem's}
\crefname{lemma}{lemma}{lemma's}
share|improve this question

1 Answer 1

up vote 4 down vote accepted

The behaviour you describe comes from the standard LaTeX \newtheorem command; the problem can be solved by using the amsthm or ntheorem packages:

\documentclass{article}
\usepackage{amsthm}
\usepackage{cleveref}

\newtheorem{thm}{Theorem}[section]
\newtheorem{lemma}[thm]{Lemma}
\newtheorem{cor}[thm]{Corollary}

\begin{document}

\begin{thm}\label{thm:test}
test
\end{thm}

\begin{lemma}\label{lem:test}
test
\end{lemma}

As shown in \cref{thm:test} and \cref{lem:test}

\end{document}

The \newtheorem commands have to come after the loading of cleveref.

By the way, the plural forms of theorem and lemma don't use an apostrophe, so you should use

\crefname{thm}{theorem}{theorems}
\crefname{lemma}{lemma}{lemmas}
share|improve this answer
    
thanks, I agree it works with what you have posted! Two strange things - (1) I have amsthm package loaded already and (2) I need to use \crefname, whereas it doesn't require you to? (I have split the file across multiple documents with \input{foo1.tex} if that makes a difference) –  Qwirk May 26 '11 at 12:08
    
@Qwirk: using subsidiary files and \input, it's necessary to use the \crefname commands as you did. Do not use the .tex extension in the argument of \input: use \input{foo1} instead of \input{foo1.tex}. Delete all auxiliary files (with extension .aux) and compile again. If your problem presists, please add to your question a minimal working example illustrating the problem. –  Gonzalo Medina May 26 '11 at 14:00
1  
Thank you. I had to move the newtheorem definitions to after the cleverref package was loaded! –  Qwirk May 27 '11 at 1:02
    
After wasting an hour - let me repeat @Qwirk's remark. The definitions of the \newtheorem's have to come after the loading of cleveref! –  Dror Aug 8 '13 at 15:12
    
@Dror isn't that what my code shows? :-) –  Gonzalo Medina Aug 8 '13 at 15:16

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.