diff options
author | Karl Berry <karl@freefriends.org> | 2019-06-23 21:01:05 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2019-06-23 21:01:05 +0000 |
commit | 62b80b39dd7041484514f60bba41725c46cdb015 (patch) | |
tree | 625b8d09b1c75c0133353e36b81e020e5b527851 /Master/texmf-dist | |
parent | 983dd69049554cf96f81034d9b68e065052c40de (diff) |
amscdx (23jun19)
git-svn-id: svn://tug.org/texlive/trunk@51435 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist')
-rw-r--r-- | Master/texmf-dist/doc/latex/amscdx/README | 6 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/amscdx/amscdx.pdf | bin | 0 -> 216025 bytes | |||
-rw-r--r-- | Master/texmf-dist/source/latex/amscdx/amscdx.dtx | 476 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/amscdx/amscdx.ins | 50 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/amscdx/amscdx.sty | 216 |
5 files changed, 748 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/amscdx/README b/Master/texmf-dist/doc/latex/amscdx/README new file mode 100644 index 00000000000..8d6dc8627c2 --- /dev/null +++ b/Master/texmf-dist/doc/latex/amscdx/README @@ -0,0 +1,6 @@ +The original amscd package provides a CD environment that emulates the commutative diagram capabilities of AMS-TEX version 2.x. This means that only simple rectangular diagrams are supported, with no diagonal arrows or more exotic features. + +This enhancement package amscdx implements double (”fat”) and dashed arrows also in both directions (left-right and up-down), and color attributes for arrows and their annotations. The restriction to rectangular geometry remains. This nevertheless allows the drawing of a much broader class of "commutative-diagram-like" diagrams. + +License: The LaTeX Project Public License 1.3c. (c) Martin Vermeer. + diff --git a/Master/texmf-dist/doc/latex/amscdx/amscdx.pdf b/Master/texmf-dist/doc/latex/amscdx/amscdx.pdf Binary files differnew file mode 100644 index 00000000000..8648287274e --- /dev/null +++ b/Master/texmf-dist/doc/latex/amscdx/amscdx.pdf diff --git a/Master/texmf-dist/source/latex/amscdx/amscdx.dtx b/Master/texmf-dist/source/latex/amscdx/amscdx.dtx new file mode 100644 index 00000000000..0d27ffdadb1 --- /dev/null +++ b/Master/texmf-dist/source/latex/amscdx/amscdx.dtx @@ -0,0 +1,476 @@ +% +% \iffalse meta-comment +% +% Copyright 1995, 1999 American Mathematical Society. +% Copyright 2016-2017 LaTeX3 Project and American Mathematical Society. +% Copyright 2019 Martin Vermeer. +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3c +% of this license or (at your option) any later version. +% The latest version of this license is in +% https://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% This work has the LPPL maintenance status `maintained'. +% +% The Current Maintainer of this work is Martin Vermeer. +% +% \fi +% +%\iffalse +%<*driver> +\documentclass{amsdtx} +\usepackage{amscdx,amsmath,xcolor,calc,graphicx} +\GetFileInfo{amscdx.sty} +% Dummy citation to avoid error in an example. +\bibcite{fre:cichon}{C} +\begin{document} +\title{The \pkg{amscd\textcolor[RGB]{255,0,0}{x}} package} +\author{\textcolor{red}{Martin Vermeer}\thanks{firstname.lastname$@$aalto.fi},\\ +based on \pkg{amscd} by\\ +Frank Mittelbach, Rainer Sch\"opf and Michael Downes} +\date{Version \fileversion, \filedate} +\DocInput{amscdx.dtx} +\end{document} +%</driver> +%\fi +% +% \maketitle +% This file is maintained by Martin Vermeer.\\% +% +% \MakeShortVerb\| +% \renewcommand{\operatorname}[1]{\mathop{\mathrm{#1}}} +% \newcommand{\per}{\operatorname{per}} +% \newcommand{\cov}{\operatorname{cov}} +% \newcommand{\non}{\operatorname{non}} +% \newcommand{\cf}{\operatorname{cf}} +% \newcommand{\add}{\operatorname{add}} +% \newcommand{\End}{\operatorname{End}} +% +% \renewcommand{\labelitemi}{$\circ$} +% +% \section{Introduction} +% +% The \pkg{amscd} package provides a \env{CD} environment that +% emulates the commutative diagram capabilities of \amstex/ version +% 2.x. This means that only simple rectangular diagrams are +% supported, with no diagonal arrows or more exotic features. Many +% users will be better served by one of the more powerful diagram +% packages such as \pkg{diagram}, \pkg{xypic}, \pkg{xymatrix}, +% \pkg{kuvio}, or \pkg{tikz-cd}. +% +% Example: +% \begin{equation}\begin{CD} +% S^{{\mathcal{W}}_\Lambda}\otimes T @>j>> T\\ +% @VVV @VV{\End P}V\\ +% (S\otimes T)/I @= (Z\otimes T)/J +% \end{CD}\end{equation} +% \begin{verbatim} +% \begin{equation}\begin{CD} +% S^{{\mathcal{W}}_\Lambda}\otimes T @>j>> T\\ +% @VVV @VV{\End P}V\\ +% (S\otimes T)/I @= (Z\otimes T)/J +% \end{CD}\end{equation} +% \end{verbatim} +% (assuming \cn{End} is defined as an `operator name'. +% +% Another example: +% +% We will make liberal use of Cichon's Diagram \cite{fre:cichon}: +% \begin{equation} +% \begin{CD} +% \cov(\mathcal{L}) @>>> \non(\mathcal{K}) @>>> \cf(\mathcal{K}) @>>> +% \cf(\mathcal{L})\\ +% @VVV @AAA @AAA @VVV\\ +% \add(\mathcal{L}) @>>> \add(\mathcal{K}) @>>> \cov(\mathcal{K}) @>>> +% \non(\mathcal{L}) +% \end{CD}\end{equation} +% \begin{verbatim} +% \begin{equation}\begin{CD} +% \cov(\mathcal{L}) @>>> \non(\mathcal{K}) @>>> \cf(\mathcal{K}) @>>> +% \cf(\mathcal{L})\\ +% @VVV @AAA @AAA @VVV\\ +% \add(\mathcal{L}) @>>> \add(\mathcal{K}) @>>> \cov(\mathcal{K}) @>>> +% \non(\mathcal{L}) +% \end{CD}\end{equation} +% \end{verbatim} +% +% \section{\color[RGB]{255,0,0}Enhancements in amscdx} +% We implemented double ("fat") and dashed arrows in both directions, +% and color attributes for arrows and their annotations. +% Naming scheme: +% \begin{itemize} +% \item The left-right double arrow \verb+@ZZZ+ +% \item The up-down double arrow \verb+@XXX+. +% \end{itemize} +% +% The color, a defined \verb+xcolor+ color name, can be added to an arrow by +% inserting \verb+\CDlor{<+\textit{color}\verb+>}+ into the diagram before, i.e., +% to the immediate left of, the arrow that you wish to color. The command +% affects all arrows following it, so cancel it by the command +% \verb+\CDlor{black}+. If you want to change the color of all the arrows, you +% can place the color command outside and before the \verb+CD+ environment. +% +% Double arrows are obtained by inserting \verb+\CDfattrue+ into the diagram +% before, i.e., to the immediate left of, the arrow that you wish to be +% doubled. The command only affects the arrow immediately following it. To +% change the whole diagram to double arrows, place the \verb+\CDfattrue+ command +% outside and before the \verb+CD+ environment. If you do that, you can exempt +% individual arrows, i.e., make them single again, by the command +% \verb+\CDfatfalse+. +% +% A similar technique applies for obtaining dashed arrows, but with the +% boolean (flag) \verb+\CDash+, i.e., the command \verb+\CDashtrue+ will give +% a dashed arrow, while \verb+\CDashfalse+ will turn it off. \verb+\CDash+ +% will only work if the state of the \verb+\CDfat+ flag be false. If both +% \verb+\CDfat+ and \verb+\CDash+ are true, the \verb+CDfat+ flag takes +% precedence. +% +% A demonstration of some of the new capabilities (yes, this looks tacky): +% \begin{equation} +% \CDfattrue +% \CDlor{green} +% \begin{CD} +% \text{Left header} @. \text{Right header} \\ +% TL @>\text{Atop}>{\hspace{4cm}}> TR \\ +% \CDfatfalse @X\text{Left}X{N_x}X +% \CDfatfalse \CDashtrue +% \CDlor{brown} @A{\scriptsize\begin{array}{r}\text{Right}\\ +% \text{column}\end{array}}A{N^x}A \\ +% ML \CDfatfalse \CDashtrue \CDlor{lime} @<{xyz}<{pqr}< MR \\ +% \CDlor{red} @A{M^2}A\scriptsize\begin{array}{l}\text{Left}\\ +% \text{column}\end{array}A @V+V{N_y}V \\ +% BL \CDlor{purple} @Z\text{above}Z\text{below}Z BR \\ +% \end{CD} +% \end{equation} +% \begin{verbatim} +% \begin{equation} +% \CDfattrue +% \CDlor{green} +% \begin{CD} +% \text{Left header} @. \text{Right header} \\ +% TL @>\text{Atop}>{\hspace{4cm}}> TR \\ +% \CDfatfalse @X\text{Left}X{N_x}X +% \CDfatfalse \CDashtrue +% \CDlor{brown} @A{\scriptsize\begin{array}{r}\text{Right}\\ +% \text{column}\end{array}}A{N^x}A \\ +% ML \CDfatfalse \CDashtrue \CDlor{lime} @<{xyz}<{pqr}< MR \\ +% \CDlor{red} @A{M^2}A\scriptsize\begin{array}{l}\text{Left}\\ +% \text{column}\end{array}A @V+V{N_y}V \\ +% BL \CDlor{purple} @Z\text{above}Z\text{below}Z BR \\ +% \end{CD} +% \end{equation} +% \end{verbatim} +% \hrule +% \bigskip +% +% \StopEventually{} +% +% Standard package info. +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e}% LaTeX 2.09 can't be used (nor non-LaTeX) +[1994/12/01]% LaTeX date must December 1994 or later +\ProvidesPackage{amscdx}[2019/06/04 v2.1x AMS Commutative Diagrams] +% \end{macrocode} +% \begin{macrocode} +\RequirePackage{amsgen} +% \end{macrocode} +% Better not to redefine \verb|\math@cr| if it is already defined, +% because for CD use only we want to omit the part of the code +% related to \verb|\dspbrk@lvl| (see \fn{amsmath.sty}). +% +% [mjd,1999/11/04] These definitions have gone somewhat obsolete; but +% we had probably better leave them as they are for backward +% compatibility. +% \begin{macrocode} +\@ifundefined{math@cr}{% + \def\math@cr{{\ifnum0=`}\fi + \@ifstar{\global\@eqpen\@M\math@cr@}% + {\global\@eqpen\interdisplaylinepenalty \math@cr@}} +% \end{macrocode} +% The following section merely duplicates some code from the +% \pkg{amsmath} package, in case the \pkg{amscdx} package is used by +% itself. For documentation of the code refer to \fn{amsmath.dtx}. +% \begin{macrocode} + \def\math@cr@{\new@ifnextchar[\math@cr@@{\math@cr@@[\z@]}} + \def\math@cr@@[#1]{\ifnum0=`{\fi}\math@cr@@@ + \noalign{\vskip#1\relax}} + \def\restore@math@cr{\def\math@cr@@@{\cr}} +}{} +\restore@math@cr +% \end{macrocode} +% [mjd,1999/11/04] These definitions too are somewhat obsolete; +% but we had probably better leave them as they are for backward +% compatibility. +% \begin{macrocode} +% +\def\clap#1{\hbox to 0pt{\hss#1\hss}} +% +\newif\ifCDfat +\newif\ifCDash +\def\dye@{black} +\def\CDlor#1{\gdef\dye@{#1}} % must be gdef +% +% +\@ifundefined{rightarrowfill@}{ + \def\rightarrowfill@#1{% + \m@th\setboxz@h{$#1\relbar$}\ht\z@\z@ + $#1\copy\z@\mkern-6mu\cleaders + \hbox{$#1\mkern-2mu\box\z@\mkern-2mu$}\hfill + \mkern-6mu\mathord\rightarrow$} + \def\leftarrowfill@#1{% + \m@th\setboxz@h{$#1\relbar$}\ht\z@\z@ + $#1\mathord\leftarrow\mkern-6mu\cleaders% + \hbox{$#1\mkern-2mu\copy\z@\mkern-2mu$}\hfill + \mkern-6mu\box\z@$} + \def\leftrightarrowfill@#1{% + \m@th\setboxz@h{$#1\relbar$}\ht\z@\z@ + $#1\mathord\leftarrow\mkern-6mu\cleaders + \hbox{$#1\mkern-2mu\box\z@\mkern-2mu$}\hfill + \mkern-6mu\mathord\rightarrow$} +}{} +% \end{macrocode} +% +% Added double arrows +% +% \begin{macrocode} + \def\Rightarrowfill@#1{% + \m@th\setboxz@h{$#1\Relbar$}\ht\z@\z@ + $#1\copy\z@\mkern-6mu\cleaders + \hbox{$#1\mkern-2mu\box\z@\mkern-2mu$}\hfill + \mkern-6mu\mathord\Rightarrow$} + \def\Leftarrowfill@#1{% + \m@th\setboxz@h{$#1\Relbar$}\ht\z@\z@ + $#1\mathord\Leftarrow\mkern-6mu\cleaders% + \hbox{$#1\mkern-2mu\copy\z@\mkern-2mu$}\hfill + \mkern-6mu\box\z@$} + \def\Leftrightarrowfill@#1{% + \m@th\setboxz@h{$#1\Relbar$}\ht\z@\z@ + $#1\mathord\Leftarrow\mkern-6mu\cleaders + \hbox{$#1\mkern-2mu\box\z@\mkern-2mu$}\hfill + \mkern-6mu\mathord\Rightarrow$} +% +\def\rightdasharrowfill@#1{% + \m@th\setboxz@h{$#1\,\relbar\,$}\ht\z@\z@ + $#1\copy\z@\mkern-6mu\cleaders + \hbox{$#1\mkern-2mu\box\z@\mkern-2mu$}\hfill + \mkern-6mu\mathord\rightarrow$} +\def\leftdasharrowfill@#1{% + \m@th\setboxz@h{$#1\,\relbar\,$}\ht\z@\z@ + $#1\mathord\leftarrow\mkern-6mu\cleaders% + \hbox{$#1\mkern-2mu\copy\z@\mkern-2mu$}\hfill + \mkern-6mu\box\z@$} + \def\leftrightdasharrowfill@#1{% + \m@th\setboxz@h{$#1\,\relbar\,$}\ht\z@\z@ + $#1\mathord\leftarrow\mkern-6mu\cleaders + \hbox{$#1\mkern-2mu\box\z@\mkern-2mu$}\hfill + \mkern-6mu\mathord\rightarrow$} +% \end{macrocode} +% +% \begin{macrocode} +\def\atdef@#1{\expandafter\def\csname\space @\string#1\endcsname} +\@ifundefined{Iat}{% + \DeclareRobustCommand{\Iat}{\FN@\at@} +}{} +\begingroup \catcode`\@=\active +% \end{macrocode} +% Define math \qc{\@} to replicate its mathcode-dictated behavior. +% This is in case \qc{\@} occurs outside of \env{CD}. +% \begin{macrocode} +\csname if\string @compatibility\endcsname +\else \fam=\mathcode`\@ + \xdef @{\mathchar\number\fam\space } +\fi +\gdef\CDat{\let @=\Iat} +\endgroup +\mathcode`\@="8000 % make @ pseudo-active in math +\def\at@{\let\next@\at@@ + \ifcat\noexpand\next a\else + \ifcat\noexpand\next0\else + \ifcat\noexpand\next\relax\else + \let\next@\at@@@\fi\fi\fi\next@} +\def\at@@#1{\expandafter + \ifx\csname\space @\string#1\endcsname\relax + \DN@{\at@@@#1}% + \else + \DN@{\csname\space @\string#1\endcsname}% + \fi\next@}% +% \end{macrocode} +% The following items should be defined only if they are not +% already defined, either to leave the package name untouched (in +% the case of \cs{PackageError}) or to avoid redundant allocation +% of token or dimen registers. +% \begin{macrocode} +\@ifundefined{default@tag}{% + \def\default@tag{% + \def\tag{\PackageError{amscdx}{\protect\tag\space not allowed + here}\@eha}}% +}{}% +\@ifundefined{at@@@}{% + \def\at@@@{\PackageError{amscdx}{\Invalid@@ @}{\the\athelp@}\char64\relax} +}{} +\@ifundefined{athelp@}{\csname newhelp\endcsname\athelp@ +{Only certain combinations beginning with @ make sense to me.^^J% +I'll assume you wanted @@ for a printed @.}}{} +\@ifundefined{minaw@}{\newdimen\minaw@}{} +\@ifundefined{bigaw@}{\newdimen\bigaw@}{} +% \end{macrocode} +% +% Assignment of a couple of dimensions, and initialization of +% \verb=\ampersand@=. We check to see if we need to define +% \verb=\minaw@= and \verb=\bigaw@=. +% \begin{macrocode} +\minaw@11.111pt +\newdimen\minCDarrowwidth +\minCDarrowwidth2.5pc +\newif\ifCD@ +\let\ampersand@\relax +% \end{macrocode} +% +% Added \verb|\restore@math@cr\default@tag| to fix line numbering +% problems, 7-JUN-1991. Suggested by I.~Zakharevich. +% \begin{macrocode} +\newenvironment{CD}{% + \CDat + \bgroup\relax\iffalse{\fi\let\ampersand@&\iffalse}\fi + \CD@true\vcenter\bgroup\let\\\math@cr\restore@math@cr\default@tag + \tabskip\z@skip\baselineskip20\ex@ + \lineskip3\ex@\lineskiplimit3\ex@\halign\bgroup + &\hfill$\m@th##$\hfill\crcr +}{% + \crcr\egroup\egroup\egroup +} +% \end{macrocode} +% +% \begin{macro}{\CD@check} +% This check is used by all macros that must not appear outside the +% \env{CD} environment. The first argument is the symbol to be used +% after \verb+@+, the second one the action to be performed. +% +% Once again we use the trick of defining a temporary control +% sequence \verb+\next@+ and calling it after the final \verb+\fi+. +% This is not absolutely necessary, but it ensures that the +% conditional text is processed in one and the same column +% of the enclosing alignment. +% \begin{macrocode} +\def\CD@check#1#2{\ifCD@\DN@{#2}\else + \DN@{\PackageError{amscdx}{@\protect#1 not + allowed outside of the CD environment}\@eha}% + \fi\next@} +% \end{macrocode} +% \end{macro} +% +% The boolean \verb+\ifCDfat+ has scope only within a table cell: +% +% \begin{macrocode} +\atdef@>#1>#2>{% + \ifCDfat\gdef\ar@{\Rightarrowfill@}\else\ifCDash\gdef\ar@{\rightdasharrowfill@}\else\gdef\ar@{\rightarrowfill@}\fi\fi + \gdef\before@{\dye@} + \ampersand@ + \ifCD@ \global\bigaw@\minCDarrowwidth \else \global\bigaw@\minaw@ \fi + \setboxz@h{$\m@th\scriptstyle\;{#1}\;\;$}% + \ifdim\wdz@>\bigaw@\global\bigaw@\wdz@\fi +% \end{macrocode} +% If \verb|#2| is empty we can save some work. +% \begin{macrocode} + \@ifnotempty{#2}{\setbox\@ne\hbox{$\m@th\scriptstyle\;{#2}\;\;$}% + \ifdim\wd\@ne>\bigaw@\global\bigaw@\wd\@ne\fi}% + \ifCD@\enskip\fi + \color{\before@}\mathrel{\mathop{\hbox to\bigaw@{\ar@\displaystyle}}% + \limits^{#1}\@ifnotempty{#2}{_{#2}}}% + \ifCD@\enskip\fi \ampersand@} +% +\atdef@<#1<#2<{% + \ifCDfat\gdef\ar@{\Leftarrowfill@}\else\ifCDash\gdef\ar@{\leftdasharrowfill@}\else\gdef\ar@{\leftarrowfill@}\fi\fi + \gdef\before@{\dye@} + \ampersand@ + \ifCD@ \global\bigaw@\minCDarrowwidth \else \global\bigaw@\minaw@ \fi + \setboxz@h{$\m@th\scriptstyle\;\;{#1}\;$}% + \ifdim\wdz@>\bigaw@ \global\bigaw@\wdz@ \fi + \@ifnotempty{#2}{\setbox\@ne\hbox{$\m@th\scriptstyle\;\;{#2}\;$}% + \ifdim\wd\@ne>\bigaw@ \global\bigaw@\wd\@ne \fi}% + \ifCD@\enskip\fi + \color{\before@}\mathrel{\mathop{\hbox to\bigaw@{\ar@\displaystyle}}% + \limits^{#1}\@ifnotempty{#2}{_{#2}}}% + \ifCD@\enskip\fi \ampersand@} +% \end{macrocode} +% +% \begin{macrocode} +\atdef@ Z#1Z#2Z{\CD@check{x..x..x}{% + \ifCDfat\gdef\ar@{\Leftrightarrowfill@}\else\ifCDash\gdef\ar@{\leftrightdasharrowfill@}\else\gdef\ar@{\leftrightarrowfill@}\fi\fi + \gdef\before@{\dye@} + \ampersand@ + \ifCD@ \global\bigaw@\minCDarrowwidth \else \global\bigaw@\minaw@ \fi + \setboxz@h{$\m@th\scriptstyle\;\;{#1}\;$}% + \ifdim\wdz@>\bigaw@ \global\bigaw@\wdz@ \fi + \@ifnotempty{#2}{\setbox\@ne\hbox{$\m@th\scriptstyle\;\;{#2}\;$}% + \ifdim\wd\@ne>\bigaw@ \global\bigaw@\wd\@ne \fi}% + \ifCD@\enskip\fi + \color{\before@}\mathrel{\mathop{\hbox to\bigaw@{\ar@\displaystyle}}% + \limits^{#1}\@ifnotempty{#2}{_{#2}}}% + \ifCD@\enskip\fi \ampersand@}} +% \end{macrocode} +% +% Variants of the above two arrows, using \verb|(| and \verb|)| +% characters instead of \verb|<| and \verb|>| characters, are +% provided for those whose keyboards don't have the latter. +% \begin{macrocode} +\begingroup \catcode`\~=\active \lccode`\~=`\@ +\lowercase{% + \global\atdef@)#1)#2){~>#1>#2>} + \global\atdef@(#1(#2({~<#1<#2<} +}% end lowercase +\endgroup +% \end{macrocode} +% +% \begin{macrocode} +\atdef@ A#1A#2A{\CD@check{A..A..A}{\color{\dye@}\llap{$\m@th\vcenter{\hbox + {$\scriptstyle#1$}}$} + \ifCDfat \Big\Uparrow \else + \ifCDash \vphantom{\Bigg\Updownarrow}\text{\rotatebox{90}{\clap{$\mkern8mu\mathop-\mathop-\mkern-2mu\rightarrow$}}} + \else \Big\uparrow \fi \fi + \rlap{$\m@th\vcenter{\hbox{$\scriptstyle#2$}}$}&&}} +% +\atdef@ V#1V#2V{\CD@check{V..V..V}{\color{\dye@}\llap{$\m@th\vcenter{\hbox + {$\scriptstyle#1$}}$} + \ifCDfat \Big\Downarrow \else + \ifCDash \vphantom{\Bigg\Updownarrow}\text{\rotatebox{270}{\clap{$\mkern-8mu\mathop-\mathop-\mkern-2mu\rightarrow$}}} + \else \Big\downarrow \fi \fi + \rlap{$\m@th\vcenter{\hbox{$\scriptstyle#2$}}$}&&}} +% +\atdef@ X#1X#2X{\CD@check{X..X..X}{\color{\dye@}\llap{$\m@th\vcenter{\hbox + {$\scriptstyle#1$}}$} + \ifCDfat \Big\Updownarrow \else + \ifCDash \vphantom{\Bigg\Updownarrow}\text{\rotatebox{90}{\clap{$\mkern8mu\leftarrow\mkern-2mu\mathop-\mkern-2mu\rightarrow$}}} + \else \Big\updownarrow \fi \fi + \rlap{$\m@th\vcenter{\hbox{$\scriptstyle#2$}}$}&&}} +% +\atdef@={\CD@check={\gdef\before@{\dye@}&\color{\before@}\enskip\mathrel + {\vbox{\hrule\@width\minCDarrowwidth\vskip2\ex@\hrule\@width + \minCDarrowwidth}}\enskip&}} +% +\atdef@|{\CD@check|{\color{\dye@}\Big\Vert&&}} +% +\atdef@\vert{\CD@check\vert{\color{\dye@}\Big\Vert&&}} +% +\atdef@.{\CD@check.{&&}} +% \end{macrocode} +% +% The \cn{pretend} command has weird syntax that doesn't fit well +% with standard \latex/ syntax so we leave it undone, at least for +% now. [mjd,1994/10/27] +% \begin{macrocode} +%\def\pretend#1\haswidth#2{\setboxz@h{$\m@th\scriptstyle{#2}$}\hbox +% to\wdz@{\hfill$\m@th\scriptstyle{#1}$\hfill}} +% \end{macrocode} +% +% The usual \cs{endinput} to ensure that random garbage at the end of +% the file doesn't get copied by \fn{docstrip}. +% \begin{macrocode} +\endinput +% \end{macrocode} +% +% \CheckSum{814} +% \Finale diff --git a/Master/texmf-dist/source/latex/amscdx/amscdx.ins b/Master/texmf-dist/source/latex/amscdx/amscdx.ins new file mode 100644 index 00000000000..271d7a0a52e --- /dev/null +++ b/Master/texmf-dist/source/latex/amscdx/amscdx.ins @@ -0,0 +1,50 @@ +%% +%% Copyright 2010 American Mathematical Society. +%% Copyright 2016 LaTeX3 Project and American Mathematical Society. +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3c +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% https://www.latex-project.org/lppl.txt +%% and version 1.3c or later is part of all distributions of LaTeX +%% version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `maintained'. +%% +%% The Current Maintainer of this work is the LaTeX3 Project. +%% +%% ==================================================================== + +\input docstrip + +\askforoverwritefalse + +\keepsilent + +\preamble + +Copyright 1995, 1999 American Mathematical Society. +Copyright 2016 LaTeX3 Project and American Mathematical Society. + +This work may be distributed and/or modified under the +conditions of the LaTeX Project Public License, either version 1.3c +of this license or (at your option) any later version. +The latest version of this license is in + https://www.latex-project.org/lppl.txt +and version 1.3c or later is part of all distributions of LaTeX +version 2005/12/01 or later. + +This work has the LPPL maintenance status `maintained'. + +The Current Maintainer of this work is the LaTeX3 project. + +\endpreamble + +\usedir{tex/latex/amsmath} + +\generate{ + \file{amscdx.sty}{\from{amscdx.dtx}{}} +} + +\endbatchfile diff --git a/Master/texmf-dist/tex/latex/amscdx/amscdx.sty b/Master/texmf-dist/tex/latex/amscdx/amscdx.sty new file mode 100644 index 00000000000..568ad5e8513 --- /dev/null +++ b/Master/texmf-dist/tex/latex/amscdx/amscdx.sty @@ -0,0 +1,216 @@ +%% +%% This is file `amscdx.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% amscdx.dtx +%% +%% Copyright 1995, 1999 American Mathematical Society. +%% Copyright 2016 LaTeX3 Project and American Mathematical Society. +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3c +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% https://www.latex-project.org/lppl.txt +%% and version 1.3c or later is part of all distributions of LaTeX +%% version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `maintained'. +%% +%% The Current Maintainer of this work is the LaTeX3 project. +%% +\NeedsTeXFormat{LaTeX2e}% LaTeX 2.09 can't be used (nor non-LaTeX) +[1994/12/01]% LaTeX date must December 1994 or later +\ProvidesPackage{amscdx}[2019/06/04 v2.1x AMS Commutative Diagrams] +\RequirePackage{amsgen} +\@ifundefined{math@cr}{% + \def\math@cr{{\ifnum0=`}\fi + \@ifstar{\global\@eqpen\@M\math@cr@}% + {\global\@eqpen\interdisplaylinepenalty \math@cr@}} + \def\math@cr@{\new@ifnextchar[\math@cr@@{\math@cr@@[\z@]}} + \def\math@cr@@[#1]{\ifnum0=`{\fi}\math@cr@@@ + \noalign{\vskip#1\relax}} + \def\restore@math@cr{\def\math@cr@@@{\cr}} +}{} +\restore@math@cr +\def\clap#1{\hbox to 0pt{\hss#1\hss}} +\newif\ifCDfat +\newif\ifCDash +\def\dye@{black} +\def\CDlor#1{\gdef\dye@{#1}} % must be gdef +\@ifundefined{rightarrowfill@}{ + \def\rightarrowfill@#1{% + \m@th\setboxz@h{$#1\relbar$}\ht\z@\z@ + $#1\copy\z@\mkern-6mu\cleaders + \hbox{$#1\mkern-2mu\box\z@\mkern-2mu$}\hfill + \mkern-6mu\mathord\rightarrow$} + \def\leftarrowfill@#1{% + \m@th\setboxz@h{$#1\relbar$}\ht\z@\z@ + $#1\mathord\leftarrow\mkern-6mu\cleaders% + \hbox{$#1\mkern-2mu\copy\z@\mkern-2mu$}\hfill + \mkern-6mu\box\z@$} + \def\leftrightarrowfill@#1{% + \m@th\setboxz@h{$#1\relbar$}\ht\z@\z@ + $#1\mathord\leftarrow\mkern-6mu\cleaders + \hbox{$#1\mkern-2mu\box\z@\mkern-2mu$}\hfill + \mkern-6mu\mathord\rightarrow$} +}{} + \def\Rightarrowfill@#1{% + \m@th\setboxz@h{$#1\Relbar$}\ht\z@\z@ + $#1\copy\z@\mkern-6mu\cleaders + \hbox{$#1\mkern-2mu\box\z@\mkern-2mu$}\hfill + \mkern-6mu\mathord\Rightarrow$} + \def\Leftarrowfill@#1{% + \m@th\setboxz@h{$#1\Relbar$}\ht\z@\z@ + $#1\mathord\Leftarrow\mkern-6mu\cleaders% + \hbox{$#1\mkern-2mu\copy\z@\mkern-2mu$}\hfill + \mkern-6mu\box\z@$} + \def\Leftrightarrowfill@#1{% + \m@th\setboxz@h{$#1\Relbar$}\ht\z@\z@ + $#1\mathord\Leftarrow\mkern-6mu\cleaders + \hbox{$#1\mkern-2mu\box\z@\mkern-2mu$}\hfill + \mkern-6mu\mathord\Rightarrow$} +\def\rightdasharrowfill@#1{% + \m@th\setboxz@h{$#1\,\relbar\,$}\ht\z@\z@ + $#1\copy\z@\mkern-6mu\cleaders + \hbox{$#1\mkern-2mu\box\z@\mkern-2mu$}\hfill + \mkern-6mu\mathord\rightarrow$} +\def\leftdasharrowfill@#1{% + \m@th\setboxz@h{$#1\,\relbar\,$}\ht\z@\z@ + $#1\mathord\leftarrow\mkern-6mu\cleaders% + \hbox{$#1\mkern-2mu\copy\z@\mkern-2mu$}\hfill + \mkern-6mu\box\z@$} + \def\leftrightdasharrowfill@#1{% + \m@th\setboxz@h{$#1\,\relbar\,$}\ht\z@\z@ + $#1\mathord\leftarrow\mkern-6mu\cleaders + \hbox{$#1\mkern-2mu\box\z@\mkern-2mu$}\hfill + \mkern-6mu\mathord\rightarrow$} +\def\atdef@#1{\expandafter\def\csname\space @\string#1\endcsname} +\@ifundefined{Iat}{% + \DeclareRobustCommand{\Iat}{\FN@\at@} +}{} +\begingroup \catcode`\@=\active +\csname if\string @compatibility\endcsname +\else \fam=\mathcode`\@ + \xdef @{\mathchar\number\fam\space } +\fi +\gdef\CDat{\let @=\Iat} +\endgroup +\mathcode`\@="8000 % make @ pseudo-active in math +\def\at@{\let\next@\at@@ + \ifcat\noexpand\next a\else + \ifcat\noexpand\next0\else + \ifcat\noexpand\next\relax\else + \let\next@\at@@@\fi\fi\fi\next@} +\def\at@@#1{\expandafter + \ifx\csname\space @\string#1\endcsname\relax + \DN@{\at@@@#1}% + \else + \DN@{\csname\space @\string#1\endcsname}% + \fi\next@}% +\@ifundefined{default@tag}{% + \def\default@tag{% + \def\tag{\PackageError{amscdx}{\protect\tag\space not allowed + here}\@eha}}% +}{}% +\@ifundefined{at@@@}{% + \def\at@@@{\PackageError{amscdx}{\Invalid@@ @}{\the\athelp@}\char64\relax} +}{} +\@ifundefined{athelp@}{\csname newhelp\endcsname\athelp@ +{Only certain combinations beginning with @ make sense to me.^^J% +I'll assume you wanted @@ for a printed @.}}{} +\@ifundefined{minaw@}{\newdimen\minaw@}{} +\@ifundefined{bigaw@}{\newdimen\bigaw@}{} +\minaw@11.111pt +\newdimen\minCDarrowwidth +\minCDarrowwidth2.5pc +\newif\ifCD@ +\let\ampersand@\relax +\newenvironment{CD}{% + \CDat + \bgroup\relax\iffalse{\fi\let\ampersand@&\iffalse}\fi + \CD@true\vcenter\bgroup\let\\\math@cr\restore@math@cr\default@tag + \tabskip\z@skip\baselineskip20\ex@ + \lineskip3\ex@\lineskiplimit3\ex@\halign\bgroup + &\hfill$\m@th##$\hfill\crcr +}{% + \crcr\egroup\egroup\egroup +} +\def\CD@check#1#2{\ifCD@\DN@{#2}\else + \DN@{\PackageError{amscdx}{@\protect#1 not + allowed outside of the CD environment}\@eha}% + \fi\next@} +\atdef@>#1>#2>{% + \ifCDfat\gdef\ar@{\Rightarrowfill@}\else\ifCDash\gdef\ar@{\rightdasharrowfill@}\else\gdef\ar@{\rightarrowfill@}\fi\fi + \gdef\before@{\dye@} + \ampersand@ + \ifCD@ \global\bigaw@\minCDarrowwidth \else \global\bigaw@\minaw@ \fi + \setboxz@h{$\m@th\scriptstyle\;{#1}\;\;$}% + \ifdim\wdz@>\bigaw@\global\bigaw@\wdz@\fi + \@ifnotempty{#2}{\setbox\@ne\hbox{$\m@th\scriptstyle\;{#2}\;\;$}% + \ifdim\wd\@ne>\bigaw@\global\bigaw@\wd\@ne\fi}% + \ifCD@\enskip\fi +\color{\before@}\mathrel{\mathop{\hbox to\bigaw@{\ar@\displaystyle}}% + \limits^{#1}\@ifnotempty{#2}{_{#2}}}% + \ifCD@\enskip\fi \ampersand@} +\atdef@<#1<#2<{% + \ifCDfat\gdef\ar@{\Leftarrowfill@}\else\ifCDash\gdef\ar@{\leftdasharrowfill@}\else\gdef\ar@{\leftarrowfill@}\fi\fi + \gdef\before@{\dye@} + \ampersand@ + \ifCD@ \global\bigaw@\minCDarrowwidth \else \global\bigaw@\minaw@ \fi + \setboxz@h{$\m@th\scriptstyle\;\;{#1}\;$}% + \ifdim\wdz@>\bigaw@ \global\bigaw@\wdz@ \fi + \@ifnotempty{#2}{\setbox\@ne\hbox{$\m@th\scriptstyle\;\;{#2}\;$}% + \ifdim\wd\@ne>\bigaw@ \global\bigaw@\wd\@ne \fi}% + \ifCD@\enskip\fi + \color{\before@}\mathrel{\mathop{\hbox to\bigaw@{\ar@\displaystyle}}% + \limits^{#1}\@ifnotempty{#2}{_{#2}}}% + \ifCD@\enskip\fi \ampersand@} +\atdef@ Z#1Z#2Z{\CD@check{x..x..x}{% + \ifCDfat\gdef\ar@{\Leftrightarrowfill@}\else\ifCDash\gdef\ar@{\leftrightdasharrowfill@}\else\gdef\ar@{\leftrightarrowfill@}\fi\fi + \gdef\before@{\dye@} + \ampersand@ + \ifCD@ \global\bigaw@\minCDarrowwidth \else \global\bigaw@\minaw@ \fi + \setboxz@h{$\m@th\scriptstyle\;\;{#1}\;$}% + \ifdim\wdz@>\bigaw@ \global\bigaw@\wdz@ \fi + \@ifnotempty{#2}{\setbox\@ne\hbox{$\m@th\scriptstyle\;\;{#2}\;$}% + \ifdim\wd\@ne>\bigaw@ \global\bigaw@\wd\@ne \fi}% + \ifCD@\enskip\fi + \color{\before@}\mathrel{\mathop{\hbox to\bigaw@{\ar@\displaystyle}}% + \limits^{#1}\@ifnotempty{#2}{_{#2}}}% +\ifCD@\enskip\fi \ampersand@}} +\begingroup \catcode`\~=\active \lccode`\~=`\@ +\lowercase{% + \global\atdef@)#1)#2){~>#1>#2>} + \global\atdef@(#1(#2({~<#1<#2<} +}% end lowercase +\endgroup +\atdef@ A#1A#2A{\CD@check{A..A..A}{\color{\dye@}\llap{$\m@th\vcenter{\hbox + {$\scriptstyle#1$}}$} + \ifCDfat \Big\Uparrow \else + \ifCDash \vphantom{\Bigg\Updownarrow}\text{\rotatebox{90}{\clap{$\mkern8mu\mathop-\mathop-\mkern-2mu\rightarrow$}}} + \else \Big\uparrow \fi \fi + \rlap{$\m@th\vcenter{\hbox{$\scriptstyle#2$}}$}&&}} +\atdef@ V#1V#2V{\CD@check{V..V..V}{\color{\dye@}\llap{$\m@th\vcenter{\hbox + {$\scriptstyle#1$}}$} + \ifCDfat \Big\Downarrow \else + \ifCDash \vphantom{\Bigg\Updownarrow}\text{\rotatebox{270}{\clap{$\mkern-8mu\mathop-\mathop-\mkern-2mu\rightarrow$}}} + \else \Big\downarrow \fi \fi + \rlap{$\m@th\vcenter{\hbox{$\scriptstyle#2$}}$}&&}} +\atdef@ X#1X#2X{\CD@check{X..X..X}{\color{\dye@}\llap{$\m@th\vcenter{\hbox + {$\scriptstyle#1$}}$} + \ifCDfat \Big\Updownarrow \else + \ifCDash \vphantom{\Bigg\Updownarrow}\text{\rotatebox{90}{\clap{$\mkern8mu\leftarrow\mkern-2mu\mathop-\mkern-2mu\rightarrow$}}} + \else \Big\updownarrow \fi \fi + \rlap{$\m@th\vcenter{\hbox{$\scriptstyle#2$}}$}&&}} +\atdef@={\CD@check={\gdef\before@{\dye@}&\color{\before@}\enskip\mathrel + {\vbox{\hrule\@width\minCDarrowwidth\vskip2\ex@\hrule\@width + \minCDarrowwidth}}\enskip&}} +\atdef@|{\CD@check|{\color{\dye@}\Big\Vert&&}} +\atdef@\vert{\CD@check\vert{\color{\dye@}\Big\Vert&&}} +\atdef@.{\CD@check.{&&}} +\endinput +%% +%% End of file `amscdx.sty'. |