A conference I publish at has a strange requirement. In the first X pages (X is not important here), we are required to provide an extended abstract of the work, and then after that, we must attach a complete version of the paper with no page limit (the reason is so that reviewers can read the first X pages, and only peruse the rest if they see fit).

One solution is to prepare the full version, make a PDF, prepare the short version, and then use pdfpages to merge the two pdfs together. This is fine, except that if in the process of creating the short version I decided to remove a lemma, then the lemma numbers are not consistent between the short and long versions.

So my question is this: Is there any way to create the desired "double" version so that lemma numbers are consistent between short and long versions ?

We can assume that the lemmas/theorems in the short version are a subset of those in the long version for simplicity. I should note that "lemma" is a set denoting "lemma, theorem, conjecture, corollary, definition" and so on, so all such numberings should remain consistent.

  • Maybe this question will help: How do I repeat a theorem number?
    – Alan Munn
    Jul 16, 2011 at 5:30
  • I looked at that one, and indeed the methods proposed there are useful for a few such instances. But to do this for every lemma/theorem/whatever in a whole document seemed way too much work. I'm hoping for something more elegant :)
    – Suresh
    Jul 16, 2011 at 5:33
  • 3
    Instinctively I would think one could add an optional command to each numbered environment. The optional argument is meant to take a label (or counter) and set the numbered environment's counter to that of the optional argument. Then use the xr package in order to reference an external document - the long-version of your paper in this case. Consequently feed the long-version's labels to each of the short-version environments.
    – Werner
    Jul 16, 2011 at 6:17
  • 1
    What a preposterous requirement by the way.
    – percusse
    Aug 15, 2011 at 17:10

1 Answer 1


Here is a proposal to solving your problem. The short-version of your article would have the same environments as in the long-version, with an additional optional argument. The optional argument is the long-version label (referenced as an external file via the xr package). This argument is assigned to the short-version environment counter to correct for removal of similar previous environments.

Consider, for example, this is your long-version article (called long-article.tex, say):

\newtheorem{theorem}{Theorem}% Theorems
\newtheorem{lemma}{Lemma}% Lemmas
\newtheorem{proposition}{Proposition}% Propositions
  \section{Introduction} \lipsum[1]
    \begin{theorem} \lipsum[2] \label{thm:first} \end{theorem}
    \begin{lemma} \lipsum[3] \label{lem:first} \end{lemma}
  \section{Definitions} \lipsum[4]
    \begin{theorem} \lipsum[5] \label{thm:second} \end{theorem}
    \begin{proposition} \lipsum[6] \label{pro:first} \end{proposition}
  \section{Methodology} \lipsum[7]
    \begin{theorem} \lipsum[8] \label{thm:third} \end{theorem}
    \begin{proposition} \lipsum[9] \label{pro:second} \end{proposition}
    \begin{lemma} \lipsum[11] \label{lem:second} \end{lemma}
  \section{Conclusions} \lipsum[12]
    \begin{theorem} \lipsum[13] \label{thm:fourth} \end{theorem}

Now you create a short-version article (called short-article.tex, say):


\newtheorem{shorttheorem}{Theorem}% Theorems
\newtheorem{shortlemma}{Lemma}% Lemmas
\newtheorem{shortproposition}{Proposition}% Propositions
\externaldocument[long-]{long-article}% Long-version article

% (SHORT) Theorem definitions
\newenvironment{theorem}[1][]% Short-version theorems
    \addtocounter{shorttheorem}{-1} \vspace{-\baselineskip}}%
\newenvironment{lemma}[1][]% Short-version lemmas
    \addtocounter{shortlemma}{-1} \vspace{-\baselineskip}}%
\newenvironment{proposition}[1][]% Short-version propositions
    \addtocounter{shortproposition}{-1} \vspace{-\baselineskip}}%
  \section{Introduction} \lipsum[1]
    \begin{theorem} \lipsum[2] \label{thm:first} \end{theorem}
    %\begin{lemma} \lipsum[3] \label{lem:first} \end{lemma}
  \section{Definitions} \lipsum[4]
    \begin{theorem} \lipsum[5] \label{thm:second} \end{theorem}
    \begin{proposition} \lipsum[6] \label{pro:first} \end{proposition}
  \section{Methodology} \lipsum[7]
    %\begin{theorem} \lipsum[8] \label{thm:third} \end{theorem}
    \begin{proposition} \lipsum[9] \label{pro:second} \end{proposition}
    \begin{lemma}[long-lem:second] \lipsum[11] \label{lem:second} \end{lemma}
  \section{Conclusions} \lipsum[12]
    \begin{theorem}[long-thm:fourth] \lipsum[13] \label{thm:fourth} \end{theorem}

You only need to add an optional reference argument to those environments following a removed one ('lemma' and 'theorem' in the above example).

I am not sure why additional (vertical) space was added after executing the \setcounter and \addtocounter commands. However, that's why a negative \baselineskip was added to correct for this behaviour.

  • 2
    Nice ! I wonder if there's a way to convert this solution to a package: maybe call it stupid-conference :)
    – Suresh
    Aug 15, 2011 at 18:43

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.