diff options
Diffstat (limited to 'Master/texmf-dist/source/generic/mathdots')
-rw-r--r-- | Master/texmf-dist/source/generic/mathdots/mathdots.dtx | 377 | ||||
-rw-r--r-- | Master/texmf-dist/source/generic/mathdots/mathdots.ins | 35 |
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
|