diff options
Diffstat (limited to 'Master/texmf-dist/tex/generic/genmisc/mathdots.sty')
-rw-r--r-- | Master/texmf-dist/tex/generic/genmisc/mathdots.sty | 209 |
1 files changed, 209 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/generic/genmisc/mathdots.sty b/Master/texmf-dist/tex/generic/genmisc/mathdots.sty new file mode 100644 index 00000000000..4a31d5b9c28 --- /dev/null +++ b/Master/texmf-dist/tex/generic/genmisc/mathdots.sty @@ -0,0 +1,209 @@ +%% mathdots.sty +%% Copyright 2001--2004 by Daniel H. Luecking +%% This file may be distributed and/or modified under the conditions +%% of the LaTeX Project Public License, either version 1.2 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.2 or later is part of all distributions of LaTeX version +%% 1999/12/01 or later. +%% +%% This style file provides vertical dots and diagonal dots slanting +%% in either direction. Unlike the commands \vdots and \ddots provided +%% by LaTeX, these commands change size with LaTeX size changing +%% commands, as well as in {sub[sub]|super[super]}scripts. +%% +%% It also supplies a fix to the amsmath \dddot and \ddddot +%% commands which don't change size in scripts and suffer from a +%% vertical placement bug. +%% +%% Documentation after \endinput +%% +\def\mathdotsfiledate{2004/07/02}% +\def\mathdotsfileversion{0.6}% +\expandafter\ifx\csname MathDots\mathdotsfileversion\endcsname\relax +\else\immediate\write\sixt@@n{Mathdots already loaded.}\expandafter\endinput\fi + +\newif\ifMDlatex +% +% +\begingroup +\expandafter\ifx\csname ProvidesPackage\endcsname\relax + % not latex2e + \global\MDlatexfalse + \def\ProvidesPackage#1[#2]{% + \immediate\write16{Package #1, #2}}% +\else + \global\MDlatextrue +\fi +\expandafter +\endgroup +\ProvidesPackage{mathdots}[\mathdotsfiledate\space version \mathdotsfileversion.]% +% +\expandafter\edef\csname MathDots\mathdotsfileversion\endcsname{% + \catcode`\noexpand\@=\the\catcode`@}% +\catcode`\@=11 +% +\def\MD@us#1{\csname#1style\endcsname}% e.g., \MD@us{text} -> \textstyle +\def\MD@uf#1{\csname#1font\endcsname}% \MD@uf{text} -> \textfont +\def\MD@t{text}% \MD@uf{\MD@t} -> \textfont +\def\MD@s{script}% +\def\MD@ss{scriptscript}% +\newdimen\MD@unit +\MD@unit\p@ % old value, just in case. +\def\MD@changestyle#1{% +% 0.1em of family 0 in the current size replaces \p@ in the old +% definition: + \relax\MD@unit0.1\fontdimen6\MD@uf{#1}0 +% The current math dot replaces text font dot. We pass along the current +% style via \everymath: + \everymath\expandafter{\the\everymath\MD@us{#1}}% +}% +\def\MD@dot{$\m@th\ldotp$}% +% +% #1 is a command which we feed the current style name +% (not distinguishing display from text) +\def\MD@palette#1{\mathchoice{#1\MD@t}{#1\MD@t}{#1\MD@s}{#1\MD@ss}}% +% +% Save version at load time so user can use them. +\let\originalddots=\ddots +\let\originalvdots=\vdots +% +% Include current (2002/02/28) LaTeX/plainTeX definitions +% so user can opt for them. LaTeX/plainTeX don't have the other diagonal, +% so we provide a \fixediddots which is just \fixedddots with the boxes +% reversed. +\ifMDlatex + \DeclareRobustCommand + \fixedvdots{\vbox{\baselineskip4\p@ \lineskiplimit\z@ + \kern6\p@\hbox{.}\hbox{.}\hbox{.}}} + \DeclareRobustCommand + \fixedddots{\mathinner{\mkern1mu\raise7\p@ + \vbox{\kern7\p@\hbox{.}}\mkern2mu + \raise4\p@\hbox{.}\mkern2mu\raise\p@\hbox{.}\mkern1mu}} + \DeclareRobustCommand + \fixediddots{\mathinner{\mkern1mu\raise\p@ + \hbox{.}\mkern2mu\raise4\p@\hbox{.}\mkern2mu + \raise7\p@\vbox{\kern7\p@\hbox{.}}\mkern1mu}}% +\else + \def\fixedvdots{\vbox{\baselineskip4\p@ \lineskiplimit\z@ + \kern6\p@\hbox{.}\hbox{.}\hbox{.}}}% + \def\fixedddots{\mathinner{\mkern1mu\raise7\p@ + \vbox{\kern7\p@\hbox{.}}\mkern2mu + \raise4\p@\hbox{.}\mkern2mu\raise\p@\hbox{.}\mkern1mu}}% + \def\fixediddots{\mathinner{\mkern1mu\raise\p@ + \hbox{.}\mkern2mu\raise4\p@\hbox{.}\mkern2mu + \raise7\p@\vbox{\kern7\p@\hbox{.}}\mkern1mu}}% +\fi +% +% #1 is the current style (supplied via \MD@palette). +% Except for the change in the unit used and the dot used, +% the definition is the same as plain \ddots: +\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}}% +% +% \iddots is same as \ddots but with the box order reversed: +\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}}}}% +% +% +% We transform \vdots in the same fashion as \ddots and \iddots: +\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}}}% +% +% +\ifMDlatex + \DeclareRobustCommand\ddots{\mathinner{\MD@palette\MD@ddots}}% + \DeclareRobustCommand\iddots{\mathinner{\MD@palette\MD@iddots}}% + \DeclareRobustCommand\vdots{\mathinner{\MD@palette\MD@vdots}}% +\else + \def\ddots{\mathinner{\MD@palette\MD@ddots}}% + \def\iddots{\mathinner{\MD@palette\MD@iddots}}% + \def\vdots{\mathinner{\MD@palette\MD@vdots}}% +\fi +% +% Try to get AMS \dddot and \ddddot to behave: +\def\MD@dotsaccent#1#2{% + {\mathop{#2\kern\z@}\limits^{\text{\vbox to-1.4\ex@{\kern-\tw@\ex@ + \hbox{#1}\vss}}}}} +\let\originaldddot \dddot +\let\originalddddot\ddddot +\ifMDlatex + \@ifpackageloaded{amsmath}{% + \PackageWarningNoLine{Mathdots}{Redefining amsmath commands + \string\dddot\space and \string\ddddot}% +% +% The \kern\z@ prevents TeX from vertically centering #1. The \text +% command invokes size changing (i.e., \normalfont changes meaning). +% Text dots match accent dots better than math dots do. + \DeclareRobustCommand\dddot {\MD@dotsaccent{\normalfont ...}}% + \DeclareRobustCommand\ddddot{\MD@dotsaccent{\normalfont....}}% + }{}% +\else +% +% Not LaTeX, but we'll redefine only if AMSTeX is used. + \def\amstexfmtname{AmS-TeX} + \ifx\amstexfmtname\fmtname + \immediate\write16{Mathdots: Redefining AmS-TeX commands + \string\dddot\space and \string\ddddot}% + \def\dddot {\MD@dotsaccent{\rm ...}}% + \def\ddddot{\MD@dotsaccent{\rm....}}% + \fi +\fi + +\csname MathDots\mathdotsfileversion\endcsname +\endinput +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{document} +\texttt{mathdots.sty} provides \verb"\ddots", \verb"\vdots", and +\verb"\iddots". If \LaTeX{} and \texttt{amsmath.sty} are detected (or +AMS-\TeX), the math accent commands \verb"\dddot" and \verb"\ddddot" are +modified. + +\verb"\ddots" (the same command as LaTeX provides) gives three dots on a +diagonal from upper left to lower right. It differs from LaTeX's command +in that it will change size within the scope of LaTeX size changing +commands. That is, {\verb"\Large$\ddots$"} will be larger and +{\verb"\small$\ddots$"} will be smaller than \verb"$\ddots$". + +LaTeX's definition would change the size of the dots, and the horizontal +dimensions, but not the vertical dimensions. The command from the +mathdots package also changes size in sub/superscripts. LaTeX's would +not change at all in those cases. Finally, LaTeX would take the dots +from the current text font, where the mathdots 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 17pt sizes or larger where cmr17 +is scaled to get text dots, but cmsy12 is scaled to get math dots. + +\verb"\iddots" is similar, except it produces the other diagonal. + +\verb"\vdots" produces vertical dots (as in standard TeX or LaTeX), but +again, it will change size with size changing commands. + +The old behavior is stored in \verb"\fixedddots" and \verb"\fixedvdots". +If you wish \verb"\iddots" to behave similarly then use \fixediddots. + +On the off chance that some other package changes LaTeX's behavior +before this file is loaded, use \verb"\originalddots" and +\verb"\originalvdots" to obtain the versions in force when the mathdots +package is loaded. + +Note: The \fixed... versions try to maintain LaTeX's (awful) behavior, +which is to let the horizontal dimensions change size, as well as the +dots themselves, but hard code unchanging vertical dimensions. + +If the \LaTeX{} and the \textsf{amsmath} package are detected, the +commands \verb"\dddot" and \verb"\ddddot" are modified to get the same +size changing behavior in 'scripts. They also correct a positioning bug +in the \textsf{amsmath} code. The correction requires the command +\verb"\text", and so is only applied if \textsf{amsmath} has been loaded +\emph{before} \texttt{mathdots.sty}. The old amsmath commands are saved +in \verb"\originaldddot" and \verb"\originalddddot". + +In \LaTeX, all these commands have been made robust as of version 0.6. + +\end{document} |