11

I am trying to use the same numbering for theorems, propositions, definitions, etc. This is normally easily be solved by using amsmath and defining these environments and using the same counter:

\newtheorem{theorem}{Theorem}[section]  
\newtheorem{proposition}[theorem]{Proposition} 

Problem: I am using a journal document class which has theorems, propositions, definitions, etc. already defined in the document class. Thus I need to change the counter after the environments were already defined, something similar to the way one can simply change the numbering format with:

\renewcommand{\theprop}{\arabic{section}.\arabic{prop}} 

In my case, the document class is:

\documentclass[twocolumn]{svjour3}     

Just found the very simple solution inspired from How to identify the counter of Equation, Theorem, and Section. The solution is to match the counters:

\makeatletter
\let\c@proposition\c@theorem
\let\c@corollary\c@theorem
\let\c@lemma\c@theorem
\let\c@definition\c@theorem
\let\c@example\c@theorem
\makeatother
wolf
  • 111
  • 1
    We'd like to keep answers separate from questions, so you should write a separate answer instead of editing your answer into the question. Self-answers are perfectly admissible, and a well-written answer may earn you additional reputation. – Werner Dec 31 '12 at 06:45
  • note -- amsmath does not have anything to do with theorem counters; it's amsthm. i'm writing this as a comment instead of editing the question because it's a common misconception, and this might get the point across more clearly. – barbara beeton Dec 31 '12 at 15:32

2 Answers2

7

The definition of these environments in svjour3 are actually initiated using a "special theorem macro" that just receives a bunch of formatting (plus counter and name) information from the respective environments. Originally, theorem, proposition and definition are defined like this:

> \theorem=macro:
->\@spthm {theorem}{\csname theoremname\endcsname }{\bfseries }{\itshape }.

> \proposition=macro:
->\@spthm {proposition}{\csname propositionname\endcsname }{\bfseries }{\itshape }.

> \definition=macro:
->\@spthm {definition}{\csname definitionname\endcsname }{\bfseries }{\rmfamily }.

All you need to do is make the proposition and definition environment starting macros to resemble that of theorem:

enter image description here

\documentclass[twocolumn]{svjour3}% http://www.e-publications.org/springer/support/spr-chicago.html
\makeatletter
\def\proposition{\@spthm{theorem}{\csname propositionname\endcsname}{\bfseries}{\itshape}}
\def\definition{\@spthm{theorem}{\csname definitionname\endcsname}{\bfseries}{\itshape}}
\makeatother
\begin{document}
\begin{theorem}This is a theorem.\end{theorem}
\begin{proposition}This is a proposition.\end{proposition}
\begin{definition}This is a definition.\end{definition}
\begin{theorem}This is a theorem.\end{theorem}
\begin{proposition}This is a proposition.\end{proposition}
\begin{definition}This is a definition.\end{definition}
\end{document}
Werner
  • 603,163
5

The svjour3 class uses a different command for defining new "theorems", but doesn't require it. If you pass the nospthms option, none of the predefined theorems will be defined.

\documentclass[nospthms]{svjour3}

\usepackage{amsthm}
\newtheorem{theorem}{Theorem}
\newtheorem{proposition}[theorem]{Proposition}
\theoremstyle{definition}
\newtheorem{definition}[theorem]{Definition}

Alternatively, if you want to use the toolbox offered by the class, you can undefine the predefined environments:

\documentclass{svjour3}

% Undefine the predefined environments
\let\theorem\relax
\let\proposition\relax
\let\definition\relax

% Define them anew
\spnewtheorem{theorem}{Theorem}{\bfseries}{\itshape}
\spnewtheorem{proposition}[theorem]{Proposition}{\bfseries}{\itshape}
\spnewtheorem{definition}[theorem]{Definition}{\bfseries}{\upshape}
egreg
  • 1,121,712