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.

Suppose one has a theorem/proof such as:


\begin{theorem}
The following are equivalent:
  \begin{enumerate}
   \item Statement 1
   \item Statement 2
   \item Statement 3
  \end{enumerate}
\end{theorem}

\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?

share|improve this question
    
I don't know whether "Best Practices" would be appropriate in terms of this question title. –  Werner Nov 23 '11 at 20:27
add comment

1 Answer 1

up vote 8 down vote accepted

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

\documentclass{article}
\usepackage{enumitem}% http://ctan.org/pkg/enumitem
\usepackage{amsthm}% http://ctan.org/pkg/amsthm
\usepackage{amsmath}% http://ctan.org/pkg/amsmath
\newtheorem{theorem}{Theorem}
\newcommand{\Implies}[2]{$\text{\ref{#1}}\implies\text{\ref{#2}}$}% X => Y
\begin{document}
\begin{theorem}
The following are equivalent:
  \begin{enumerate}[label=(\arabic*),ref=(\arabic*)]
   \item Statement 1 \label{statement1}
   \item Statement 2 \label{statement2}
   \item Statement 3 \label{statement3}
  \end{enumerate}
\end{theorem}

\begin{proof}
\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}.
\end{proof}
\end{document}​

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.

share|improve this answer
    
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 '11 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 '11 at 21:24
    
I understand; thanks. –  3Sphere Nov 23 '11 at 21:26
    
@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 '11 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 '11 at 0:20
show 3 more comments

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.