% \iffalse meta comment % File: onlyams.dtx Copyright (C) 2001 Harald Harders % $Id:$ % \fi % % \iffalse % %<*package> \def\onlyamspackagename{onlyams} \def\onlyamsversion{0.04} \def\onlyamsfiledate{2001/10/04} \def\onlyamsdocdate{2001/10/04} % %<*driver> \documentclass[fleqn]{ltxdoc} \usepackage{amsmath} \newlength{\tempdima}% \makeatletter \renewenvironment{table}[1][]{% \@float{table}[#1]% \centering% \setlength{\tempdima}{\abovecaptionskip}% \setlength{\abovecaptionskip}{\belowcaptionskip}% \setlength{\belowcaptionskip}{\tempdima}% }{% \end@float } \makeatother \newcommand{\PrintBibliography}{% \begin{thebibliography}{9} \bibitem{amsmath1999} {\em User's Guide for the amsmath Package}. \newblock American Mathematical Society, 1999/12/13. \end{thebibliography} } \EnableCrossrefs \CodelineIndex \DoNotIndex{\def,\edef,\let,\newcommand,\newenvironment,\newcounter} \DoNotIndex{\setcounter,\space,\begingroup,\endgroup} \CodelineNumbered \RecordChanges \CheckSum{94} \begin{document} \title{The \texttt{onlyamsmath} package\thanks{This file is version \onlyamsversion\ last revision \onlyamsfiledate, documentation from \onlyamsdocdate.}} \author{Harald Harders\\\texttt{h.harders@tu-bs.de}} \date{File date \onlyamsfiledate, compiled \today} \DocInput{onlyamsmath.dtx} \end{document} % % \fi % % \changes{0.01}{2001/09/21}{First version} % % \maketitle % \begin{abstract} % \noindent % This package inhibits the usage of plain \TeX\ and on demand of % standard \LaTeX\ math environments. % This is useful for class writers who want to force their clients to % use the environments provided by the amsmath package. % \end{abstract} % % \tableofcontents % % \section*{Copyright} % Copyright 2001 Harald Harders. % % This program can be redistributed and/or modified under the terms % of the LaTeX Project Public License Distributed from CTAN % archives in directory macros/latex/base/lppl.txt; either % version 1 of the License, or any later version. % % \section{Usage of the package} % % Just load the package using |\usepackage[|options|]{onlyamsmath}|. % If no option is given only the plain \TeX\ environment |$$|\dots|$$| % is ``destroyed''. % This environment leads to centred equations even with the global % option |fleqn| (\emph{f}orce \emph{l}eft \emph{eq}uatio\emph{n}s) % switched on: % $$ % a=b\,. % $$ % % One further option is \verb|eqnarray| to switch off % the |eqnarray| and |eqnarray*| environments that add an unwished % space before and after the aligned part of the formula as shown % here: % \begin{eqnarray*} % a&=&b\,. % \end{eqnarray*} % A better result is achieved using the |align| environment provided % by |amsmath.sty|: % \begin{align*} % a&=b\,. % \end{align*} % % The most brutal option is |all| that inhibits the writer to use any % of the \TeX\ and \LaTeX\ math environments for non-inlined equations % I know (|$$|\dots|$$|, |eqnarray|, |eqnarray*|, |displaymath|. % The inlined mathematical modes (|$|\dots|$|, |\(|\dots|\)|) still % work. % % Then instead use the environments provided by |amsmath.sty|: % |equation|, |align|, |gather|, |flalign|, |multiline|, |alignat|, % and |split|. All environments except |split| have a starred % variant. See the User's Guide of the |amsmath| package for further % details \cite{amsmath1999}. % % There are two more options that control the behaviour of the package % if you still use one of the ``forbidden'' environments. % If using |error| which is the default \LaTeX\ generates an error % message that reminds you to use the environments of the |amsmath| % package. % % If using |warning| \LaTeX\ only produces warnings and proceeds. % % \section*{Acknowledgement} % % David Kastrup (David.Kastrup@t-online.de) has % written the part handling |$$|. % I just have changed the call of the command producing the error % message. % Since I do not understand his code please don't ask me things % regarding it. % % \StopEventually{\PrintBibliography \PrintChanges \PrintIndex} % % \section{The implementation} % \iffalse %<*package> % \fi % % Package header: % \begin{macrocode} \ProvidesPackage{onlyamsmath}[\onlyamsfiledate\space v\onlyamsversion\space destroy the standard math environments] % \end{macrocode} % Load |amsmath| package: % \begin{macrocode} \RequirePackage{amsmath} % \end{macrocode} % \subsection{Options} % All options set a boolean variable which is named simular to the % option name. % % \changes{0.02}{2001/09/21}{Added switch \texttt{nodollardollar}}% % \changes{0.03}{2001/09/22}{Removed switches \texttt{dollardollar} % and \texttt{nodollardollar}}% % Define the |eqnarray| option: % \begin{macrocode} \newif\ifonlyams@eqnarray \DeclareOption{eqnarray}{\onlyams@eqnarraytrue} % \end{macrocode} % Define the |all| option: % \begin{macrocode} \newif\ifonlyams@all \DeclareOption{all}{ \onlyams@alltrue \onlyams@eqnarraytrue } % \end{macrocode} % Define the |error| and |warning| options: % \begin{macrocode} \newif\ifonlyams@error \onlyams@errortrue \DeclareOption{error}{\onlyams@errortrue} \DeclareOption{warning}{\onlyams@errorfalse} % \end{macrocode} % Set the default options: % \begin{macrocode} \ExecuteOptions{error} % \end{macrocode} % Process the options: % \begin{macrocode} \ProcessOptions\relax % \end{macrocode} % \subsection{Commands} % % \begin{macro}{\onlyams@error} % Define a command that produces the error resp.\ warning messages. % The argument specifies the name of the environment that produced the % message. % \begin{macrocode} \newcommand{\onlyams@error}[1]{% \ifonlyams@error \PackageError{onlyamsmath}{Environment #1 used}{Please use only the environments provided by the amsmath package.}% \else \PackageWarning{onlyamsmath}{Environment #1 used, please use \MessageBreak only the environments provided by the amsmath \MessageBreak package}% \fi } % \end{macrocode} % \end{macro} % \changes{0.04}{2001/09/23}{Removed code that forbids % \texttt{\textbackslash [}\dots\texttt{\textbackslash ]}}% % % Here follows the part that is only executed when one of the options % |eqnarray| or |all| is used: % \begin{macrocode} \ifonlyams@eqnarray % \end{macrocode} % \begin{macro}{\onlyams@eqnarray} % Copy the original |\eqnarray| command which is called by the commands % |\begin{eqnarray}| and |\begin{eqnarray*}| to be able to call it % after producing the correspondig error message: % \begin{macrocode} \let\onlyams@eqnarray\eqnarray % \end{macrocode} % \end{macro} % \begin{environment}{eqnarray} % Redefine the |\eqnarray| command: % \begin{macrocode} \def\eqnarray{% % \end{macrocode} % First generate an error or warning message: % \begin{macrocode} \onlyams@error{eqnarray or eqnarray*}% % \end{macrocode} % Then call the original |eqnarray| environment: % \begin{macrocode} \onlyams@eqnarray} \fi % \end{macrocode} % \end{environment} % Here follows the part that is only executed when the option |all| is % used: % \begin{macrocode} \ifonlyams@all % \end{macrocode} % \begin{environment}{displaymath} % Redefine the |\displaymath| command: % \begin{macrocode} \def\displaymath{% % \end{macrocode} % First generate an error or warning message: % \begin{macrocode} \onlyams@error{displaymath}% % \end{macrocode} % Then call the |\[| environment which normally is called by the % |displaymath| environment: % \begin{macrocode} \[} % \end{macrocode} % \end{environment} % \begin{macrocode} \fi % \end{macrocode} % Redefine the |$$| environment. % This part wass written by David Kastrup. Please don't ask me anything % about it. % \changes{0.03}{2001/09/22}{Changed definition of % \texttt{\textbackslash dollarcode}, by David Kastrup}% % \begin{macro}{\dollarcode} % \begin{macrocode} \def\dollarcode{\ifx\protect\@typeset@protect \expandafter\futurelet\expandafter\next\expandafter\checkdsp \else \expandafter$\fi} % \end{macrocode} % \end{macro} % \begin{macrocode} \begingroup \lccode`\~=`\$ \lowercase{\endgroup\let~}\dollarcode % \end{macrocode} % \begin{macro}{\defdsp} % \begin{macrocode} \def\checkdsp{\ifx\next\dollarcode\expandafter\dspcomplain \else\expandafter$\fi} % \end{macrocode} % \end{macro} % Now comes the part that I understand and in which I have made % changes. % \begin{macro}{\dspcomplain} % This command controls the complaint when using |$$|. % \begin{macrocode} \def\dspcomplain#1{% % \end{macrocode} % If mathmode is active the code has found the second |$$| of the % environment. % The complaint has already made and it is not necessary to do % generate one. % The environment has to be closed by using |\]|: % \begin{macrocode} \ifmmode \expandafter \]% \else % \end{macrocode} % If the mathmode isn't active the first |$$| of a mathematical % environment has been found. % First generate the warning or error message: % \begin{macrocode} \onlyams@error{$$ $$}% % \end{macrocode} % Then start the mathmode by using |\[|: % \begin{macrocode} \expandafter \[ \fi} % \end{macrocode} % \end{macro} % Activate the complaining behaviour at |\begin{document}| to ensure % that packages that internally use |$$| can do that without an error: % \begin{macrocode} \AtBeginDocument{\catcode`\$=13 } % \end{macrocode} % \iffalse % % \fi % \Finale