summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex3/xtheorem
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2006-01-11 23:49:19 +0000
committerKarl Berry <karl@freefriends.org>2006-01-11 23:49:19 +0000
commitb3e91602f5c5c87db7d26bc4e2422697cbfefdb8 (patch)
tree727056e7ca8a3fc6e395eae3296e66f4b081eecc /Master/texmf-dist/source/latex3/xtheorem
parent23d7c0b36aca6e9b3a074d0382ad9bb24d351bc6 (diff)
trunk/Master/texmf-dist/source/latex3
git-svn-id: svn://tug.org/texlive/trunk@113 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex3/xtheorem')
-rw-r--r--Master/texmf-dist/source/latex3/xtheorem/xtheorem.dtx386
-rw-r--r--Master/texmf-dist/source/latex3/xtheorem/xtheorem.ins14
2 files changed, 400 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex3/xtheorem/xtheorem.dtx b/Master/texmf-dist/source/latex3/xtheorem/xtheorem.dtx
new file mode 100644
index 00000000000..c07f240a4e9
--- /dev/null
+++ b/Master/texmf-dist/source/latex3/xtheorem/xtheorem.dtx
@@ -0,0 +1,386 @@
+% \iffalse
+%%
+%% (C) Copyright 1999 Achim Blumensath
+%% All rights reserved.
+%%
+%% Not for general distribution. In its present form it is not allowed
+%% to put this package onto CD or an archive without consulting the
+%% the authors.
+%%
+%<*dtx>
+ \ProvidesFile{xtheorem.dtx}
+%</dtx>
+%<package>\NeedsTeXFormat{LaTeX2e}
+%<package>\ProvidesPackage{xtheorem}
+%<driver>\ProvidesFile{xtheorem.drv}
+% \fi
+% \ProvidesFile{xtheorem.dtx}
+ [1999/12/19 v0.1 theorem styles]
+%
+% \iffalse
+%<*driver>
+ \documentclass{ltxdoc}
+ \usepackage{textcomp}
+
+% \usepackage{xparse,xlists,xlists-samples}
+% \usepackage{ldcdoc}
+
+% next three definitions are big hacks to run the file
+% without the above packages
+%
+\newcommand\NoValue{\texttt{\textbackslash NoValue}}
+
+\newenvironment{TemplateInterfaceDescription}[1]
+ {\subsection{The Template Type `#1'}%
+ \begingroup\description
+ \def\TemplateArgument##1##2{\item[Arg: ##1]##2\par}%
+ \def\TemplateSemantics{\enddescription\endgroup
+ \subsubsection*{Semantics:}}%
+ }
+ {\par\bigskip}
+
+\newenvironment{TemplateDescription}[2]
+ {\subsection{The Template `#2' (type #1)}%
+ \subsubsection*{Attributes:}%
+ \begingroup\description
+ \def\TemplateKey##1##2##3##4{\item[##1 (##2)]##3%
+ \ifx\TemplateKey##4\TemplateKey\else
+% \hskip0ptplus3em\penalty-500\hskip 0pt plus 1filll Default:~##4%
+ \hfill\penalty500\hbox{}\hfill Default:~##4%
+ \nobreak\hskip-\parfillskip\hskip0pt\relax
+ \fi
+ \par}%
+ \def\TemplateSemantics{\enddescription\endgroup
+ \subsubsection*{Semantics \& Comments:}}%
+ }
+ {\par\bigskip}
+
+ \begin{document}
+ \DocInput{xtheorem.dtx}
+ \end{document}
+%</driver>
+% \fi
+%
+%
+% \GetFileInfo{xtheorem.dtx}
+%
+% \title{The \textsf{xtheorem} package\thanks{This file
+% has version number \fileversion, last
+% revised \filedate.}}
+% \author{AB}
+% \date{\filedate}
+%
+% \maketitle
+%
+% \tableofcontents
+%
+% \begin{abstract}
+% This is a conversion of the AMS theorem classes to the template
+% system. Only the interface was changed, the internals still use
+% \LaTeXe\ commands.
+% \end{abstract}
+%
+% \section{Interfaces}
+%
+% \begin{TemplateInterfaceDescription}{theoremstyle}
+%
+% \TemplateArgument{1}
+% {Text of the number of the theorem (e.g., \verb|A.1|), or
+% \NoValue\ to indicate that the theorem is unnumbered.}
+%
+% \TemplateArgument{2}
+% {Name of the theorem (e.g. \verb|Theorem|, \verb|Lemma|).}
+%
+% \TemplateArgument{3}
+% {Additional note (e.g. \verb|see [12]|), or \NoValue.}
+%
+% \TemplateSemantics
+%
+% This template starts a new environment, typesets the head of a
+% theorem, and sets fonts for the body of the theorem. The
+% environment is ended by an \verb|\@endtheorem| command.
+%
+% If the first argument is given, it is printed as the number part.
+% The second argument contains the name of the theorem, and the
+% third one may contain an additional note.
+%
+% For instance, the arguments \verb|2.1|, \verb|Lemma|, and
+% \verb|Rabin~1960| could produce the output
+%
+% \medskip
+% \noindent\textbf{Lemma 2.1 }(Rabin 1960)\textbf.
+%
+% \medskip\noindent
+% where the following text is set in italic.
+%
+% \end{TemplateInterfaceDescription}
+%
+%
+% \begin{TemplateDescription}{theoremstyle}{std}
+%
+% \TemplateKey{pre-skip}{l}
+% {Skip above the theorem.}
+% {|topsep|}
+% \TemplateKey{post-skip}{l}
+% {Skip below the theorem.}
+% {|topsep|}
+% \TemplateKey{body-style}{f0}
+% {Commands to be executed before the body of the theorem in
+% order to set fonts, etc.}
+% {italic}
+% \TemplateKey{head-style}{f0}
+% {Commands to set the font of the head.}
+% {bold}
+% \TemplateKey{note-style}{f0}
+% {Commands to set the font of the note.}
+% {medium upright font}
+% \TemplateKey{head-punct}{f0}
+% {Text after the head.}
+% {|.|}
+% \TemplateKey{head-format}{f3}
+% {Format of the head.}
+% {Name Number (Note)}
+% \TemplateKey{head-indent}{l}
+% {Indent of the head.}
+% {none}
+% \TemplateKey{head-sep}{l}
+% {Space after the head.}
+% {5pt $\pm$ 1pt}
+% \TemplateKey{post-head-action}{f0}
+% {Command to be executed after the head (e.g., a line break).}
+% {none}
+%
+% \TemplateSemantics
+% This are all parameters provided by the AMS package, except `swaphead'
+% which can be simulated by \verb|head-format|.
+%
+% \end{TemplateDescription}
+%
+% \paragraph{Problem.}
+% The current solution for `head-format' is very clumsy. Perhaps it would
+% be better to pass just the name of a template which does the layout
+% instead of the actual code.
+%
+% \medskip
+% \DescribeMacro\newtheorem
+% The \verb|\newtheorem| command defines a new type of theorem. It takes
+% the following arguments:
+%
+% \medskip
+% \verb|\newtheorem|[|*|]$\langle$style$\rangle$\relax
+% $\langle$name$\rangle$[share counter]$\langle$label$\rangle$\relax
+% [count relative]
+%
+% \medskip\noindent
+% and defines an environment named `name'. The arguments have the
+% following meanings:
+% \begin{description}
+% \item[|*|] If present the theorem is unnumbered, otherwise it is
+% numbered.
+% \item[style] The name of an instace of the `theoremstyle' template
+% which is used to typeset the theorem.
+% \item[name] The name of the new environment.
+% \item[share counter] (optional) The label of another defined theorem.
+% If present both kinds of theorem share a common counter.
+% \item[label] The name of the theorem which should appear in its head.
+% \item[count relative] If present the counter is reset to 1 everything
+% the counter with this name is changed (e.g., |section| or |chapter|).
+% \end{description}
+%
+% For instance, the following definitions create environments named
+% |Thm|, |Prop|, |Lem|, |Cor|, |Def|, |Rem|, and |Exam|. The first
+% five share a common counter which is relative to the current
+% section, the last two are unnumbered.
+% \begin{verbatim}
+% \newtheorem{plain}{Thm}{Theorem}[section]
+% \newtheorem{plain}{Prop}[Thm]{Proposition}
+% \newtheorem{plain}{Lem}[Thm]{Lemma}
+% \newtheorem{plain}{Cor}[Thm]{Corollary}
+% \newtheorem{definition}{Def}[Thm]{Definition}
+% \newtheorem*{remark}{Rem}{Remark}
+% \newtheorem*{remark}{Exam}{Example}
+% \end{verbatim}
+%
+% \section{Implementation}
+%
+% \begin{macrocode}
+%<*package>
+\RequirePackage{xparse}
+\RequirePackage{template}
+
+\IgnoreWhiteSpace
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareTemplateType{theoremstyle}{3}
+
+\newskip\TSpre@skip
+\newskip\TSpost@skip
+\newdimen\TShead@indent
+\newskip\TShead@sep
+
+\DeclareTemplate{theoremstyle}{std}{3}
+{
+ pre-skip =l [\DelayEvaluation{\topsep}] \TSpre@skip,
+ post-skip =l [\DelayEvaluation{\topsep}] \TSpost@skip,
+ body-style =f0 [\itshape] \TSbody@style,
+ head-style =f0 [\bfseries] \TShead@style,
+ note-style =f0 [\fontseries\mddefault\upshape] \TSnote@style,
+ head-punct =f0 [.] \TShead@punct,
+ head-format =f3 [\IfNoValueF{#1}{#1\IfNoValueF{#2}{\space}}
+ \IfNoValueF{#2}{\textup{#2}}
+ \IfNoValueF{#3}{\space{\TSnote@style(#3)}}]
+ \TShead@format,
+ head-indent =l [0pt] \TShead@indent,
+ head-sep =l [5pt plus 1pt minus 1pt] \TShead@sep,
+ post-head-action =f0 [] \TSpost@head@action
+}
+{
+ \DoParameterAssignments
+ \ifhmode\unskip\unskip\par\fi
+ \normalfont
+ \trivlist
+ \let\thmheadnl\relax
+ \@topsep\TSpre@skip
+ \@topsepadd\TSpost@skip
+ \IfNoValueF{#1}
+ {\refstepcounter{#1}}
+ \deferred@thm@head{
+ \TShead@style
+ \hskip\TShead@indent
+ \IfNoValueTF{#1}
+ {\TShead@format{#2}{#1}{#3}}
+ {\TShead@format{#2}{\csname the#1\endcsname}{#3}}
+ \TShead@punct
+ \TSpost@head@action
+ \hskip\TShead@sep
+ }
+ \TSbody@style
+ \ignorespaces
+}
+% \end{macrocode}
+% These functions are used by the template above. They are copied
+% straight away from amsclass.dtx.
+% \begin{macrocode}
+\let\adjust@parskip@nobreak=\@nbitem
+% \end{macrocode}
+%
+% \begin{macrocode}
+\newtoks\dth@everypar
+\dth@everypar={
+ \@minipagefalse
+ \global\@newlistfalse
+ \if@inlabel
+ \global\@inlabelfalse
+ \begingroup
+ \setbox\z@\lastbox
+ \ifvoid\z@ \kern-\itemindent \fi
+ \endgroup
+ \unhbox\@labels
+ \fi
+ \if@nobreak
+ \@nobreakfalse
+ \clubpenalty\@M
+ \else
+ \clubpenalty\@clubpenalty
+ \everypar{}
+ \fi
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\deferred@thm@head#1{%
+ \if@inlabel \indent \par \fi % eject a section head if one is pending
+ \if@nobreak
+ \adjust@parskip@nobreak
+ \else
+ \addpenalty\@beginparpenalty
+ \addvspace\@topsep
+ \addvspace{-\parskip}%
+ \fi
+ \global\@inlabeltrue
+ \everypar\dth@everypar
+ \sbox\@labels{\normalfont#1}%
+ \ignorespaces
+}
+% \end{macrocode}
+% The usual styles `plain', `definition', and `remark'.
+% \begin{macrocode}
+\DeclareInstance{theoremstyle}{plain}{std}{}
+
+\DeclareInstance{theoremstyle}{definition}{std}
+{
+ body-style = \normalfont
+}
+
+\DeclareInstance{theoremstyle}{remark}{std}
+{
+ pre-skip = \DelayEvaluation{0.5\topsep},
+ post-skip = \DelayEvaluation{0.5\topsep},
+ body-style = \normalfont,
+ head-style = \itshape
+}
+% \end{macrocode}
+% The command to end a theorem.
+% \begin{macrocode}
+\def\@endtheorem{\endtrivlist\@endpefalse }
+% \end{macrocode}
+%
+% |newtheorem| just checks all cases and defines the appropriate
+% environment.
+% \begin{macrocode}
+\DeclareDocumentCommand{\newtheorem}{smmomo}
+{
+ \expandafter\@ifdefinable\csname #3\endcsname
+ {
+ \global\expandafter\let\csname end#3\endcsname\@endtheorem
+ \IfBooleanTF{#1}
+ {
+ \expandafter\DeclareDocumentCommand\csname #3\endcsname{o}
+ {\UseInstance{theoremstyle}{#2}{\NoValue}{#5}{##1}}
+ }
+ {
+ \IfNoValueTF{#4}
+ {
+ \IfNoValueTF{#6}
+ {
+ \newcounter{#3}
+ }
+ {
+ \newcounter{#3}[#6]
+ \expandafter\xdef\csname the#3\endcsname{
+ \expandafter\noexpand\csname the#6\endcsname
+ \@thmcountersep\@thmcounter{#3}}
+ }
+ \expandafter\DeclareDocumentCommand\csname #3\endcsname{o}
+ {\UseInstance{theoremstyle}{#2}{#3}{#5}{##1}}
+ }
+ {
+ \@ifundefined{c@#4}
+ {
+ \@nocounterr{#4}
+ }
+ {
+ \expandafter\xdef\csname the#3\endcsname{
+ \expandafter\noexpand\csname the#4\endcsname}
+ \expandafter\DeclareDocumentCommand\csname #3\endcsname{o}
+ {\UseInstance{theoremstyle}{#2}{#4}{#5}{##1}}
+ }
+ }
+ }
+ }
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\endinput
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+%
+%
+% \Finale
+%
+\endinput
diff --git a/Master/texmf-dist/source/latex3/xtheorem/xtheorem.ins b/Master/texmf-dist/source/latex3/xtheorem/xtheorem.ins
new file mode 100644
index 00000000000..f9ed9513d7d
--- /dev/null
+++ b/Master/texmf-dist/source/latex3/xtheorem/xtheorem.ins
@@ -0,0 +1,14 @@
+\input docstrip
+\keepsilent
+\askforoverwritefalse
+
+\preamble
+
+Not for distribution
+\endpreamble
+
+\generate{
+ \file{xtheorem.sty}{\from{xtheorem.dtx}{package,trace}}
+ }
+
+\endbatchfile