summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/generic/mathdots
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/generic/mathdots')
-rw-r--r--Master/texmf-dist/source/generic/mathdots/mathdots.dtx377
-rw-r--r--Master/texmf-dist/source/generic/mathdots/mathdots.ins35
2 files changed, 412 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/generic/mathdots/mathdots.dtx b/Master/texmf-dist/source/generic/mathdots/mathdots.dtx
new file mode 100644
index 00000000000..45862da44ff
--- /dev/null
+++ b/Master/texmf-dist/source/generic/mathdots/mathdots.dtx
@@ -0,0 +1,377 @@
+% \iffalse
+% -------------------------------------------------------------------
+%
+% Copyright 2001--2006, Daniel H. Luecking
+%
+% Mathdots 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.
+%
+% Mathdots has maintenance status "author-maintained". The Current
+% Maintainer is Daniel H. Luecking. The Base Interpreters associated with
+% mathdots are TeX and LaTeX.
+%
+%<*sty|tex>
+%<*driver>
+\ProvidesFile{mathdots.dtx}%
+%</driver>
+%<sty>\ifx\documentclass\UndEfInEd\input mathdots \expandafter\endinput\fi
+%<sty>\ProvidesPackage{mathdots}
+%<*sty>
+[2006/03/16 v0.8 Improve and add various macros for dots in math.]%
+%</sty>
+%<tex>\def\mathdotsfiledate{2006/03/16}%
+%<tex>\def\mathdotsfileversion{0.8}%
+%<*driver>
+\documentclass[draft]{ltxdoc}
+
+\addtolength{\textwidth}{.5878pt}
+
+\def\mytt{\upshape\mdseries\ttfamily}
+\renewcommand\marg[1]{{\mytt \{#1\}}}
+\renewcommand\oarg[1]{{\mytt [#1]}}
+\renewcommand\parg[1]{{\mytt (#1)}}
+\renewcommand\arg[1]{{\mytt\##1}}
+\renewcommand{\meta}[1]{{$\langle$\rmfamily\itshape#1\/$\rangle$}}
+\DeclareRobustCommand\cs[1]{{\mytt\char`\\#1}}
+\def\prog#1{{\mdseries\scshape #1}}
+\def\opt#1{{\sffamily\upshape#1}}
+\def\mtt#1{{\mytt#1}}
+\let\env\mtt
+\let\file\mtt
+\def\MD{\prog{mathdots}}
+\renewcommand\{{\mtt{\char`\{}}
+\renewcommand\}{\mtt{\char`\}}}
+\renewcommand\|{${}\mathrel{|}{}$}
+
+\makeatletter
+\newcommand\bsl{{\mytt\@backslashchar}}
+% Stupid lists!
+\def\@listi{\leftmargin\leftmargini
+ \parsep \z@ \@plus\p@ \@minus\z@
+ \topsep 4\p@ \@plus\p@ \@minus2\p@
+ \itemsep\parsep}
+\let\@listI\@listi \@listi
+\renewcommand\labelitemi{\normalfont\bfseries \textendash}
+\renewcommand\labelitemii{\textasteriskcentered}
+\renewcommand\labelitemiii{\textperiodcentered}
+\leftmargini\parindent
+% Stupid index!
+\def\usage#1{\textrm{#1}}
+\def\index@prologue{\section*{Index}\markboth{Index}{Index}%
+ Numbers refer to the page where the corresponding entry is described.
+}
+\def\IndexParms{%
+ \parindent \z@ \columnsep 15pt
+ \parskip 0pt plus 1pt
+ \rightskip 5pt plus2em \mathsurround \z@
+ \parfillskip-5pt \small
+ % less hanging:
+ \def\@idxitem{\par\hangindent 20pt}%
+ \def\subitem{\@idxitem\hspace*{15pt}}%
+ \def\subsubitem{\@idxitem\hspace*{25pt}}%
+ \def\indexspace{\par\vspace{10pt plus 2pt minus 3pt}}}
+\makeatother
+
+\title{The \MD{} package\thanks{This file has version number
+ \fileversion, last revised \filedate.}}
+\author{Dan Luecking}
+\date{\filedate}
+\DisableCrossrefs
+\CodelineIndex
+\AlsoImplementation
+
+\begin{document}
+ \DeleteShortVerb{\|}
+ \DocInput{mathdots.dtx}
+\end{document}
+%</driver>
+%\fi
+% \CheckSum{327}
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \catcode`\_=12
+% \GetFileInfo{mathdots.dtx}
+% \maketitle
+%
+% \begin{abstract}
+% This package provides vertical dots and diagonal dots in math, slanting
+% in either direction. It should work equally well in \LaTeX{} or plain
+% \TeX{}. It improves on the default definitions of plain \TeX{} and
+% \LaTeX{}. Similar improvements are provided for the triple and
+% quadruple dot accents of AMS\TeX{}/\LaTeX{}.
+% \end{abstract}
+%
+% \StopEventually{\PrintIndex}
+%
+% \section{Introduction}
+%
+% Running \LaTeX{} or \TeX{} on \file{mathdots.ins} generates
+% \file{mathdots.sty}, a \LaTeX{} package, and \file{mathdots.tex} a plain
+% \TeX{} input file. If one puts \verb"\input mathdots.sty" in a plain
+% \TeX{} file, it will cause \file{mathdots.tex} to be input. This is for
+% backward compatibility.
+%
+% Unlike the commands \cs{vdots} and \cs{ddots} provided by \LaTeX{},
+% the versions defined by \MD{} change size with \LaTeX{} size
+% changing commands, as well as in \{sub[sub]\|super[super]\}scripts.
+% After \MD{} is loaded, \verb"\Large$\ddots$" will be larger and
+% \verb"\small$\ddots$" will be smaller than \verb"$\ddots$". Moreover,
+% \verb"$2^{2^\ddots}$" will also produce a smaller symbol. This last
+% example is very unlikely to be needed, but the version with the
+% opposite slant is very common.
+%
+% The default \LaTeX{} (and plain \TeX) definition changes the size of the
+% dots, and the horizontal dimensions, but not the vertical dimensions.
+% Using the default version in 'scripts produces symbols identical to
+% those produced elsewhere. Finally, the default takes the dots from the
+% current text font, whereas the \MD{} package takes them from the
+% current math symbol font, so they should match other dots in math mode.
+% This is only really a concern in \mtt{17pt} sizes or larger where
+% \file{cmr17} is scaled to get text dots, but \file{cmsy12} is scaled to
+% get math dots.
+%
+% \cs{iddots} is similar to \cs{ddots}, except it produces the other
+% diagonal. This command is not provided in basic \TeX{} or \LaTeX{}.
+%
+% \cs{vdots} produces vertical dots (as in standard \TeX{} or \LaTeX{}),
+% but again, the \MD{} version will change size with size
+% changing commands.
+%
+% The old behavior is stored in \cs{fixedddots} and \cs{fixedvdots}.
+% If you wish \cs{iddots} to behave similarly then use \cs{fixediddots}.
+%
+% The \cs{fixed...} versions try to maintain the (awful) default behavior,
+% which is to let the horizontal dimensions change size, as well as the
+% dots themselves, but hard code unchanging vertical dimensions.
+%
+% On the chance that some other package changes the behavior before \MD{}
+% is loaded, use \cs{originalddots}, \cs{originalvdots}, and
+% \cs{originaliddots} to obtain the versions in force before the \MD{} is
+% loaded.
+%
+% If the \LaTeX{} and the \prog{amsmath} package are detected, the
+% commands \cs{dddot} and \cs{ddddot} are modified to get the same
+% size changing behavior in 'scripts. They also correct a positioning bug
+% in the \prog{amsmath} code. The correction requires the command
+% \cs{text}, and so is only applied if \prog{amsmath} has been loaded
+% \emph{before} \MD{}. The old amsmath commands are saved
+% in \cs{originaldddot} and \cs{originalddddot}. Similar comments apply
+% to plain \TeX{} with regard to \file{amstex.tex}.
+%
+% In \LaTeX{}, all these commands have been made robust as of version 0.6.
+%
+% \section{The implementation}
+%
+% We define the version and date for plain\TeX{}. The file
+% \file{mathdots.sty} immediately switches to \file{mathdots.tex} if
+% \LaTeX{} is not being used.
+% \iffalse
+%<*dtx>
+% \fi
+% \begin{macrocode}
+%<tex>\def\mathdotsfiledate{2006/02/07}%
+%<tex>\def\mathdotsfileversion{0.7}%
+%<sty>\ifx\documentclass\UndEfInEd\input mathdots \expandafter\endinput\fi
+% \end{macrocode}
+% \iffalse
+%</dtx>
+% \fi
+%
+% The following are commands for plain \TeX{} that prevent double loading,
+% announce the package name, and change/restore the category of \mtt{@}.
+% \begin{macrocode}
+%<*tex>
+\expandafter
+\ifx\csname MathDots\mathdotsfileversion\endcsname\relax
+\else
+ \immediate\write16{Mathdots already loaded.}\expandafter\endinput
+\fi
+\immediate\write16{Package mathdots, \mathdotsfiledate\space version
+ \mathdotsfileversion.}%
+\expandafter\edef\csname MathDots\mathdotsfileversion\endcsname{%
+ \catcode`\noexpand\@=\the\catcode`@}%
+\catcode`\@=11
+\def\@nameuse#1{\csname#1\endcsname}%
+%</tex>
+% \end{macrocode}
+%
+% Now various shorthands. For example `\cs{MD@us}\cs{MD@t}' becomes
+% `\cs{textstyle}' and `\cs{MD@uf}\cs{MD@ss}' produces
+% `\cs{scriptscriptfont 0}'.
+% \begin{macrocode}
+\def\MD@us#1{\@nameuse{#1style}}%
+\def\MD@uf#1{\@nameuse{#1font}0}%
+\def\MD@t{text}\def\MD@s{script}\def\MD@ss{scriptscript}%
+\newdimen\MD@unit \MD@unit\p@
+% \end{macrocode}
+%
+% The following are the main utility macros to implement changes of style.
+% Since most of our symbols are built with boxes, they have to exit math
+% mode and need \cs{mathchoice} so we know the current style (i.e., size)
+% when we re-enter math mode.
+%
+% We detect differences in sizes (for example, after \cs{large}) by
+% examining the appropriate \cs{fontdimen} of family 0. Instead of the
+% hard coded \mtt{1pt}, we use \mtt{0.1em} from this family.
+%
+% We pass along the current style via \cs{everymath}.
+%
+% In \cs{MD@palette}, \arg1 is a command which we feed the current
+% style name. For example, \cs{MD@palette}\cs{MD@ddots} will be our
+% definition of \cs{ddots}. Then \cs{MD@ddots} will see the current style
+% as its first argument.
+% \begin{macrocode}
+\def\MD@changestyle#1{\relax\MD@unit0.1\fontdimen6\MD@uf{#1}%
+ \everymath\expandafter{\the\everymath\MD@us{#1}}}%
+\def\MD@dot{$\m@th\ldotp$}%
+\def\MD@palette#1{\mathchoice{#1\MD@t}{#1\MD@t}{#1\MD@s}{#1\MD@ss}}%
+% \end{macrocode}
+%
+% In the following commands, \arg1 is the current style (supplied via
+% \cs{MD@palette}). Except for the change in the unit used and the dot
+% used, the first two definitions are essentially the same as plain's
+% \cs{ddots} and \cs{vdots}, and the third is the same as the first with
+% the oxes reversed.
+% \begin{macrocode}
+\def\MD@ddots#1{{\MD@changestyle{#1}%
+ \mkern1mu\raise7\MD@unit\vbox{\kern7\MD@unit\hbox{\MD@dot}}%
+ \mkern2mu\raise4\MD@unit\hbox{\MD@dot}%
+ \mkern2mu\raise \MD@unit\hbox{\MD@dot}\mkern1mu}}%
+\def\MD@vdots#1{\vbox{\MD@changestyle{#1}%
+ \baselineskip4\MD@unit\lineskiplimit\z@
+ \kern6\MD@unit\hbox{\MD@dot}\hbox{\MD@dot}\hbox{\MD@dot}}}%
+\def\MD@iddots#1{{\MD@changestyle{#1}%
+ \mkern1mu\raise \MD@unit\hbox{\MD@dot}%
+ \mkern2mu\raise4\MD@unit\hbox{\MD@dot}%
+ \mkern2mu\raise7\MD@unit\vbox{\kern7\MD@unit\hbox{\MD@dot}}}}%
+% \end{macrocode}
+%
+% \DescribeMacro{\fixedddots}
+% \DescribeMacro{\fixedvdots}
+% We include current (2005/12/01) \LaTeX{}/plain\TeX{} definitions
+% so a user can choose them. \LaTeX{} and plain\TeX{} don't have the other
+% diagonal, so we provide a \DescribeMacro{fixediddots}\cs{fixediddots}
+% which is just \cs{fixedddots} with the boxes reversed.
+%
+% \DescribeMacro{\originalvdots}
+% \DescribeMacro{\originalddots}
+% We save the versions at load time so user can use them in case he
+% loads \MD{} for its other features. Chances are the original
+% \DescribeMacro{\originaliddots}\cs{iddots} is undefined.
+% \begin{macrocode}
+%<sty>\DeclareRobustCommand\fixedvdots{%
+%<tex>\def\fixedvdots{%
+ \vbox{\baselineskip4\p@ \lineskiplimit\z@
+ \kern6\p@\hbox{.}\hbox{.}\hbox{.}}}%
+%<sty>\DeclareRobustCommand\fixedddots{%
+%<tex>\def\fixedddots{%
+ \mathinner{\mkern1mu
+ \raise7\p@\vbox{\kern7\p@\hbox{.}}\mkern2mu
+ \raise4\p@\hbox{.}\mkern2mu
+ \raise\p@\hbox{.}\mkern1mu}}%
+%<sty>\DeclareRobustCommand\fixediddots{%
+%<tex>\def\fixediddots{%
+ \mathinner{\mkern1mu
+ \raise\p@\hbox{.}\mkern2mu
+ \raise4\p@\hbox{.}\mkern2mu
+ \raise7\p@\vbox{\kern7\p@\hbox{.}}\mkern1mu}}%
+\let\originalddots=\ddots
+\let\originalvdots=\vdots
+\let\originaliddots=\iddots
+% \end{macrocode}
+%
+% \DescribeMacro{\ddots}
+% \DescribeMacro{\vdots}
+% \DescribeMacro{\iddots}
+% Here are the actual (re)definitions of these three commands. The
+% plain\TeX{} version emits messages similar to that produced by
+% \LaTeX{}'s \cs{DeclareRobustCommand}.
+% \begin{macrocode}
+%<sty>\DeclareRobustCommand\ddots{%
+%<tex>\def\ddots{%
+ \mathinner{\MD@palette\MD@ddots}}%
+%<sty>\DeclareRobustCommand\iddots{%
+%<tex>\def\iddots{%
+ \mathinner{\MD@palette\MD@iddots}}%
+%<sty>\DeclareRobustCommand\vdots{%
+%<tex>\def\vdots{%
+ \mathinner{\MD@palette\MD@vdots}}%
+%<tex>\wlog{Mathdots Info: Redefining \string\ddots.}%
+%<tex>\wlog{Mathdots Info: Redefining \string\vdots.}%
+% \end{macrocode}
+%
+% Now we try to get AMS \cs{dddot} and \cs{ddddot} accents to behave.
+%
+% \DescribeMacro{\dddot}
+% \DescribeMacro{\ddddot}
+% We add a \verb"\kern\z@" to prevent \TeX{} from vertically centering
+% \arg1. I don't know if the \cs{text} command is necessary, but it
+% doesn't seem to hurt. I included it in the original version because that
+% one used text dots and needed the text to change size. Now I use a math
+% symbol (the dot accent) and mathpalette to implement the change.
+% Still, I don't really understand how \cs{ex@} works in the AMS packages,
+% so I leave it in. For possible tuning, I have used two macros that
+% represent the math spacing placed before and after the sequence of
+% dots (\cs{MD@prekern} and \cs{MD@postkern}). Also, the actual dot is in
+% the definition of \cs{MD@D} where another spacing command follows the
+% dot (\cs{MD@dotkern}). In fact, by redefining \cs{MD@D} and possibly the
+% spacing, one can define other double accent commands.
+%
+% \DescribeMacro{\originaldddot}
+% \DescribeMacro{\originalddddot}
+% We also save the original \prog{amsmath} versions.
+% \begin{macrocode}
+\newbox\MD@dotsbox
+\newmuskip\MD@prekern
+\newmuskip\MD@postkern
+\newmuskip\MD@dotkern
+\MD@prekern 0mu
+\MD@postkern -1mu
+\MD@dotkern -1.3mu
+\def\MD@dotsaccent#1{\mathpalette{\MD@@dotsaccent{#1}}}%
+\def\MD@@dotsaccent#1#2#3{%
+ {\setbox\MD@dotsbox\hbox{$#2\mkern\MD@prekern#1\mkern\MD@postkern$}%
+ \mathop{#3\kern\z@}\limits^{%
+ \text{\vbox to-1.4\ex@{\kern-1.8\ex@\copy\MD@dotsbox\vss}}}}%
+}%
+\let\originaldddot \dddot
+\let\originalddddot\ddddot
+%<*sty>
+\@ifpackageloaded{amsmath}{%
+ \def\MD@D{\mathchar"5F\mkern\MD@dotkern}%
+ \DeclareRobustCommand\dddot {\MD@dotsaccent{\MD@D\MD@D\MD@D}}%
+ \DeclareRobustCommand\ddddot{\MD@dotsaccent{\MD@D\MD@D\MD@D\MD@D}}%
+}{}%
+%</sty>
+%<*tex>
+\def\amstexfmtname{AmS-TeX}%
+\ifx\amstexfmtname\fmtname
+ \def\MD@D{\mathchar"5F\mkern\MD@dotkern}%
+ \wlog{Mathdots Info: Redefining \string\dddot.}%
+ \wlog{Mathdots Info: Redefining \string\ddddot.}%
+ \def\dddot {\MD@dotsaccent{\MD@D\MD@D\MD@D}}%
+ \def\ddddot{\MD@dotsaccent{\MD@D\MD@D\MD@D\MD@D}}%
+\fi
+\csname MathDots\mathdotsfileversion\endcsname
+%</tex>
+%</sty|tex>
+% \end{macrocode}
+%\Finale
diff --git a/Master/texmf-dist/source/generic/mathdots/mathdots.ins b/Master/texmf-dist/source/generic/mathdots/mathdots.ins
new file mode 100644
index 00000000000..dfdbda4cd90
--- /dev/null
+++ b/Master/texmf-dist/source/generic/mathdots/mathdots.ins
@@ -0,0 +1,35 @@
+\input docstrip
+\keepsilent
+\preamble
+
+-------------------------------------------------------------------
+
+Copyright 2001--2006, Daniel H. Luecking
+
+Mathdots 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.
+
+Mathdots has maintenance status "author-maintained". The Current
+Maintainer is Daniel H. Luecking. The Base Interpreters associated with
+mathdots are plain TeX and LaTeX
+
+\endpreamble
+\askforoverwritefalse
+
+\generate{\file{mathdots.tex}{\from{mathdots.dtx}{tex}}
+ \file{mathdots.sty}{\from{mathdots.dtx}{sty}}}
+
+\immediate\write16{%
+^^J*******************************************************************
+^^J
+^^J To finish the installation, copy the files mathdots.tex and
+^^J mathdots.sty to a location where TeX and LaTeX will find them.
+^^J For example, the directory TEXMF/tex/generic/mathdots/ .
+^^J
+^^J*******************************************************************}
+
+\endbatchfile