3

Right now I have the following preamble

newtheorem{thm}{Theorem}[section]
\let\oldthm\thm
\renewcommand{\thm}{\oldthm\normalfont}

\newtheorem{corol}{Corollary}[section]
\let\oldcorol\corol
\renewcommand{\corol}{\oldcorol\normalfont}

\newtheorem{lem}{Lemma}[section]
\let\oldlem\lem
\renewcommand{\lem}{\oldlem\normalfont}

\newtheorem{defn}{Definition}[section]
\let\olddefn\defn
\renewcommand{\defn}{\olddefn\normalfont}

\newtheorem{exa}{Example}[section]
\let\oldexa\exa
\renewcommand{\exa}{\oldexa\normalfont}

\newtheorem{prop}{Proposition}[section]
\let\oldprop\prop
\renewcommand{\prop}{\oldprop\normalfont}

that suppresses the italic font that is used by the standard newtheorem command. I am looking to change the way these theorems, lemmas etcetera are numbered. I want to have them numbered by section, using the same counter, so for instance:

Section 1

-- Subsection 1.1

---- Theorem 1.1

---- Corollary 1.2

Section 2

-- Subsection 2.1

---- Lemma 2.1

---- Definition 2.2

Whereas right now the numbering is:

Section 1

-- Subsection 1.1

---- Theorem 1.1

---- Corollary 1.1

Section 2

-- Subsection 2.1

---- Lemma 2.1

---- Definition 2.1

I have tried using a dummy variable as an answer to another question proposed, but I haven't gotten it to work. Thanks in advance!

Edit

Here is a minimal example:

\documentclass{article}

\newtheorem{thm}{Theorem}[section]
\let\oldthm\thm
\renewcommand{\thm}{\oldthm\normalfont}

\newtheorem{corol}{Corollary}[section]
\let\oldcorol\corol
\renewcommand{\corol}{\oldcorol\normalfont}

\newtheorem{lem}{Lemma}[section]
\let\oldlem\lem
\renewcommand{\lem}{\oldlem\normalfont}

\newtheorem{defn}{Definition}[section]
\let\olddefn\defn
\renewcommand{\defn}{\olddefn\normalfont}

\newtheorem{exa}{Example}[section]
\let\oldexa\exa
\renewcommand{\exa}{\oldexa\normalfont}

\newtheorem{prop}{Proposition}[section]
\let\oldprop\prop
\renewcommand{\prop}{\oldprop\normalfont}

\begin{document}

\section{First}

\subsection{A}

\begin{thm}
Theorem
\end{thm}

\begin{corol}
Corollary
\end{corol}

\section{Second}

\subsection{B}

\begin{lem}
Lemma
\end{lem}

\begin{defn}
Definition
\end{defn}

\end{document}
4
  • 3
    Welcome to TeX.SX! Please post a MWE (compilable, but minimal code) that shows your problem to help us help you.
    – TeXnician
    May 29, 2017 at 13:09
  • Sure! Just a minute.
    – Kermit
    May 29, 2017 at 13:24
  • 3
    \usepackage{amsthm} and \newtheorem{definition}[thm]{Definition} should be easiest
    – user31729
    May 29, 2017 at 13:36
  • @ChristianHupfer This adds an unwanted subsection to the numbering of everything that is not a theorem. Any way to remove this?
    – Kermit
    May 29, 2017 at 13:38

3 Answers 3

3

With the amsthm package: When defining a new theorem, you can instruct it to use a shared counter:

\newtheorem{⟨env name⟩}[⟨shared counter⟩]{⟨text⟩}

For more details, see the amsthm documentation: "3 Theorem numbering"

\documentclass{article}

\usepackage{amsthm}

\theoremstyle{definition}
\newtheorem{thm}{Theorem}[section]
\newtheorem{corol}[thm]{Corollary}

\begin{document}

\section{sec}
\subsection{sub}
\begin{thm}
\end{thm}

\begin{corol}
\end{corol}

\section{sec}
\subsection{sub}
\begin{thm}
\end{thm}

\begin{corol}
\end{corol}

\end{document}

enter image description here

