summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/mh/mathtools.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/mh/mathtools.dtx')
-rw-r--r--Master/texmf-dist/source/latex/mh/mathtools.dtx262
1 files changed, 187 insertions, 75 deletions
diff --git a/Master/texmf-dist/source/latex/mh/mathtools.dtx b/Master/texmf-dist/source/latex/mh/mathtools.dtx
index 96ac01a4a9a..585ec5d9b9c 100644
--- a/Master/texmf-dist/source/latex/mh/mathtools.dtx
+++ b/Master/texmf-dist/source/latex/mh/mathtools.dtx
@@ -1,31 +1,134 @@
-% \iffalse meta-comment
-% File `mathtools.dtx'.
-% Copyright 2004 Morten H\o gholm.
-% moho01ab@student.cbs.dk
-%
-% It may be distributed and/or modified under the
-% conditions of the LaTeX Project Public License, either version 1.3
-% of this license or (at your option) any later version.
-% The latest version of this license is in
-% http://www.latex-project.org/lppl.txt
-% and version 1.3 or later is part of all distributions of LaTeX
-% version 2003/12/01 or later.
-%
-% This work has the LPPL maintenance status "maintained".
+% \iffalse meta-comment
%
-% The Current Maintainer of this work is Morten H\o gholm.
+% Copyright (C) 2004-2007 by Morten Hoegholm <mh.ctan@gmail.com>
%
-% This work consists of the files mathtools.dtx and mathtools.ins
-% and the derived file mathtools.sty.
-%
-%<package>\NeedsTeXFormat{LaTeX2e}
-%<package>\ProvidesPackage{mathtools}
-%<*dtx>
- \ProvidesFile{mathtools.dtx}
-%</dtx>
- [2004/10/10 v1.01a mathematical typesetting tools (MH)]
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either
+% version 1.3 of this license or (at your option) any later
+% version. The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of
+% LaTeX version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status "maintained".
+%
+% This Current Maintainer of this work is Morten Hoegholm.
+%
+% This work consists of the main source file mathtools.dtx
+% and the derived files
+% mathtools.sty, mathtools.pdf, mathtools.ins, mathtools.drv.
+%
+% Distribution:
+% CTAN:macros/latex/contrib/mh/mathtools.dtx
+% CTAN:macros/latex/contrib/mh/mathtools.pdf
+%
+% Unpacking:
+% (a) If mathtools.ins is present:
+% tex mathtools.ins
+% (b) Without mathtools.ins:
+% tex mathtools.dtx
+% (c) If you insist on using LaTeX
+% latex \let\install=y\input{mathtools.dtx}
+% (quote the arguments according to the demands of your shell)
+%
+% Documentation:
+% (a) If mathtools.drv is present:
+% latex mathtools.drv
+% (b) Without mathtools.drv:
+% latex mathtools.dtx; ...
+% The class ltxdoc loads the configuration file ltxdoc.cfg
+% if available. Here you can specify further options, e.g.
+% use A4 as paper format:
+% \PassOptionsToClass{a4paper}{article}
+%
+% Programm calls to get the documentation (example):
+% pdflatex mathtools.dtx
+% makeindex -s gind.ist mathtools.idx
+% pdflatex mathtools.dtx
+% makeindex -s gind.ist mathtools.idx
+% pdflatex mathtools.dtx
+%
+% Installation:
+% TDS:tex/latex/mh/mathtools.sty
+% TDS:doc/latex/mh/mathtools.pdf
+% TDS:source/latex/mh/mathtools.dtx
+%
+%<*ignore>
+\begingroup
+ \def\x{LaTeX2e}
+\expandafter\endgroup
+\ifcase 0\ifx\install y1\fi\expandafter
+ \ifx\csname processbatchFile\endcsname\relax\else1\fi
+ \ifx\fmtname\x\else 1\fi\relax
+\else\csname fi\endcsname
+%</ignore>
+%<*install>
+\input docstrip.tex
+\Msg{************************************************************************}
+\Msg{* Installation}
+\Msg{* Package: mathtools 2007/12/03 v1.03 (MH)}
+\Msg{************************************************************************}
+
+\keepsilent
+\askforoverwritefalse
+
+\preamble
+
+This is a generated file.
+
+Copyright (C) 2002-2007 by Morten Hoegholm <mh.ctan@gmail.com>
+
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either
+version 1.3 of this license or (at your option) any later
+version. The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+and version 1.3 or later is part of all distributions of
+LaTeX version 2005/12/01 or later.
+
+This work has the LPPL maintenance status "maintained".
+
+This Current Maintainer of this work is Morten Hoegholm.
+
+This work consists of the main source file mathtools.dtx
+and the derived files
+ mathtools.sty, mathtools.pdf, mathtools.ins, mathtools.drv.
+
+\endpreamble
+
+\generate{%
+ \file{mathtools.ins}{\from{mathtools.dtx}{install}}%
+ \file{mathtools.drv}{\from{mathtools.dtx}{driver}}%
+ \usedir{tex/latex/mh}%
+ \file{mathtools.sty}{\from{mathtools.dtx}{package}}%
+}
+
+\obeyspaces
+\Msg{************************************************************************}
+\Msg{*}
+\Msg{* To finish the installation you have to move the following}
+\Msg{* file into a directory searched by TeX:}
+\Msg{*}
+\Msg{* mathtools.sty}
+\Msg{*}
+\Msg{* To produce the documentation run the file `mathtools.drv'}
+\Msg{* through LaTeX.}
+\Msg{*}
+\Msg{* Happy TeXing!}
+\Msg{*}
+\Msg{************************************************************************}
+
+\endbatchfile
+%</install>
+%<*ignore>
+\fi
+%</ignore>
%<*driver>
-\documentclass[a4paper]{ltxdoc}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesFile{mathtools.drv}%
+ [2007/12/03 v1.03 mathematical typesetting tools (MH)]
+\documentclass{ltxdoc}
+\IfFileExists{fourier.sty}{\usepackage{fourier}}{}
\addtolength\marginparwidth{-25pt}
\usepackage{mathtools}
@@ -36,7 +139,7 @@
\providecommand*\email[1]{\href{mailto:#1}{\texttt{#1}}}
\providecommand*\mode[1]{\texttt{[#1]}}
\providecommand*\file[1]{\texttt{#1}}
-\usepackage{color,varioref}
+\usepackage{xcolor,varioref}
\makeatletter
\newcommand*\thinfbox[2][black]{\fboxsep0pt\textcolor{#1}{\rulebox{{\normalcolor#2}}}}
\newcommand*\thinboxed[2][black]{\thinfbox[#1]{\ensuremath{\displaystyle#2}}}
@@ -131,7 +234,7 @@
\let\MTtheindex\theindex
\def\theindex{\MTtheindex\MakePrivateLetters}
-\usepackage[final,hyperindex=false,linkbordercolor=false]{hyperref}
+\usepackage[final,hyperindex=false]{hyperref}
\renewcommand*\usage[1]{\textit{\hyperpage{#1}}}
\OnlyDescription
@@ -143,7 +246,7 @@
%
% \changes{v1.0}{2004/07/26}{Initial release}
%
-% \GetFileInfo{mathtools.dtx}
+% \GetFileInfo{mathtools.drv}
%
% \CheckSum{2004}
%
@@ -189,7 +292,7 @@
% if you have any good macros or just macros that help you when
% writing mathematics, then don't hesitate to report them to me. I
% can be reached at
-% \begin{quote}\email{moho01ab@student.cbs.dk}\end{quote}
+% \begin{quote}\email{mh.ctan@gmail.com}\end{quote}
% This is of course also the address to use in case of bug reports.
%
% \section{Package loading}
@@ -1653,10 +1756,12 @@
% Lets start the package.
% \begin{macrocode}
%<*package>
+\ProvidesPackage{mathtools}%
+ [2007/12/03 v1.03 mathematical typesetting tools (MH)]
% \end{macrocode}
% \begin{macrocode}
\RequirePackage{keyval,calc}
-\RequirePackage{mhsetup}[2004/10/10]
+\RequirePackage{mhsetup}[2007/12/03]
\MHInternalSyntaxOn
% \end{macrocode}
%
@@ -1845,15 +1950,16 @@
\def\MT_extended_tagform:n #1{
\MH_set_boolean_F:n {raw_maketag}
% \end{macrocode}
-% We test if the equation was labelled. We already know if it was tagged
-% manually.
+% We test if the equation was labelled. We already know if it was
+% tagged manually. Have to watch out for \TeX\ inserting a blank line
+% so do not let the tag have width zero.
% \begin{macrocode}
\if_meaning:NN \df@label\@empty
- \MH_if_boolean:nT {manual_tag}
- { \MH_if_boolean:nTF {show_manual_tags}
- { \MT_prev_tagform:n {#1} }
- { \stepcounter{equation} }
- }
+ \MH_if_boolean:nTF {manual_tag}% this was \MH_if_boolean:nT before
+ { \MH_if_boolean:nTF {show_manual_tags}
+ { \MT_prev_tagform:n {#1} }
+ { \stepcounter{equation} }
+ }{\kern1sp}% this last {\kern1sp} is new.
\else:
\MH_if_boolean:nTF {manual_tag}
{ \MH_if_boolean:nTF {show_manual_tags}
@@ -2089,9 +2195,9 @@
\kern-\wd0 \lower.22ex\box0}}
\providecommand*\xrightleftharpoons[2][]{\mathrel{%
\raise.22ex\hbox{%
- $\ext@arrow 3095\MT_rightharpoonup_fill:{\phantom{#1}}{#2}$}%
+ $\ext@arrow 0359\MT_rightharpoonup_fill:{\phantom{#1}}{#2}$}%
\setbox0=\hbox{%
- $\ext@arrow 0359\MT_leftharpoondown_fill:{#1}{\phantom{#2}}$}%
+ $\ext@arrow 3095\MT_leftharpoondown_fill:{#1}{\phantom{#2}}$}%
\kern-\wd0 \lower.22ex\box0}}
% \end{macrocode}
% \end{macro}
@@ -2366,6 +2472,7 @@
% \begin{macro}{\l_MT_multwidth_dim}
% Helpers.
% \begin{macrocode}
+\let \AMS@math@cr@@ \math@cr@@
\MH_new_boolean:n {mult_firstline}
\MH_new_boolean:n {outer_mult}
\newcount\g_MT_multlinerow_int
@@ -2585,7 +2692,7 @@
% The user environment. Scan for an optional argument.
% \begin{macrocode}
\newenvironment{multlined}[1][]
- {
+ {\MH_group_align_safe_begin:
\MT_test_for_tcb_other:nnnnn {#1}
{\def\MT_mult_default_pos:{#1}}
{\def\MT_mult_default_pos:{#1}}
@@ -2599,7 +2706,7 @@
\MT_multlined_second_arg:w
}
{
- \hfilneg \endaligned
+ \hfilneg \endaligned \MH_group_align_safe_end:
}
\MHPrecedingSpacesOn
% \end{macrocode}
@@ -2644,12 +2751,11 @@
% \begin{macrocode}
\newcommand*\DeclarePairedDelimiter[3]{%
\@ifdefinable{#1}{
- \edef\MT_next: {\MH_cs_to_str:N #1}
% \end{macrocode}
% Define the starred command to just put \cs{left} and \cs{right}
% before the delimiters.
% \begin{macrocode}
- \@namedef{MT_delim_\MT_next: _star:}##1
+ \@namedef{MT_delim_\MH_cs_to_str:N #1 _star:}##1
{\left#2 ##1 \right #3}%
% \end{macrocode}
% The command with optional argument. It should be \cs{bigg} or
@@ -2657,13 +2763,15 @@
% \begin{macrocode}
\@xp\@xp\@xp
\newcommand
- \@xp\csname MT_delim_\MT_next: _nostar:\endcsname[2][\\@gobble]
- { \edef\MT_next: {\MH_cs_to_str:N ##1}
+ \@xp\csname MT_delim_\MH_cs_to_str:N #1 _nostar:\endcsname
+ [2][\\@gobble]
+ {
% \end{macrocode}
% With the default optional argument we wind up with \cs{relax},
% else we get \cs{biggr} and \cs{biggl} etc.
% \begin{macrocode}
- \@nameuse {\MT_next: l} #2 ##2 \@nameuse {\MT_next: r} #3}
+ \mathopen{\@nameuse {\MH_cs_to_str:N ##1 l} #2} ##2
+ \mathclose{\@nameuse {\MH_cs_to_str:N ##1 r} #3}}
% \end{macrocode}
% The user command comes here. Just check for the star and choose
% the right internal command.
@@ -2680,50 +2788,54 @@
%
% \subsection{A \texttt{\textbackslash displaystyle} \env{cases} environment}
%
-% \begin{macro}{\MT_start_cases:nn}
+% \begin{macro}{\MT_start_cases:nnn}
% We define a single command that does all the hard work.
% \begin{macrocode}
-\def\MT_start_cases:nn #1#2{
- \RIfM@\else
- \nonmatherr@{\begin{\@currenvir}}%
- \fi
-% \end{macrocode}
-% Put in the brace and center the contents (nothing else makes
-% sense).
-% \begin{macrocode}
- \left\lbrace
- \vcenter \bgroup
- \Let@ \chardef\dspbrk@context\@ne \restore@math@cr
- \spread@equation
- \ialign\bgroup
+\def\MT_start_cases:nnn #1#2#3{ % #1=sep,#2=preamble,#3=delim
+ \RIfM@\else
+ \nonmatherr@{\begin{\@currenvir}}
+ \fi
+ \MH_group_align_safe_begin:
+ \left#3
+ \vcenter \bgroup
+ \Let@ \chardef\dspbrk@context\@ne \restore@math@cr
+ \let \math@cr@@\AMS@math@cr@@
+ \spread@equation
+ \ialign\bgroup
% \end{macrocode}
% Set the first column flush left in \cs{displaystyle} math and the
% second as specified by the second argument. The first argument is
% the separation between the columns. It could be a \cs{quad} or
% something entirely different.
% \begin{macrocode}
- \strut@$\m@th\displaystyle{##}$\hfil&#1\strut@
+ \strut@$\m@th \displaystyle{##}$\hfil &#1\strut@
+ #2
+ \crcr
+}
% \end{macrocode}
-% Insert the specification of the second column.
+% \end{macro}
+% \begin{macro}{\MH_end_cases:}
% \begin{macrocode}
- #2
- \crcr
+\def\MH_end_cases:{\crcr\egroup
+ \restorecolumn@
+ \egroup
+ \MH_group_align_safe_end:
}
% \end{macrocode}
-% \end{macro}
+% \end{macro}
% \begin{macro}{\newcases}
% \begin{macro}{\renewcases}
% Easy creation of new \env{cases}-like environments.
% \begin{macrocode}
-\newcommand*\newcases[3]{
- \newenvironment{#1}
- {\MT_start_cases:nn {#2}{#3}}
- {\endaligned\right.}
+\newcommand*\newcases[5]{% #1=name, #2=sep, #3=preamble, #4=left, #5=right
+ \newenvironment{#1}
+ {\MT_start_cases:nnn {#2}{#3}{#4}}
+ {\MH_end_cases:\right#5}
}
-\newcommand*\renewcases[3]{
- \renewenvironment{#1}
- {\MT_start_cases:nn {#2}{#3}}
- {\endaligned\right.}
+\newcommand*\renewcases[5]{
+ \renewenvironment{#1}
+ {\MT_start_cases:nnn {#2}{#3}{#4}}
+ {\MH_end_cases:\right#5}
}
% \end{macrocode}
% \begin{environment}{dcases}
@@ -2731,8 +2843,8 @@
% \env{dcases} is a traditional cases with display style math in
% both columns, while \env{dcases*} has text in the second column.
% \begin{macrocode}
-\newcases{dcases}{\quad}{$\m@th\displaystyle{##}$\hfil}
-\newcases{dcases*}{\quad}{{##}\hfil}
+\newcases{dcases}{\quad}{$\m@th\displaystyle{##}$\hfil}{\lbrace}{.}
+\newcases{dcases*}{\quad}{{##}\hfil}{\lbrace}{.}
% \end{macrocode}
% \end{environment}
% \end{environment}