source: Backup NB/Talks/MEMPHYSetal/SPLFrejusArt/SPLFrejus/setstack.sty @ 416

Last change on this file since 416 was 392, checked in by campagne, 16 years ago
File size: 5.0 KB
Line 
1%%
2%% This is file `setstack.sty', created by VIK 15 Dec 1998
3%% Reproduces useful macros from amsmath.sty, thus avoiding the need to load the entire
4%% amsmath.sty and run into conflicts
5%% Adds definitions for \overset, \underset, \sideset, \substack, \boxed, \leftroot,
6%% \uproot, \dddot, \ddddot, \varrow, \harrow (see The LateX Companion, pp 225-227)
7\NeedsTeXFormat{LaTeX2e}% LaTeX 2.09 can't be used (nor non-LaTeX)
8[1998/12/15]% LaTeX date must December 1998 or later
9\ProvidesPackage{setstack}
10\DeclareRobustCommand{\text}{%
11  \ifmmode\expandafter\text@\else\expandafter\mbox\fi}
12  \let\nfss@text\text
13  \def\text@#1{\mathchoice
14    {\textdef@\displaystyle\f@size{#1}}%
15      {\textdef@\textstyle\tf@size{\firstchoice@false #1}}%
16        {\textdef@\textstyle\sf@size{\firstchoice@false #1}}%
17          {\textdef@\textstyle \ssf@size{\firstchoice@false #1}}%
18            \check@mathfonts
19}
20\def\textdef@#1#2#3{\hbox{{%
21             \everymath{#1}%
22             \let\f@size#2\selectfont #3}}}
23
24% adds underset, overset, sideset and
25% substack features from amsmath.sty (Companion p. 226)
26
27\def\invalid@tag#1{\@amsmath@err{#1}{\the\tag@help}\gobble@tag}
28\def\dft@tag{\invalid@tag{\string\tag\space not allowed here}}
29\def\default@tag{\let\tag\dft@tag}
30
31\def\Let@{\let\\\math@cr}
32\def\restore@math@cr{\def\math@cr@@@{\cr}}
33
34\def\overset#1#2{\binrel@{#2}%
35\binrel@@{\mathop{\kern\z@#2}\limits^{#1}}}
36\def\underset#1#2{\binrel@{#2}%
37\binrel@@{\mathop{\kern\z@#2}\limits_{#1}}}
38\def\sideset#1#2#3{%
39\@mathmeasure\z@\displaystyle{#3}%
40\global\setbox\@ne\vbox to\ht\z@{}\dp\@ne\dp\z@
41 \setbox\tw@\box\@ne
42\@mathmeasure4\displaystyle{\copy\tw@#1}%
43\@mathmeasure6\displaystyle{#3\nolimits#2}%
44\dimen@-\wd6 \advance\dimen@\wd4 \advance\dimen@\wd\z@
45\hbox to\dimen@{}\mathop{\kern-\dimen@\box4\box6}%
46}
47
48\newenvironment{subarray}[1]{%
49\vcenter\bgroup
50\Let@ \restore@math@cr \default@tag
51\baselineskip\fontdimen10 \scriptfont\tw@
52\advance\baselineskip\fontdimen12 \scriptfont\tw@
53\lineskip\thr@@\fontdimen8 \scriptfont\thr@@
54\lineskiplimit\lineskip
55\ialign\bgroup\ifx c#1\hfil\fi
56$\m@th\scriptstyle##$\hfil\crcr
57}{%
58\crcr\egroup\egroup
59}
60\newcommand{\substack}[1]{\subarray{c}#1\endsubarray}
61
62% definitions of dddot and ddddot(p. 225)
63
64\def\dddot#1{{\mathop{#1}\limits^{\vbox to-1.4\ex@{\kern-\tw@\ex@
65 \hbox{\normalfont ...}\vss}}}}
66\def\ddddot#1{{\mathop{#1}\limits^{\vbox to-1.4\ex@{\kern-\tw@\ex@
67 \hbox{\normalfont....}\vss}}}}
68
69% definitions of leftroot, uproot (p.225)
70
71\begingroup \catcode`\"=12
72\gdef\@@sqrt#1{\radical"270370 {#1}}
73\endgroup
74
75\def\leftroot{\@amsmath@err{\Invalid@@\leftroot}\@eha}
76\def\uproot{\@amsmath@err{\Invalid@@\uproot}\@eha}
77\newcount\uproot@
78\newcount\leftroot@
79\def\root{\relaxnext@
80  \DN@{\ifx\@let@token\uproot\let\next@\nextii@\else
81   \ifx\@let@token\leftroot\let\next@\nextiii@\else
82   \let\next@\plainroot@\fi\fi\next@}%
83  \def\nextii@\uproot##1{\uproot@##1\relax\FN@\nextiv@}%
84  \def\nextiv@{\ifx\@let@token\@sptoken\DN@. {\FN@\nextv@}\else
85   \DN@.{\FN@\nextv@}\fi\next@.}%
86  \def\nextv@{\ifx\@let@token\leftroot\let\next@\nextvi@\else
87   \let\next@\plainroot@\fi\next@}%
88  \def\nextvi@\leftroot##1{\leftroot@##1\relax\plainroot@}%
89   \def\nextiii@\leftroot##1{\leftroot@##1\relax\FN@\nextvii@}%
90  \def\nextvii@{\ifx\@let@token\@sptoken
91   \DN@. {\FN@\nextviii@}\else
92   \DN@.{\FN@\nextviii@}\fi\next@.}%
93  \def\nextviii@{\ifx\@let@token\uproot\let\next@\nextix@\else
94   \let\next@\plainroot@\fi\next@}%
95  \def\nextix@\uproot##1{\uproot@##1\relax\plainroot@}%
96  \bgroup\uproot@\z@\leftroot@\z@\FN@\next@}
97\def\plainroot@#1\of#2{\setbox\rootbox\hbox{%
98 $\m@th\scriptscriptstyle{#1}$}%
99 \mathchoice{\r@@t\displaystyle{#2}}{\r@@t\textstyle{#2}}
100 {\r@@t\scriptstyle{#2}}{\r@@t\scriptscriptstyle{#2}}\egroup}
101\def\r@@t#1#2{\setboxz@h{$\m@th#1\@@sqrt{#2}$}%
102 \dimen@\ht\z@\advance\dimen@-\dp\z@
103 \setbox\@ne\hbox{$\m@th#1\mskip\uproot@ mu$}%
104 \advance\dimen@ by1.667\wd\@ne
105 \mkern-\leftroot@ mu\mkern5mu\raise.6\dimen@\copy\rootbox
106 \mkern-10mu\mkern\leftroot@ mu\boxz@}
107 
108%   definition of \boxed (math in frame, no dollars) p 225
109
110\def\boxed#1{\fbox{\m@th$\displaystyle#1$}}
111
112% definition of \smash for top and bottom parts of expression in braces (p.227)
113\renewcommand{\smash}[2][tb]{%
114  \def\smash@{#1}%
115  \ifmmode\@xp\mathpalette\@xp\mathsm@sh\else
116        \@xp\makesm@sh\fi{#2}}
117
118% additional difinitions for arrows
119% zero mm wide #2 mm long vertical arrow shifted 1 mm to left, 1 mm up
120\newcommand{\varrow}[2]{%
121\unitlength=1mm
122  \begin{picture}(0,6) % (0,0)
123  % - for #1 to point arrow down,+ to point arrow up
124  \end{picture}%
125  \put(0,6){\vector(0,#1 3){#2}}    % 6,- for down, 0, + for up
126}
127% 1 mm high #2 mm long horizontal arrow shifted 1 mm up (0,-1)
128\newcommand{\harrow}[2]{%
129\unitlength=1mm
130  \begin{picture}(8,1)(0,-1) %
131  % 1 mm distance between arrow and stackreled object over it (8,1)
132  \put(0,0){\vector(#1 2,0){#2}}     % - to point arrow left, + right
133  \end{picture}%
134}
135
136\endinput
137%% end of setstack.sty
138%% Corrections history:
139%%
Note: See TracBrowser for help on using the repository browser.