3
  • There is no need for those redefs when amsthm is loaded, just use \theoremstyle{definition}
    – daleif
    May 29, 2017 at 13:30
  • @daleif I just guessed the OP would use amsthm, now that there is a mwe... May 29, 2017 at 13:32
  • Erh, no, that MWE does not give the replacement for the \let\oldexa\exa \renewcommand{\exa}{\oldexa\normalfont}, add some text to the theorems to see. You'll need \theoremstyle{definition} the default is plain which has an italic body which the OP clearly does not want (for some reason)
    – daleif
    May 29, 2017 at 13:49
2

If, for some reason, you don't want to use amsthm, you can more simply patch \@begintheorem.

You should define one main theorem and the other ones to be subordinate to it.

\documentclass{article}
\usepackage{xpatch}

\makeatletter
\xpatchcmd{\@begintheorem}{\itshape}{}{}{}
\makeatother

\newtheorem{thm}{Theorem}[section]
\newtheorem{corol}[thm]{Corollary}
\newtheorem{lem}[thm]{Lemma}
\newtheorem{defn}[thm]{Definition}
\newtheorem{exa}[thm]{Example}
\newtheorem{prop}[thm]{Proposition}

\begin{document}

\section{First}

\subsection{A}

\begin{thm}
Theorem
\end{thm}

\begin{corol}
Corollary
\end{corol}

\section{Second}

\subsection{B}

\begin{lem}
Lemma
\end{lem}

\begin{defn}
Definition
\end{defn}

\end{document}

However, using amsthm is simpler:

\documentclass{article}
\usepackage{amsthm}

\theoremstyle{definition}
\newtheorem{thm}{Theorem}[section]
\newtheorem{corol}[thm]{Corollary}
\newtheorem{lem}[thm]{Lemma}
\newtheorem{defn}[thm]{Definition}
\newtheorem{exa}[thm]{Example}
\newtheorem{prop}[thm]{Proposition}

\begin{document}

\section{First}

\subsection{A}

\begin{thm}
Theorem
\end{thm}

\begin{corol}
Corollary
\end{corol}

\section{Second}

\subsection{B}

\begin{lem}
Lemma
\end{lem}

\begin{defn}
Definition
\end{defn}

\end{document}

enter image description here

2

This is the way without amsthm, using the Coupled Counters feature from (well, my ;-)) package xassoccnt.

Define a counter group name, which is basically arbitrary, then populate the group with the relevant counter names.

I don't recommend the redefinition of the \thm etc. commands, however.

\documentclass{article}


\usepackage{xassoccnt}

\DeclareCoupledCountersGroup{TheoDefCorolLemma}

\newtheorem{thm}{Theorem}[section]
\let\oldthm\thm
\renewcommand{\thm}{\oldthm\normalfont}

\newtheorem{corol}{Corollary}[section]
\let\oldcorol\corol
\renewcommand{\corol}{\oldcorol\normalfont}

\newtheorem{lem}{Lemma}[section]
\let\oldlem\lem
\renewcommand{\lem}{\oldlem\normalfont}

\newtheorem{defn}{Definition}[section]
\let\olddefn\defn
\renewcommand{\defn}{\olddefn\normalfont}

\newtheorem{exa}{Example}[section]
\let\oldexa\exa
\renewcommand{\exa}{\oldexa\normalfont}

\newtheorem{prop}{Proposition}[section]
\let\oldprop\prop
\renewcommand{\prop}{\oldprop\normalfont}

\DeclareCoupledCounters[name=TheoDefCorolLemma]{thm,corol,lem,defn,exa,prop}


\begin{document}

\section{First}

\subsection{A}

\begin{thm}
Theorem
\end{thm}

\begin{corol}
Corollary
\end{corol}

\section{Second}

\subsection{B}

\begin{lem}
Lemma
\end{lem}

\begin{defn}
Definition
\end{defn}

\begin{prop}
Proposition foo
\end{prop}


\end{document}

enter image description here

2
  • Try \begin{thm}[Fermat]. Besides, I'm not sure what advantage this has over \newtheorem{corol}[thm]{Corollary}.
    – egreg
    May 29, 2017 at 14:03
  • @egreg: The redefinition of the theorem starter macros is not the real issue here, in my point of view. The advantage is to prevent the usage of \newtheorem{foobar}[foo]{foobar} each time, but to controll its behaviour later on, with possible decoupling.
    – user31729
    May 29, 2017 at 14:11

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.