[Tex/LaTex] Custom theorem numbering

numberingtheorems

This one should be easy for the gurus…

Suppose I want to define a theorem environment which has a custom numbering scheme. That is, instead of being numbered according to some counter, it is numbered according to a passed parameter. So writing something like

\begin{customtheorem}{8}
   Text.
\end{custom theorem}

would produce

Theorem 8. Text.

I realize I could define a new environment on my own, but then the header will be bold, or small caps, or whatever I defined it to be, and so may differ from the rest of the document if I switch documentclass. So I would like something that also matches the regular theorem headers.

Thanks in advance for any ideas.

Best Answer

An easy way is

\documentclass{article}
%\usepackage{amsthm} %% uncomment to see the difference
\newtheorem{innercustomthm}{Theorem}
\newenvironment{customthm}[1]
  {\renewcommand\theinnercustomthm{#1}\innercustomthm}
  {\endinnercustomthm}

\begin{document}

\begin{customthm}{8}\label{eight}
Every theorem must be numbered by hand.
\end{customthm}

Here is a reference to theorem~\ref{eight}.
\end{document}

You can also use the optional argument for attribution:

\begin{customthm}{99}[Somebody]\label{ninetynine}
Statement.
\end{customthm}

A more generic interface for defining several of these environments; this doesn't respect theorem styles; it could be adapted, though.

\documentclass{article}
\usepackage{amsthm}

\newtheorem{innercustomgeneric}{\customgenericname}
\providecommand{\customgenericname}{}
\newcommand{\newcustomtheorem}[2]{%
  \newenvironment{#1}[1]
  {%
   \renewcommand\customgenericname{#2}%
   \renewcommand\theinnercustomgeneric{##1}%
   \innercustomgeneric
  }
  {\endinnercustomgeneric}
}

\newcustomtheorem{customthm}{Theorem}
\newcustomtheorem{customlemma}{Lemma}

\begin{document}

\begin{customthm}{8}\label{eight}
Every theorem must be numbered by hand.
\end{customthm}

Here is a reference to theorem~\ref{eight} and
one to the important lemma~\ref{life-universe-everything}

\begin{customlemma}{42}\label{life-universe-everything}
This lemma explains everything.
\end{customlemma}


\end{document}

enter image description here