summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/eqnarray
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/eqnarray
Initial commit
Diffstat (limited to 'macros/latex/contrib/eqnarray')
-rw-r--r--macros/latex/contrib/eqnarray/README31
-rw-r--r--macros/latex/contrib/eqnarray/eqnarray.dtx402
-rw-r--r--macros/latex/contrib/eqnarray/eqnarray.ins41
-rw-r--r--macros/latex/contrib/eqnarray/eqnarray.pdfbin0 -> 114741 bytes
4 files changed, 474 insertions, 0 deletions
diff --git a/macros/latex/contrib/eqnarray/README b/macros/latex/contrib/eqnarray/README
new file mode 100644
index 0000000000..13fdf00436
--- /dev/null
+++ b/macros/latex/contrib/eqnarray/README
@@ -0,0 +1,31 @@
+Copyright (C) 1993-2010 Roland Winkler <rwinkler@niu.edu>
+
+Abstract
+ This package provides the equationarray environment. It combines the
+ line numbering of the eqnarray and the more flexible formatting
+ features of the array environment. This package requires the array
+ package.
+
+Recent Changes (version 1.3)
+ The new command \eqnnum gives customizable equation numbers.
+ This package is published under the terms of the GPL.
+
+Files:
+ * README - this file
+ * eqnarray.ins - for installation to get .sty from .dtx
+ * eqnarray.dtx - including sources and documentation
+ * eqnarray.pdf - print-ready documentation
+
+License
+ This LaTeX package is free software: you can redistribute it
+ and/or modify it under the terms of the GNU General Public License
+ as published by the Free Software Foundation, either version 3 of
+ the License, or (at your option) any later version.
+
+ This package is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ The GNU General Public License is available at
+ http://www.gnu.org/licenses/gpl.html
diff --git a/macros/latex/contrib/eqnarray/eqnarray.dtx b/macros/latex/contrib/eqnarray/eqnarray.dtx
new file mode 100644
index 0000000000..c010a05bdf
--- /dev/null
+++ b/macros/latex/contrib/eqnarray/eqnarray.dtx
@@ -0,0 +1,402 @@
+\def\fileversion{1.3}
+\def\filedate{December 1, 2010}
+\def\docdate{December 1, 2010}
+%
+% \MakeShortVerb{\|}
+%
+% \iffalse
+% Version 1.1: \def\filedate{jan 1993}, \def\docdate{9 jan 1995}
+% Version 1.2: Piet van Oostrum <piet@cs.ruu.nl> added the code which
+% is necessary for the |fleqn| option.
+% \def\filedate{17 May 1995} \def\docdate{17 May 1995}
+% Version 1.2a: \def\filedate{17 July 1997}, \def\docdate{17 July 1997}
+% Apart from a statement \RequirePackage{array} no
+% modifications have been made in the style file itself.
+% I improved the documentation and I packed
+% everything into an easier-to-use dtx file
+% Version 1.3: \def\filedate{December 1, 2010}
+% \def\docdate{December 1, 2010}
+% The new command \eqnnum gives customizable equation numbers.
+% This package is published under the terms of the GPL
+% \fi
+%
+% \title{The |equationarray| environment}
+% \author{Roland Winkler\\ \normalsize
+% |rwinkler@niu.edu|}
+% \date{\filedate\quad v\fileversion}
+% \maketitle
+% \begin{abstract}\noindent
+% This package provides the |equationarray| environment. It combines
+% the line numbering of the |eqnarray| and the more flexible
+% formatting features of the |array| environment. It requires the
+% |array| package.
+%
+% This package is published under the terms of the GNU General
+% Public License as published by the Free Software Foundation,
+% either version 3 of the License, or (at your option) any later
+% version.
+% \end{abstract}
+%
+% \section{Introduction}
+%
+% Problem: The |eqnarray| environment is too restrictive because it is
+% only prepared to accept three part equations. Some applications
+% require more sophisticated mathematics, so three parts aren't
+% enough. Simultaneously, we would like to have our equations
+% numbered. If the equations aren't to be numbered, then the |array|
+% environment suffices.\footnote{Nevertheless it is often easier to use the
+% |equationarray*| environment than both an |equation| plus an |array|
+% environment. Moreover a page break is possible between two lines of the
+% |equationarray|.} If the equations aren't to be aligned with
+% each other, then the |equation| environment is preferred.
+%
+% A first version of the |equationarray| environment was written by
+% Tony Li, University of Southern California, |<tli@sargas.usc.edu>|
+% starting 6/15/1988. The current version has been completely
+% rewritten in order to make it compatible with Frank Mittelbach's
+% |array| environment, i.e., it should be possible to use all features
+% of the |array| environment. If you find a bug (see below!) or if you
+% make any improvements, I'd like to hear about them.
+%
+% \section{Example}
+%
+% We give a short example for the use of |equationarray|. The text is
+% %
+% \begin{verbatim}
+% \newcolumntype{e}{@{\quad}}
+% \arraycolsep 0.2em
+% \begin{equationarray}{p{2.5em}erclecercl}
+% now: & - i\partial_t \psi & = & H\,\psi & \Rightarrow
+% & \psi (t) & = & \psi (0) \exp (iEt) \\[3ex]
+% then: & - i\partial_t \psi & = & (H+E_0) \,\psi & \Rightarrow
+% & \psi (t) & = & \psi (0) \exp [i(E+E_0)t]
+% \end{equationarray}
+% \end{verbatim}
+% %
+% \noindent and we obtain
+% %
+% \newcolumntype{e}{@{\quad}}
+% \arraycolsep 0.2em
+% \begin{equationarray}{p{2.5em}erclecercl}
+% now: & - i\partial_t \psi & = & H\,\psi & \Rightarrow
+% & \psi (t) & = & \psi (0) \exp (iEt) \\[3ex]
+% then: & - i\partial_t \psi & = & (H+E_0) \,\psi & \Rightarrow
+% & \psi (t) & = & \psi (0) \exp [i(E+E_0)t]
+% \end{equationarray}
+% %
+% An |equationarray| behaves very much like an |array|. For example,
+% |equationarray| accepts the same tokens for defining columns, and
+% new column types can be defined with |\newcolumntype|. One can use
+% |\multicolumn|, |\hline|, |\cline|, and |\vline|. Moreover,
+% |equationarray| makes use of |\arraycolsep|, |\extracolsep|, and
+% |\extrarowheight|.\footnote{Some people don't like the large spacing
+% between the columns of the standard |eqnarray|. Don't be surprised
+% that |equationarray| seems to have the same ``bug''. To decrease
+% the spacing between two columns you just have to change the value
+% of $\tt\backslash$|arraycolsep|, see the example above.} In an
+% |equationarray| all these things have the same meaning like in an
+% |array|. The main difference is that by default each entry of an
+% |equationarray| is displayed with |\displaystyle| whereas |array|
+% uses |\textstyle|. One can avoid page breaks between two lines by
+% using the star version |\\*|. There is also the star version
+% |equationarray*| which has usually no line numbers. But if for a
+% particular line you still want a line number, you can use
+% |\yesnumber|. (I find this more convenient than having many lines
+% with |\nonumber|.) Inside the |equationarray| and |equationarray*|
+% environments, there is also the macro |\eqnnum| available. It takes
+% one argument that is used as the equation number for the current
+% line. The normal line number is always suppressed in such a line.
+%
+% The default is that without the |fleqn| option the equations are
+% centered. With the |fleqn| option they are left-justified, indented
+% by |\mathindent|.\footnote{Thanks to Piet van Oostrum
+% |<piet@cs.ruu.nl>| who added the code which is necessary for the
+% |fleqn| option.} With the optional argument |[l]| or |[r]| the
+% |equationarray| will appear flushleft or flushright, with the option
+% |[c]| the |equationarray| will be centered, e.g.\
+% |\begin{equationarray}[l]{rclll}|.
+%
+% \section{Bugs}
+%
+% Compared with |array| the |equationarray| uses slightly extended
+% versions of |\@classz| and |\multicolumn| because it must count the
+% columns. Each time you insert a |&| the counter |\@eqcnt| is
+% increased by one. |\multicolumn| increases |\@eqcnt| according to
+% the number of |\span|ed columns. Thus if you have an |array| within
+% the |equationarray| environment and in that line of the
+% |equationarray| you have less |&|'s than columns defined in the
+% preamble, then the line numbering will be not flushright but further
+% to the left.
+%
+% In that case you can either fill up the end of the line with extra
+% |&|'s (straightforward) or you can put the original definition of
+% |\@classz| and |\multicolumn| within the definition of the |array|
+% command.
+%
+% \section{License}
+%
+% This \LaTeX package is free software: you can redistribute it
+% and/or modify it under the terms of the GNU General Public License
+% as published by the Free Software Foundation, either version 3 of
+% the License, or (at your option) any later version.
+%
+% This package is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% The GNU General Public License is available at\\
+% \texttt{http://www.gnu.org/licenses/gpl.html}
+%
+% \section{The code}
+%
+%\iffalse
+%<*style>
+%\fi
+% \begin{macrocode}
+ \typeout{equationarray \fileversion\space<\filedate>}
+ % \typeout{English documentation\space\space<\docdate>}
+ \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{eqnarray}
+% \end{macrocode}
+% |equationarray| can't do anything if we don't have the |array| package.
+% \begin{macrocode}
+\RequirePackage{array}
+% \end{macrocode}
+% Process the |fleqn| option.
+% \begin{macrocode}
+\def\eqnarr@left{\@centering}
+\let\eqnarr@opts\relax
+\DeclareOption{fleqn}{
+ \def\eqnarr@left{\mathindent}
+ \def\eqnarr@opts{\displaywidth\linewidth
+ \advance\displaywidth-\mathindent} }
+\ProcessOptions
+% \end{macrocode}
+%
+% \begin{macro}{\equationarray}
+% \begin{macrocode}
+\def\equationarray{%
+ \col@sep\arraycolsep
+ \def\d@llarbegin{$\displaystyle}%
+ \def\d@llarend{$}%
+ \stepcounter{equation}%
+ \let\@currentlabel=\theequation
+ \set@eqnsw \global\@eqcnt\z@ \global\@eqargcnt\z@
+ \let\@classz\@eqnclassz
+% \end{macrocode}
+% We need an extended definition of |\multicolumn| which increases
+% the counter |\@eqcnt| according to the number of columns covered
+% by |\multicolumn|.
+% \begin{macrocode}
+ \def\multicolumn##1##2##3{\@eqnmulticolumn{##1}{##2}{##3}%
+ \global\advance\@eqcnt##1
+ \global\advance\@eqcnt\m@ne}%
+% \end{macrocode}
+% The macro |\eqnnum| initializes |\@eqnarrnum| and suppresses
+% ordinary equation numbering.
+% \begin{macrocode}
+ \def\eqnnum##1{\global\@eqnswfalse\gdef\@eqnarrnum{##1}}
+ \def\@halignto{to\displaywidth}%
+ \@ifnextchar[{\@equationarray}{\@equationarray[.]}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@eqnmulticolumn}
+% |\@eqnmulticolumn| equals the original version of |\multicolumn|.
+% \begin{macrocode}
+\let\@eqnmulticolumn=\multicolumn
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\nonumber,\yesnumber}
+% Note that |\nonumber| is already defined in standard latex.tex
+% \begin{macrocode}
+% \def\nonumber{\global\@eqnswfalse}
+\def\yesnumber{\global\@eqnswtrue}
+\let\set@eqnsw=\yesnumber
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@amper}
+% We need a macro for |&| that expands at the right time.
+% \begin{macrocode}
+\def\@amper{&}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@eqargcnt}
+% The main idea about the |equationarray| is the following: The
+% counter |\@eqargcnt| counts the number of columns defined in the
+% preamble. In each line of the |equationarray|, the counter
+% |\@eqcnt| counts the number of |&| which have been introduced
+% explicitely by the user. By comparing these counters we can
+% silently fill every line of the |equationarray| with exactly
+% |\@eqargcnt| copies of |&| before we insert the equation
+% number. See also the \TeX book, Exercise 22.9.
+% \begin{macrocode}
+\newcount\@eqargcnt % counts number of columns
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@equationarray}
+% \begin{macrocode}
+\def\@equationarray[#1]#2{%
+ \eqnarr@opts
+ \@tempdima \ht \strutbox
+ \advance \@tempdima by\extrarowheight
+ \setbox\@arstrutbox=\hbox{\vrule
+ \@height\arraystretch \@tempdima
+ \@depth\arraystretch \dp \strutbox
+ \@width\z@}%
+ \gdef\advance@eqargcnt{\global\advance\@eqargcnt\@ne}%
+ \begingroup
+ \@mkpream{#2}%
+ \xdef\@preamble{%
+ \if #1l\tabskip\z@ \else\if #1r\tabskip\@centering
+ \else\if #1c\tabskip\@centering
+ \else\tabskip\eqnarr@left \fi\fi\fi
+ \halign \@halignto
+ \bgroup \tabskip\z@ \@arstrut \@preamble
+ \if #1l\tabskip\@centering \else\if #1r\tabskip\z@
+ \else\tabskip\@centering \fi\fi
+% \end{macrocode}
+%
+% Here we need an extra column for the equation-number
+%
+% \begin{macrocode}
+ \@amper\llap{\@sharp}\tabskip\z@\cr}%
+ \endgroup
+ \gdef\advance@eqargcnt{}%
+ \bgroup
+ \let\@sharp## \let\protect\relax
+ \m@th \let\\=\@equationcr
+ \let\par\@empty
+ $$ % $$ BRACE MATCHING HACK
+ \lineskip \z@
+ \baselineskip \z@
+ \@preamble}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@eqnclassz}
+% |\@eqnclassz| does the same thing as |\@classz| except that we add\\
+% |\advance@eqargcnt|
+% \begin{macrocode}
+\def\@eqnclassz{\@classx
+ \@tempcnta \count@
+ \advance@eqargcnt
+ \prepnext@tok
+ \@addtopreamble{%
+ \global\advance\@eqcnt\@ne
+ \ifcase \@chnum
+ \hfil \d@llarbegin \insert@column \d@llarend\hfil \or
+ \d@llarbegin \insert@column \d@llarend \hfil \or
+ \hfil\kern\z@ \d@llarbegin \insert@column \d@llarend \or
+ $\vcenter
+ \@startpbox{\@nextchar}\insert@column \@endpbox $\or
+ \vtop \@startpbox{\@nextchar}\insert@column \@endpbox \or
+ \vbox \@startpbox{\@nextchar}\insert@column \@endpbox
+ \fi}\prepnext@tok}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\endequationarray}
+% \begin{macrocode}
+\def\endequationarray{\@zequationcr
+ \egroup
+ \global\advance\c@equation\m@ne $$ % $$ BRACE MATCHING HACK
+ \egroup\global\@ignoretrue
+ \gdef\@preamble{}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@equationcr}
+% If we have |\\*| the command |\@equationcr| avoids page breaks
+% \begin{macrocode}
+\def\@equationcr{${\ifnum0=`}\fi\@ifstar{\global\@eqpen\@M
+ \@xequationcr}{\global\@eqpen\interdisplaylinepenalty
+ \@xequationcr}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@xequationcr}
+% \begin{macrocode}
+\def\@xequationcr{%
+ \@ifnextchar[{\@argequationcr}{\ifnum0=`{\fi}${}%
+ \@zequationcr}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@argequationcr}
+% \begin{macrocode}
+\def\@argequationcr[#1]{\ifnum0=`{\fi}${}\ifdim #1>\z@
+ \@xargequationcr{#1}\else
+ \@yargequationcr{#1}\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@xargequationcr}
+% \begin{macrocode}
+\def\@xargequationcr#1{\unskip
+ \@tempdima #1\advance\@tempdima \dp \@arstrutbox
+ \vrule \@depth\@tempdima \@width\z@
+ \@zequationcr\noalign{\penalty\@eqpen}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@yargequationcr}
+% \begin{macrocode}
+\def\@yargequationcr#1{%
+ \@zequationcr\noalign{\penalty\@eqpen\vskip #1}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@eqnarrnum}
+% The macro |\@eqnarrnum| holds a customized equation number.
+% This macro is initialized via the macro |\eqnnum|.
+% \begin{macrocode}
+\let\@eqnarrnum\relax
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@zequationcr}
+% We add |&\omit| for those columns that will remain empty.
+% Note that without |\omit| we already have |\advance\@eqcnt\@ne| in
+% the preamble.
+%
+% \begin{macrocode}
+\def\@zequationcr{\@whilenum\@eqcnt <\@eqargcnt
+ \do{\@amper\omit\global\advance\@eqcnt\@ne}%
+% \end{macrocode}
+% We add an extra alignment tab for the equationnumber
+% \begin{macrocode}
+ \@amper
+% \end{macrocode}
+% Either we insert the regular equation number or the customized one.
+% \begin{macrocode}
+ \if@eqnsw\@eqnnum\stepcounter{equation}\else
+ \@eqnarrnum\global\let\@eqnarrnum\relax\fi
+ \set@eqnsw\global\@eqcnt\z@\cr}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\equationarray*}
+% Finally we define the |equationarray*| environment. It does exactly
+% the same thing as |\equationarray| except that we |\let| the command
+% |\set@eqnsw| equal |\nonumber|
+% \begin{macrocode}
+\@namedef{equationarray*}{%
+ \let\set@eqnsw=\nonumber \equationarray}
+\@namedef{endequationarray*}{\endequationarray}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</style>
+%<+driver>\documentclass{article}
+%<+driver>\usepackage{doc}
+%<+driver>\usepackage{eqnarray}
+%<+driver>\begin{document}
+%<+driver> \DocInput{eqnarray.dtx}
+%<+driver>\end{document}
+%\fi
+\endinput
diff --git a/macros/latex/contrib/eqnarray/eqnarray.ins b/macros/latex/contrib/eqnarray/eqnarray.ins
new file mode 100644
index 0000000000..d18d8bc263
--- /dev/null
+++ b/macros/latex/contrib/eqnarray/eqnarray.ins
@@ -0,0 +1,41 @@
+%% Copyright (C) 1993-2010 Roland Winkler <rwinkler@niu.edu>
+%%
+%% This file will generate fast loadable file eqnarray.sty from
+%% eqnarray.dtx when run through LaTeX or TeX
+%%
+%% This LaTeX package is free software: you can redistribute it
+%% and/or modify it under the terms of the GNU General Public License
+%% as published by the Free Software Foundation, either version 3 of
+%% the License, or (at your option) any later version.
+%%
+%% This package is distributed in the hope that it will be useful,
+%% but WITHOUT ANY WARRANTY; without even the implied warranty of
+%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+%% GNU General Public License for more details.
+%%
+%% The GNU General Public License is available at
+%% http://www.gnu.org/licenses/gpl.html
+%%
+%%%% --------------- start of docstrip commands ------------------
+%%
+\def\batchfile{eqnarray.ins}
+\input docstrip.tex
+\keepsilent
+
+\generateFile{eqnarray.sty}{t}{%
+ \from{eqnarray.dtx}{style}}
+
+\generateFile{eqnarray.drv}{t}{%
+ \from{eqnarray.dtx}{driver}}
+
+\Msg{***********************************************************}
+\Msg{*}
+\Msg{* To finish the installation move the following}
+\Msg{* style file into a directory searched by LaTeX:}
+\Msg{*}
+\Msg{* \space\space eqnarray.sty}
+\Msg{*}
+\Msg{* To produce the documentation run the file}
+\Msg{* `eqnarray.drv' through LaTeX.}
+\Msg{*}
+\Msg{***********************************************************}
diff --git a/macros/latex/contrib/eqnarray/eqnarray.pdf b/macros/latex/contrib/eqnarray/eqnarray.pdf
new file mode 100644
index 0000000000..bf4e4af12f
--- /dev/null
+++ b/macros/latex/contrib/eqnarray/eqnarray.pdf
Binary files differ