summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/onlyamsmath/onlyamsmath.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/onlyamsmath/onlyamsmath.dtx')
-rw-r--r--macros/latex/contrib/onlyamsmath/onlyamsmath.dtx337
1 files changed, 337 insertions, 0 deletions
diff --git a/macros/latex/contrib/onlyamsmath/onlyamsmath.dtx b/macros/latex/contrib/onlyamsmath/onlyamsmath.dtx
new file mode 100644
index 0000000000..d1861e83f9
--- /dev/null
+++ b/macros/latex/contrib/onlyamsmath/onlyamsmath.dtx
@@ -0,0 +1,337 @@
+% \iffalse meta comment
+% File: onlyamsmath.dtx Copyright (C) 2001, 2012, 2016 Harald Harders
+% \fi
+%
+% \iffalse
+%
+%<*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{98}
+\input{onlyamsmath-v.tex}
+\GetFileInfo{onlyamsmath-v.tex}
+\title{The \texttt{onlyamsmath} package}
+\author{Harald Harders\\\texttt{harald.harders@gmx.de}}
+\date{Version \fileversion, \filedate, printed \today}
+\begin{document}
+ \DocInput{onlyamsmath.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \changes{0.20}{2016/12/18}{Added switch \texttt{nodollardollar} again
+% (prevent from changing catcode to avoid issues with TikZ/PGF)}%
+% \changes{0.10}{2012/01/01}{Explicitly state date and version in
+% \cs{ProvidesPackage} statement}
+% \changes{0.10}{2012/01/01}{Update documentation}
+% \changes{0.10}{2012/01/01}{Update e-mail address}
+% \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, 2012, 2016 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\,.
+% $$
+%
+% \DescribeMacro{eqnarray}
+% 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*}
+%
+% \DescribeMacro{all}
+% 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}.
+%
+% \DescribeMacro{error}
+% 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.
+%
+% \DescribeMacro{warning}
+% If using |warning| \LaTeX\ only produces warnings and proceeds.
+%
+% \DescribeMacro{nodollardollar}
+% If |nodollardollar| is used, the |$| catcode is not changed.
+% This way, the plain \TeX\ |$$| macro can still be used.
+% This option helps to avoid issues with recent versions of TikZ/PGF but might
+% have other side effects.
+%
+% \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.
+%
+% Reinhard Kotucha has reported the problem with recent TikZ/PGF and also
+% identified that changing the |$| catcode caused the issues.
+% The class option |nodollardollar| has been introduced to resolve this
+% incompatibility.
+%
+% \StopEventually{\PrintBibliography \PrintChanges \PrintIndex}
+%
+% \section{The implementation}
+%
+% Package header:
+% \begin{macrocode}
+%<package>\ProvidesPackage{onlyamsmath}
+%<version>\ProvidesFile{onlyamsmath-v.tex}
+%<package,version> [2016/12/18 v0.20 Destroy the standard math environments]
+% \end{macrocode}
+% \iffalse
+%<*package>
+% \fi
+% 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}
+% Define the |nodollardollar| option:
+% \begin{macrocode}
+\newif\ifonlyams@nodollardollar
+\DeclareOption{nodollardollar}{\onlyams@nodollardollartrue}
+% \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}
+\ifonlyams@nodollardollar
+\else
+ \AtBeginDocument{\catcode`\$=13 }
+\fi
+% \end{macrocode}
+% \iffalse
+%</package>
+% \fi
+% \Finale
+