From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- macros/latex/contrib/eqnarray/README | 31 +++ macros/latex/contrib/eqnarray/eqnarray.dtx | 402 +++++++++++++++++++++++++++++ macros/latex/contrib/eqnarray/eqnarray.ins | 41 +++ macros/latex/contrib/eqnarray/eqnarray.pdf | Bin 0 -> 114741 bytes 4 files changed, 474 insertions(+) create mode 100644 macros/latex/contrib/eqnarray/README create mode 100644 macros/latex/contrib/eqnarray/eqnarray.dtx create mode 100644 macros/latex/contrib/eqnarray/eqnarray.ins create mode 100644 macros/latex/contrib/eqnarray/eqnarray.pdf (limited to 'macros/latex/contrib/eqnarray') 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 + +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 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, || +% 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 +% || 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 +% +%<+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 +%% +%% 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 Binary files /dev/null and b/macros/latex/contrib/eqnarray/eqnarray.pdf differ -- cgit v1.2.3