diff options
-rw-r--r-- | Master/texmf-dist/doc/latex/mhequ/README | 19 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/mhequ/example.pdf | bin | 45071 -> 98452 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/mhequ/example.tex | 35 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/mhequ/mhequ.sty | 131 |
4 files changed, 115 insertions, 70 deletions
diff --git a/Master/texmf-dist/doc/latex/mhequ/README b/Master/texmf-dist/doc/latex/mhequ/README new file mode 100644 index 00000000000..66890d3eefb --- /dev/null +++ b/Master/texmf-dist/doc/latex/mhequ/README @@ -0,0 +1,19 @@ +mhequ package by Martin Hairer +Version 1.7 dated 25/08/2015 + +This package provides an easy way to typeset multilign / multicolumn +equations and to add subequation numbering. See the example and the +comments at the beginning of mhequ.sty for usage instructions. + +Files included in the package: +====== Documentation ====== + +README +example.pdf +example.tex + +===== Files for LaTeX ===== + +mhequ.sty + +=========================== diff --git a/Master/texmf-dist/doc/latex/mhequ/example.pdf b/Master/texmf-dist/doc/latex/mhequ/example.pdf Binary files differindex 136b1f5b578..d6813c2b839 100644 --- a/Master/texmf-dist/doc/latex/mhequ/example.pdf +++ b/Master/texmf-dist/doc/latex/mhequ/example.pdf diff --git a/Master/texmf-dist/doc/latex/mhequ/example.tex b/Master/texmf-dist/doc/latex/mhequ/example.tex index f8b49eb0b19..c0eca63f65c 100644 --- a/Master/texmf-dist/doc/latex/mhequ/example.tex +++ b/Master/texmf-dist/doc/latex/mhequ/example.tex @@ -11,9 +11,14 @@ \begin{document} -\section*{Use of ``mhequ.sty'' (v1.6.1)} +\title{Using the mhequ package} +\author{Martin Hairer} +\date{Version 1.7, \today} +\maketitle +\thispagestyle{empty} + \label{mySec} -A simple labelled equation: +Here is a simple labelled equation: \begin{equ}[onelab] \sum_{i=1}^5 X_i^j X^j_i = y^j \;. \end{equ} @@ -21,6 +26,8 @@ Removing or adding the label does not require a change of environment: \begin{equ} \sum_{i=1}^5 X_i^j X^j_i = y^j \;. \end{equ} +However, if the option \texttt{numberall} is set, then every single +equation is numbered. A simple list of equations can be displayed either with one number per equation \begin{equs} @@ -44,20 +51,22 @@ Let us make a first group: g(x) &= \cos(x) - x^2 + 4\;,\label{e:g}\\[3mm] h(x) &= f(x) + g(x) -3\;. \label{e:h} \end{equs} -You can refer to the whole block \eref{otherlabel} or to one +One can refer to the whole block \eref{otherlabel} or to one line, like \eref{e:f} for example. -You can use any tag you like with the \texttt{\string\tag} +It is possible to use any tag one likes with the \texttt{\string\tag} command \begin{equ}[mylabel] x = y\;. \tag{$\star$} \end{equ} -Of course, you can also refer to it as usual: \eref{mylabel}. -You can mix \texttt{mhequ} with the usual \texttt{equation} environment. (But why would you?) +Such an equation can be referred to as usual: \eref{mylabel}. +Of course, \texttt{mhequ} can be used in conjunction with the usual \texttt{equation} environment, +but \texttt{mhequ} is great, so why would you want to do this? \begin{equation} x=y+z \end{equation} -If you want to typeset several columns of equations, it is quite easy: -\begin{equs}[3] +Typesetting several columns of equations is quite easy and doesn't require 10 different environments +with awkward names: +\begin{equs} x&=y+z &\qquad a&= b+c &\qquad x&= v \label{laba}\\ x&=y+z &\qquad a&= b+c &\qquad x&= u+1\tag{\ref{laba}'}\label{labtag}\\ \multicol{4}{\text{(multicol)}} &\qquad x&=y \\ @@ -66,18 +75,18 @@ If you want to typeset several columns of equations, it is quite easy: \intertext{and also (this is some \texttt{\string\intertext})} x&=y+z &\qquad a&= (b+c)^2 - 5 &\qquad \ell&= m\label{labb} \end{equs} -You can even extend the block \eref{otherlabel} much later like +We can even extend the block \eref{otherlabel} much later like \minilab{otherlabel} -\begin{equs}[3] +\begin{equs} x&=y+z &\quad x&=y+z &\quad f(x)&= b\label{e:x1}\\ x&=y+z & x&=y+z &\quad g(x)&= b\label{e:x2} \\ \multicol{6}{\sin^2 x + \cos^2 x = 1} \label{e:x3} \end{equs} -You can also change the type of the subnumbering and use the -\texttt{\string\text} command without having to load \texttt{amstext}. Like for example +It is possible to change the type of subnumbering and to use the +\texttt{\string\text} command without having to load \texttt{amstext}, like so \setlabtype{Alph} \minilab{alab} -\begin{equs}[2] +\begin{equs} I_1 &= \int_a^b g(x)\,dx\;,&\quad&\text{(First equation)} \label{e:1}\\ I_2 &= \int_a^b g(x^2-1)\,dx\;.&\quad&\text{(Second equation)} \label{e:2} \end{equs} diff --git a/Master/texmf-dist/tex/latex/mhequ/mhequ.sty b/Master/texmf-dist/tex/latex/mhequ/mhequ.sty index 34dda2e4d4e..f1708e4bfcd 100644 --- a/Master/texmf-dist/tex/latex/mhequ/mhequ.sty +++ b/Master/texmf-dist/tex/latex/mhequ/mhequ.sty @@ -1,21 +1,23 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % -% mhequ.sty v1.61, Copyright 2005 by Martin Hairer -% This package is public domain. You are strongly encouraged to -% use it and to widespread it. +% mhequ.sty v1.7, Copyright 2015 by Martin Hairer +% This package is public domain. You are strongly encouraged to use +% it and to distribute it further. If you have some contribution to +% it, please let me know! % -% You may download the latest version of this package on my homepage: +% You may download the latest version of this package from % -% http://www.hairersoft.com/LaTeXUtils.html +% http://www.hairer.org/software/mhequ.zip % % Notes: -% Version 1.5 supports the packages "showkeys" (thus the [draft] option is suppressed) +% mhequ supports the packages "showkeys" (thus the [draft] option is suppressed) % and "hyperref". % % Options: % % [lefttag] : Puts equation numbers to the left side of the page % [righttag]: Puts equation numbers to the right side of the page (default) +% [numberall]: Numbers all equations % % Syntax: % @@ -27,14 +29,14 @@ % % Creates a multiline / multicolumn equation environment. % -% n : number of columns. (default : 1) You can also choose n=0. +% n : number of columns. (default : 5) You can also choose n=0. % label : if a label is given, the environment is numbered. (one tag for the whole block) -% The order of [n] and [label] is irrelevant. +% The order of [n] and [label] is irrelevant. % % If no label is given, one can number each line of the block individually by % using the \label command. % -% In the equs environment, the number of '&' signs per line has to be equal to +% In the equs environment, the number of '&' signs per line has to be equal to % 2*n-1 if n>0 and to 0 if n=0. If there are less '&' signs, they are automatically % appended at the end of the line. % @@ -42,6 +44,8 @@ % % \tag{theTag} Replaces the number of the current equation by "theTag" % +% \notag Forces to have no tag (only useful if [numberall] is active) +% % \minilab{label} If "label" has already been used, switches to the minilab "label". % If not, creates a new minilab. Inside a minilab, equations are labelled % (1a), (1b),... instead of (1), (2), etc... You can refer to the number @@ -66,19 +70,21 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{mhequ} -\DeclareOption{righttag}{\global\@leftfalse} -\DeclareOption{lefttag}{\global\@lefttrue} -\DeclareOption{fleqn}{\global\@flushtrue} -\DeclareOption{leqno}{\global\@lefttrue} - -\newif\if@haslab -\newif\if@useminilab -\newcount\@nocols -\newcount\@nocolstot -\newif\if@tag -\newif\if@left -\newif\if@flush -\@haslabfalse +\DeclareOption{righttag}{\global\@MHleftfalse} +\DeclareOption{lefttag}{\global\@MHlefttrue} +\DeclareOption{numberall}{\global\@MHnumberalltrue} +\DeclareOption{fleqn}{\global\@MHflushtrue} +\DeclareOption{leqno}{\global\@MHlefttrue} + +\newif\if@MHhaslab +\newif\if@MHuseminilab +\newif\if@MHnumberall +\newcount\@MHnocols +\newcount\@MHnocolstot +\newif\if@MHtag +\newif\if@MHleft +\newif\if@MHflush +\@MHnumberallfalse \ProcessOptions @@ -89,8 +95,11 @@ \def\@MHputleft#1{\hb@xt@.01\p@{}\rlap{\hskip-\displaywidth#1\@MHputnumber}} \def\@MHputright#1{\hb@xt@.01\p@{}\llap{#1\@MHputnumber}} -\if@left\let\@MHput@lbl\@MHputleft% +\if@MHleft\let\@MHput@lbl\@MHputleft% \else\let\@MHput@lbl\@MHputright\fi + +\def\@MHresetlab{\if@MHnumberall\global\@MHhaslabtrue\else\global\@MHhaslabfalse\fi} +\@MHresetlab \def\@MHref#1{\@ifundefined{r@#1}{??}{\@saveref{#1}}} %%%%% Computes the length of its argument @@ -98,7 +107,7 @@ \def\computelength#1{\@MHLength=0 \getlength#1\end} \def\getlength#1{\ifx#1\end \let\next=\relax \else \advance\@MHLength by1 \let\next=\getlength \fi \next} -\def\@makelabel#1{\stepcounter{equation}\global\def\@mylabel{#1}% +\def\@makelabel#1{\refstepcounter{equation}\global\def\@mylabel{#1}% \@ifundefined{c@lab@#1}{\newcounter{lab@#1}}{}\setcounter{lab@#1}{0}% \immediate\write\@auxout{\string\@ifundefined{c@lab@#1}{\string\newcounter{lab@#1}}% {}\string\setcounter{lab@#1}{0}}% @@ -109,18 +118,13 @@ \def\@uselabel#1{\global\def\@mylabel{#1} \global\expandafter\let\expandafter\c@MHCurrentCount\csname c@lab@#1\endcsname } -\def\@MHreset{\global\def\@MHeqno{\theequation}\global\@useminilabfalse\global\@haslabfalse} +\def\@MHreset{\global\def\@MHeqno{\theequation}\global\@MHuseminilabfalse\@MHresetlab} \def\@MHbuildlab#1{\@ifundefined{r@#1}% - {\global\def\@MHeqno{??\sublabeltype{MHCurrentCount}}}% + {\global\def\@MHeqno{\theequation\sublabeltype{MHCurrentCount}}}% {\global\def\@MHeqno{\ref{\@mylabel}\sublabeltype{MHCurrentCount}}}% } -\def\@MHUseLab#1{\@MHbuildlab{#1}\global\@useminilabtrue} +\def\@MHUseLab#1{\@MHbuildlab{#1}\global\@MHuseminilabtrue} -\def\@minilab#1{\let\MHsavelabel=\label% - \@MHUseLab{#1}\@ifundefined{MHused@#1}% - {\@makelabel{#1}}{\@uselabel{#1}}% - \let\label=\MHsavelabel\egroup\global\@ignoretrue} -\def\minilab{\bgroup\MH@changecodes\@minilab} \newskip\MHcenter \MHcenter=0pt plus 1000pt minus 1000pt \newskip\MHbig \MHbig=1000pt plus 0pt minus 1000pt @@ -145,26 +149,39 @@ \def\@MHcrb{{\ifnum0=`}\fi\@ifnextchar[{\@MHcrbwith}{\@MHcrbwith[\z@]}} \def\@MHcrbwith[#1]{\ifnum0=`{\fi}\MH@dd@nds\global\@MHlineskip=#1\cr} -\def\@MHlabel#1{\global\@haslabtrue\global\def\@MHcurrentlabel{#1}} +\def\@MHlabel#1{\global\@MHhaslabtrue\global\def\@MHcurrentlabel{#1}} \def\@MHwritelabel{\def\@currentlabel{\@MHeqno}% - \if@left\kern\displaywidth\kern0.2truecm\else\kern0.2cm\fi% + \if@MHleft\kern\displaywidth\kern0.2truecm\else\kern0.2cm\fi% \MHsavelabel{\@MHcurrentlabel}% - \if@left\kern-\displaywidth\kern-0.2truecm\else\kern-0.2cm\fi} + \if@MHleft\kern-\displaywidth\kern-0.2truecm\else\kern-0.2cm\fi} -\def\@MHstep{\if@tag\else\if@useminilab\refstepcounter{MHCurrentCount}% +\def\@MHstep{\if@MHtag\else\if@MHuseminilab\stepcounter{MHCurrentCount}% \else\refstepcounter{equation}\fi\fi} -\def\@MHputnumber{\if@haslab\@MHstep\if@left\@MHwritelabel\fi% +\def\@MHputnumber{\if@MHhaslab\@MHstep\if@MHleft\@MHwritelabel\fi% \hbox{\rm(\@MHeqno)}% - \if@left\else\@MHwritelabel\fi% - \fi\global\@haslabfalse} + \if@MHleft\else\@MHwritelabel\fi% + \fi\@MHresetlab} + +\def\@MHnotag{\@MHhaslabfalse} \def\@saveMHComms{\@restoretag\let\MHsavecr=\\\let\\=\@MHcr\let\@saveref=\ref\let\ref=\@MHref% - \let\MHsavelabel=\label\let\label=\@MHlabel\let\@MHsavemult\multicol% - \let\multicol\@MHspan\let\@MHsavetext\text\let\text\hbox} + \let\MHsavelabel=\label\let\label=\@MHlabel\let\@MHsavemult\multicol\let\@MHsavetag\notag\let\notag\@MHnotag% + \let\multicol\@MHspan\let\@MHsavetext\text\let\text\hbox\let\@MHsaveequation\theequation\let\theequation\@MHequation} \def\@restoreMHComms{\let\\=\MHsavecr\let\label=\MHsavelabel\@MHreset\let\ref=\@saveref% - \let\multicol\@MHsavemult\let\text\@MHsavetext} + \let\multicol\@MHsavemult\let\notag\@MHsavetag\let\text\@MHsavetext\let\theequation\@MHsaveequation\global\def\@MHequation{\@MHsaveequation}} + + + +\def\@minilab#1{\let\MHsavelabel=\label% + \@MHUseLab{#1}\@ifundefined{MHused@#1}% + {\@makelabel{#1}}{\@uselabel{#1}}% + \let\label=\MHsavelabel\egroup\global\@ignoretrue} +\def\minilab{\bgroup\MH@changecodes\@minilab} +\def\@MHequation{\@MHsaveequation} + + %% Preamble commands \def\MHpre@ne{\MHs@tr@m\hfil$\MH@lign\displaystyle{\MHsh@rp}$\tabskip\z@skip&% @@ -239,29 +256,29 @@ \def\@ealign{\@MHcr\egroup} -\def\@restoretag{\if@tag\global\@tagfalse\global\let\@MHeqno=\@MHsaveno\fi} +\def\@restoretag{\if@MHtag\global\@MHtagfalse\global\let\@MHeqno=\@MHsaveno\fi} \def\@MHtag#1{% - \global\@tagtrue\global\let\@MHsaveno=\@MHeqno% + \global\@MHtagtrue\global\let\@MHsaveno=\@MHeqno% \global\def\@MHeqno{#1}\egroup} \def\tag{\bgroup\MH@changecodes\@MHtag} -\def\@equnolabel{\global\@haslabfalse} -\def\@equlabel[#1]{\label{#1}\global\@haslabtrue} +\def\@equnolabel{\@MHresetlab} +\def\@equlabel[#1]{\label{#1}\global\@MHhaslabtrue} \def\@ealignb{\@MHcr\egroup\egroup} -\def\@equbopt[#1]{\computelength{#1}\ifnum\@MHLength=1\@nocols=#1\else - \label{#1}\global\@haslabtrue\fi +\def\@equbopt[#1]{\computelength{#1}\ifnum\@MHLength=1\@MHnocols=#1\else + \label{#1}\global\@MHhaslabtrue\fi \@ifnextchar[{\@equbopt}{\@equb}} -\def\@equb{\@newbalign{\the\@nocols}} +\def\@equb{\@newbalign{\the\@MHnocols}} %\def\equa{\global\let\@MHcr\@MHcrb% -% $$\@saveMHComms\global\@nocols=1% +% $$\@saveMHComms\global\@MHnocols=1% % \@ifnextchar[{\@equbopt}{\@equb}} -%\def\endequa{\@ealignb\if@haslab\@MHput@lbl{}\fi% +%\def\endequa{\@ealignb\if@MHhaslab\@MHput@lbl{}\fi% % \@restoreMHComms$$\global\@ignoretrue} -\if@flush +\if@MHflush \def\equ{\@saveMHComms \@beginparpenalty\predisplaypenalty \@endparpenalty\postdisplaypenalty @@ -277,7 +294,7 @@ \else \def\equ{$$\@saveMHComms\@ifnextchar[\@equlabel\@equnolabel} \def\endequ{% - \if@haslab\if@left\leqno\else\eqno\fi{\@MHputnumber}\fi% + \if@MHhaslab\if@MHleft\leqno\else\eqno\fi{\@MHputnumber}\fi% \@restoreMHComms$$\global\@ignoretrue} \fi @@ -286,16 +303,16 @@ \newif\if@isequa -\def\@analyzearg[#1]{\computelength{#1}\ifnum\@MHLength=1\@nocols=#1\else +\def\@analyzearg[#1]{\computelength{#1}\ifnum\@MHLength=1\@MHnocols=#1\else \@MHlabel{#1}\global\@isequatrue\fi% \@ifnextchar[{\@analyzearg}{\if@isequa% \global\let\@MHcr\@MHcrb% $$\@saveMHComms\@equb% - \else\@begalign[\the\@nocols]\fi}} + \else\@begalign[\the\@MHnocols]\fi}} \def\@endequs{\@ealign\@restoreMHComms$$} -\def\@endequa{\@ealignb\if@haslab\@MHput@lbl{}\fi% +\def\@endequa{\@ealignb\if@MHhaslab\@MHput@lbl{}\fi% \@restoreMHComms$$} -\def\equs{\global\@isequafalse\@nocols=1\@ifnextchar[{\@analyzearg}{\@begalign[1]}} +\def\equs{\global\@isequafalse\@MHnocols=5\@ifnextchar[{\@analyzearg}{\@begalign[5]}} \def\endequs{\if@isequa\@endequa\else\@endequs\fi\global\@ignoretrue} \let\equa\equs \let\endequa\endequs |