Suppose one has a theorem/proof such as:

The following are equivalent:
   \item Statement 1
   \item Statement 2
   \item Statement 3

\begin{proof} (1) $\implies$ (2): Proof if (1) then (2) (2) $\implies$ (3): Proof if (2) then (3) (3) $\implies$ (1): Proof if (3) then (1) \end{proof}

Obviously, hard-coding the the item numbers is a bad idea. One could, I suppose, use an enumeration with custom item labeling but, then again, that would still amount to hard-coding the item numbers. Better, at least somewhat, would be to use the enumerate environment together with automatic item label generation to produce labels of the form $(m) \implies (n)$ (though I don't know how to do this). Perhaps better still would be to not use the enumerate environment at all in the proof but simply use references to proof items, e.g., in pseudo-code

\makeimplies{\ref{ItemLabel1}, \ref{ItemLabel2}} here is proof for if (1) then (2)
Obviously, I don't know how to do this either.

In any event, what are the recommended practices for dealing with this sort of situation?

  • I don't know whether "Best Practices" would be appropriate in terms of this question title.
    – Werner
    Nov 23, 2011 at 20:27

1 Answer 1


I would define the items using the functionality of the enumitem package. This would require you to label the items that you want to reference (using \label) and reference them accordingly using \ref.

In the minimal example below the list of equivalent items are constructed using a label that is formatted as (<arabic#>) with an equivalent referencing output. This is done using the optional arguments to the enumerate environment ([label=..,ref=..]). The command \Implies{<ref1>}{<ref2>} constructs $\text{\ref{<ref1>}}\implies\text{\ref{<ref2>}}$, for consistency and ease-of-use.

enter image description here

\usepackage{enumitem}% http://ctan.org/pkg/enumitem
\usepackage{amsthm}% http://ctan.org/pkg/amsthm
\usepackage{amsmath}% http://ctan.org/pkg/amsmath
\newcommand{\Implies}[2]{$\text{\ref{#1}}\implies\text{\ref{#2}}$}% X => Y
The following are equivalent:
   \item Statement 1 \label{statement1}
   \item Statement 2 \label{statement2}
   \item Statement 3 \label{statement3}

\Implies{statement1}{statement2}: Proof if~\ref{statement1} then~\ref{statement2}.
\Implies{statement2}{statement3}: Proof if~\ref{statement2} then~\ref{statement3}.
\Implies{statement3}{statement1}: Proof if~\ref{statement3} then~\ref{statement1}.

The main approach here is to allow referencing of listed items so you don't have to worry about whether you're changing the appearance and have to subsequently modify your (hard-)coded proof. Additionally, you only need to label those entries you would be referencing. In this case, all statements were labelled.

  • Very nice answer; I've tried this out and it works well. Can one still use the same approach for custom item names in the theorem? That is, if I have item[My Item Name] ..some text.. \label{my_item} can i refer to it with \ref{m_item}? I tried this and it just generated the theorem number, not the custom item name.
    – 3Sphere
    Nov 23, 2011 at 21:19
  • No, once you use the optional argument of \item, no referenced label is set. If you do use \label, it will refer to the previous item that can be referenced; the theorem in this case. All of this is based on the use of the macro \refstepcounter which works with counters and allows referencing. Since you override the numbering, it doesn't work.
    – Werner
    Nov 23, 2011 at 21:24
  • @3Sphere If all you want is to change the counters, say as (a), (b), (c), you can specify \alph in the optional argument of enumerate, where Werner put \arabic. Other choices are \Alph, \roman, and \Roman.
    – egreg
    Nov 23, 2011 at 22:26
  • 1
    Notice that it would be even better to use \newcommand{\Implies}[2]{$\text{\ref{#1}}\implies\text{\ref{#2}}$}, and making the labels in the enumeration upright. Also, I have a habit to differentiate between enumerations of components of alternatives, components of conjunctions and components of equivalences/implications by using (i), 1° and (a) respectively; this way, you see what kind of enumeration it is at a first glance.
    – mbork
    Nov 24, 2011 at 0:20
  • @mbork: Thanks, I incorporated your first suggestion. The second may be user-specific or based on personal preference, so that's left out.
    – Werner
    Nov 24, 2011 at 8:08

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.