% \iffalse meta-comment
%
% Copyright 1993 1994 1995 1996 1997 1998 1999
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
% This file is part of the LaTeX2e system.
% ----------------------------------------
%
% It may be distributed under the terms of the LaTeX Project Public
% License, as described in lppl.txt in the base LaTeX distribution.
% Either version 1.0 or, at your option, any later version.
%
% \fi
%
% \iffalse
%%% From File: ltthm.dtx
%<*driver>
% \fi
\ProvidesFile{ltthm.dtx}
[1995/10/10 v1.0f LaTeX Kernel (Theorems)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltthm.dtx}
\title{\filename}
\date{\filedate}
\author{%
Johannes Braams\and
David Carlisle\and
Alan Jeffrey\and
Leslie Lamport\and
Frank Mittelbach\and
Chris Rowley\and
Rainer Sch\"opf}
\begin{document}
\maketitle
\DocInput{\filename}
\end{document}
%</driver>
% \fi
%
% \CheckSum{115}
%
% \section{Theorem Environments}
%
%
% The user creates his own theorem-like environments with the command\\
% |\newtheorem|\marg{name}\marg{text}\oarg{counter} or\\
% |\newtheorem|\marg{name}\oarg{oldname}\marg{text}\\
% This defines the environment \meta{name} to be just as one would
% expect a theorem environment to be, except that it prints \meta{text}
% instead of ``Theorem''.
%
% If \meta{oldname} is given, then environments \meta{name} and
% \meta{oldname} use the same counter, so using a \meta{name}
% environment advances the number of the next \meta{name} environment,
% and vice-versa.
%
% If \meta{counter} is given, then environment \meta{name} is numbered
% within \meta{counter}.
%
% E.g., if \meta{counter} = |subsection|, then the first \meta{name} in
% subsection 7.2 is numbered \meta{text} 7.2.1.
%
% The way \meta{name} environments are numbered can be changed by
% redefining |\the|\meta{name}.
%
% \StopEventually{}
%
%
% \changes{v1.0a}{1994/03/28}{Initial version, split from latex.dtx}
% \changes{v1.0c}{1994/05/25}{Modify documentation}
% \changes{v1.0f}{1995/10/10}{Make \cs{newtheorem} `only preamble'}
% \changes{v1.0g}{1995/10/16}
% {Revert to previous \cs{newtheorem} behaviour}
%
% \begin{oldcomments}
%
% DOCUMENT STYLE PARAMETERS
%
% \@thmcounter{COUNTER} : A command such that
% \edef\theCOUNTER{\@thmcounter{COUNTER}}
% defines \theCOUNTER to produce a number for a theorem environment.
% The default is:
% BEGIN \noexpand\arabic{COUNTER} END
%
% \@thmcountersep : A separator placed between a theorem number and
% the number of the counter within which it is numbered.
% E.g., to make the third theorem of section 7.2 be numbered
% 7.2-3, \@thmcountersep should be \def'ed to '-'. Its
% default is '.'.
%
% \@begintheorem{NAME}{NUMBER} : A command that begins a theorem
% environment for a 'theorem' named 'NAME NUMBER' --
% e.g., \@begintheorem{Lemma}{3.7} starts Lemma 3.7.
%
% \@opargbegintheorem{NAME}{NUMBER}{OPARG} :
% A command that begins a theorem
% environment for a 'theorem' named 'NAME NUMBER' with optional
% argument OPARG -- e.g., \@begintheorem{Lemma}{3.7}{Jones}
% starts `Lemma 3.7 (Jones):'.
%
% \@endtheorem : A command that ends a theorem environment.
%
% \newtheorem{NAME}{TEXT}[COUNTER] ==
% BEGIN
% if \NAME is definable
% then \@definecounter{NAME}
% if COUNTER present
% then \@newctr{NAME}[COUNTER] fi
% \theNAME == BEGIN \theCOUNTER \@thmcountersep
% eval\@thmcounter{NAME} END
% else \theNAME == BEGIN eval\@thmcounter{NAME} END
% \NAME == \@thm{NAME}{TEXT}
% \endNAME == \@endtheorem
% else error
% fi
% END
%
% \newtheorem{NAME}[OLDNAME]{TEXT}==
% BEGIN
% if counter OLDNAME nonexistant
% then ERROR
% else
% if \NAME is definable
% then BEGIN
% \theNAME == \theOLDNAME
% \NAME == \@thm{OLDNAME}{TEXT}
% \endNAME == \@endtheorem
% END
% else error
% fi
% fi
% END
%
% \@thm{NAME}{TEXT} ==
% BEGIN
% \refstepcounter{NAME}
% if next char = [
% then \@ythm{NAME}{TEXT}
% else \@xthm{NAME}{TEXT}
% fi
% END
%
% \@xthm{NAME}{TEXT} ==
% BEGIN
% \@begintheorem{TEXT}{\theNAME}
% \ignorespaces
% END
%
% \@ythm{NAME}{TEXT}[OPARG] ==
% BEGIN
% \@opargbegintheorem{TEXT}{\theNAME}{OPARG}
% \ignorespaces
% END
% \end{oldcomments}
%
% \begin{macro}{\newtheorem}
% |\newtheorem| ought really be allowed only in the preamble
% Which would be good document style, and allow some main memory to be
% saved by declaring these commands to be
% |\@onlypreamble|. Unfortunately the \LaTeX\ book indicates that
% |\newtheorem| may be used anywhere in the document\ldots
% \begin{macrocode}
%<*2ekernel>
\def\newtheorem#1{%
\@ifnextchar[{\@othm{#1}}{\@nthm{#1}}}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@nthm}
% \begin{macrocode}
\def\@nthm#1#2{%
\@ifnextchar[{\@xnthm{#1}{#2}}{\@ynthm{#1}{#2}}}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@xnthm}
%
% 92/09/18 RmS: Changed |\@addtoreset| to |\@newctr| to produce error
% message if counter |#3| does not exist (to be
% consistent with behaviour of |\newcounter|)
% \begin{macrocode}
\def\@xnthm#1#2[#3]{%
\expandafter\@ifdefinable\csname #1\endcsname
{\@definecounter{#1}\@newctr{#1}[#3]%
\expandafter\xdef\csname the#1\endcsname{%
\expandafter\noexpand\csname the#3\endcsname \@thmcountersep
\@thmcounter{#1}}%
\global\@namedef{#1}{\@thm{#1}{#2}}%
\global\@namedef{end#1}{\@endtheorem}}}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@ynthm}
% \begin{macrocode}
\def\@ynthm#1#2{%
\expandafter\@ifdefinable\csname #1\endcsname
{\@definecounter{#1}%
\expandafter\xdef\csname the#1\endcsname{\@thmcounter{#1}}%
\global\@namedef{#1}{\@thm{#1}{#2}}%
\global\@namedef{end#1}{\@endtheorem}}}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@othm}
% \changes{LaTeX2.09}{1992/01/10}
% {(RmS) Check for existence of theorem environment}
% \changes{LaTeX2.09}{1992/08/19}
% {(RmS) Changed error message to complain about undefined
% counter}
% \changes{v1.0b}{1994/04/09}{Use standard counter error message (FMi)}
% \changes{v1.0c}{1994/04/17}{Use new std counter error message (FMi)}
% \begin{macrocode}
\def\@othm#1[#2]#3{%
\@ifundefined{c@#2}{\@nocounterr{#2}}%
{\expandafter\@ifdefinable\csname #1\endcsname
{\global\@namedef{the#1}{\@nameuse{the#2}}%
\global\@namedef{#1}{\@thm{#2}{#3}}%
\global\@namedef{end#1}{\@endtheorem}}}}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@thm}
% \begin{macrocode}
\def\@thm#1#2{%
\refstepcounter{#1}%
\@ifnextchar[{\@ythm{#1}{#2}}{\@xthm{#1}{#2}}}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@xthm}
% \begin{macro}{\@ythm}
% \begin{macrocode}
\def\@xthm#1#2{%
\@begintheorem{#2}{\csname the#1\endcsname}\ignorespaces}
\def\@ythm#1#2[#3]{%
\@opargbegintheorem{#2}{\csname the#1\endcsname}{#3}\ignorespaces}
% \end{macrocode}
% \end{macro}
% \end{macro}
%
% Default values
% \begin{macro}{\@thmcounter}
% \begin{macro}{\@thmcountersep}
% \begin{macrocode}
\def\@thmcounter#1{\noexpand\arabic{#1}}
\def\@thmcountersep{.}
% \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\@begintheorem}
% \begin{macro}{\@opargbegintheorem}
% \begin{macro}{\@endtheorem}
% \changes{LaTeX2.09}{1991/08/14}
% {Moved \cs{itshape} after \cs{item} to make it work with
% NFSS}
% Providing theorem defaults.
% \task{???}{add `reset@font?}
% \begin{macrocode}
\def\@begintheorem#1#2{\trivlist
\item[\hskip \labelsep{\bfseries #1\ #2}]\itshape}
\def\@opargbegintheorem#1#2#3{\trivlist
\item[\hskip \labelsep{\bfseries #1\ #2\ (#3)}]\itshape}
\def\@endtheorem{\endtrivlist}
%</2ekernel>
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \Finale
%
|