diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/bezos/tensind.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/bezos/tensind.sty | 284 |
1 files changed, 284 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/bezos/tensind.sty b/Master/texmf-dist/tex/latex/bezos/tensind.sty new file mode 100644 index 00000000000..2c9cc1bbc8e --- /dev/null +++ b/Master/texmf-dist/tex/latex/bezos/tensind.sty @@ -0,0 +1,284 @@ +% +--------------------------------------------------+ +% | Typeset titlesec.tex to get the documentation. | +% +--------------------------------------------------+ +% +% This file is copyrighted (c) 1998 by Javier Bezos. +% All Rights Reserved. +% +% This program can be redistributed and/or modified under the terms +% of the LaTeX Project Public License Distributed from CTAN +% archives in directory macros/latex/base/lppl.txt; either +% version 1 of the License, or any later version. +% +% Release +% ~~~~~~~ + +\ProvidesPackage{tensind}[1998/05/01 v1.0 Tensorial Indexes] + +\@tempcnta=\the\catcode`^ +\@tempcntb=\the\catcode`_ +\catcode`^=7\catcode`_=8 + +\newdimen\tsi@dimen + +\newif\iftsi@sp +\newif\iftsi@sb + +\newif\iftsi@e +\newif\iftsi@b +\newif\iftsi@l +\newif\iftsi@r +\newif\iftsi@o +\newif\iftsi@c +\newif\iftsi@s +\newif\iftsi@nodot + +\def\tsi@thedots{} +\def\tsi@theprimes{} +\def\tsi@thesb{} +\def\tsi@thesp{} +\def\tsi@lastloc{x} +\def\tsi@lastindex{}% +\def\tsi@addindex{\tsi@addpr} + +\let\tsi@bl\relax +\let\tsi@br\relax +\let\tsi@bm\relax +\let\tsi@tl\relax +\let\tsi@tr\relax +\let\tsi@tm\relax + +\let\tsi@choice\mathchoice + +\newif\iftsi@top +\newif\iftsi@bot + +\let\tsi@gap\relax + +\def\tensorformat#1{\tsi@lfalse\tsi@rfalse\tsi@efalse + \tsi@bfalse\tsi@ofalse\tsi@cfalse\tsi@sfalse + \@tfor\tsi@a:=#1\do{\csname tsi@\tsi@a true\endcsname}} + +\tensorformat{} +\def\indexdot{\cdot} + +\def\tsi@appendto#1#2{\protected@edef#2{#2#1}} + +\def\tensor{\catcode`_=8\catcode`^=7 % + \def\tsi@end{\end}\tsi@ifnextchar[{\tsi@otensor}{\tsi@xtensor}} + +\begingroup + +\catcode`?=13 +\gdef\tensordelimiter#1{\mathcode`#1="8000{\catcode`?=13\lccode`?=`#1 + \lowercase{% + \gdef?{\begingroup\catcode`_=8 \catcode`^=7 % + \def\tsi@end{#1}\def?{\endtensor\endgroup}% + \@ifnextchar[{\tsi@otensor}{\tsi@xtensor}}}}} + +\endgroup + +\def\tsi@otensor[#1]{\tensorformat{#1}\tsi@xtensor} + +\gdef\tsi@xtensor#1{% + \def\tsi@nucl{#1}% + \futurelet\nxt\tsi@process} + +\def\tsi@process#1{% + \def\next{\futurelet\nxt\tsi@process}% + \def\tsi@theindex{#1}\def\tsi@a{_}% + \ifx\tsi@theindex\tsi@a + \if\tsi@lastloc x\let\tsi@first\@empty\fi + \if\tsi@lastloc b\else\tsi@switchsb\fi + \else + \def\tsi@a{^}% + \ifx\tsi@theindex\tsi@a + \if\tsi@lastloc p\else\tsi@switchsp\fi + \else + \ifx\tsi@theindex\tsi@end + \let\next\tsi@end + \else + \tsi@nodotfalse + \ifx\nxt\bgroup + \def\tsi@lastindex{}% + \else + \csname tsi@cmd\string#1\endcsname + \def\tsi@lastindex{#1}% + \fi + \tsi@addindex + \fi + \fi + \fi + \next} + +\def\tsi@switchsp{% + \let\tsi@addindex\tsi@addsp + \iftsi@top + \def\tsi@gap{\tsi@tm}% + \else + \def\tsi@gap{\tsi@tl}% + \fi + \tsi@appendto{\tsi@thedots}\tsi@thesp + \let\tsi@gap\relax + \def\tsi@thedots{}} + +\def\tsi@switchsb{% + \let\tsi@addindex\tsi@addsb + \iftsi@bot + \def\tsi@gap{\tsi@bm}% + \else + \def\tsi@gap{\tsi@bl}% + \fi + \tsi@appendto{\tsi@thedots}\tsi@thesb + \let\tsi@gap\relax + \def\tsi@thedots{}} + +\def\tsi@addpr{% + \tsi@appendto{\tsi@theindex}\tsi@theprimes} + +\def\tsi@addsp{% + \tsi@toptrue + \tsi@appendto{\tsi@theindex}\tsi@thesp + \iftsi@nodot + \tsi@appendto{\protect\tsi@phantom{\tsi@theindex}}\tsi@thedots + \else + \tsi@appendto{\tsi@gap{\tsi@theindex}}\tsi@thedots + \fi + \def\tsi@lastloc{p}} + +\def\tsi@addsb{% + \tsi@bottrue + \tsi@appendto{\tsi@theindex}\tsi@thesb + \iftsi@nodot + \tsi@appendto{\protect\tsi@phantom{\tsi@theindex}}\tsi@thedots + \else + \tsi@appendto{\tsi@gap{\tsi@theindex}}\tsi@thedots + \fi + \def\tsi@lastloc{b}} + +\def\tsi@dot#1{% + \setbox\z@\hbox{$\tsi@fam\m@th\tsi@index#1$}% + \hbox to\wd\z@{\hss$\tsi@fam\m@th\tsi@index\indexdot$\hss}} + +\newdimen\primes + +\def\endtensor{% + \if\tsi@lastloc p + \def\tsi@gap{\tsi@br}% + \tsi@appendto{\tsi@thedots}\tsi@thesb + \else + \def\tsi@gap{\tsi@tr}% + \tsi@appendto{\tsi@thedots}\tsi@thesp + \fi + \let\tsi@bl\tsi@phantom \let\tsi@br\tsi@phantom + \let\tsi@bm\tsi@phantom \let\tsi@tm\tsi@phantom + \def\tsi@tl##1{\tsi@phantom{##1}\global\advance\tsi@dimen\wd\z@}% + \iftsi@top + \let\tsi@tr\tsi@phantom + \else + \let\tsi@tr\tsi@tl + \fi + \iftsi@bot + \iftsi@l\let\tsi@bl\tsi@dot\let\tsi@bm\tsi@dot\fi + \iftsi@r\let\tsi@br\tsi@dot\let\tsi@bm\tsi@dot\fi + \else + \iftsi@e\let\tsi@br\tsi@dot\tsi@bottrue\fi + \fi + \iftsi@b\else + \iftsi@top + \iftsi@l\let\tsi@tl\tsi@dot\let\tsi@tm\tsi@dot\fi + \iftsi@r\let\tsi@tr\tsi@dot\let\tsi@tm\tsi@dot\fi + \else + \iftsi@e\let\tsi@tr\tsi@dot\tsi@toptrue\fi + \fi + \fi + \ifx\tsi@theprimes\@empty\else\tsi@toptrue\fi + \edef\tsi@fam{\fam\the\fam}% + \tsi@choice + {\tsi@endtensor\displaystyle\scriptstyle}% + {\tsi@endtensor\textstyle\scriptstyle}% + {\tsi@endtensor\scriptstyle\scriptscriptstyle}% + {\tsi@endtensor\scriptscriptstyle\scriptscriptstyle}} + + +\def\tsi@endtensor#1#2{% + \let\tsi@text#1\let\tsi@index#2% + \setbox\z@ \hbox{$\tsi@fam\m@th#1\tsi@nucl_{x}$}% + \setbox\@ne\hbox{$\tsi@fam\m@th#1\tsi@nucl{}_{x}$}% + \tsi@dimen\wd\z@ \advance\tsi@dimen-\wd\@ne + \@tempdimb-\tsi@dimen + \setbox\z@ \hbox{$\kern\tsi@dimen\tsi@fam\m@th#2\tsi@thesp$}% + \setbox\@ne\hbox{$\tsi@fam\m@th#2\tsi@thesb$}% + \setbox\tw@\hbox{$\tsi@fam\m@th#2{\tsi@theprimes}$}% + \dp\z@\z@ + \ifdim\tsi@dimen>\wd\tw@ + \tsi@dimen\z@ + \else + \advance\tsi@dimen-\wd\tw@ + \fi + \wd\tw@\z@ + \iftsi@s + \ifx\tsi@text\displaystyle + \tsi@otrue\tsi@cfalse + \else + \tsi@ofalse\tsi@ctrue + \fi + \fi + \let\tsi@a\@empty + \tsi@nucl + \iftsi@bot_{\kern-\tsi@dimen\copy\@ne}% + \iftsi@o\tsi@toptrue\else\iftsi@c\tsi@toptrue + \ifx\tsi@text\displaystyle\else + \def\tsi@a{\raise.1ex}% + \fi + \kern-\wd\@ne\kern\tsi@dimen + \kern\@tempdimb\kern-\scriptspace + \fi\fi + \fi + \iftsi@top^{\tsi@a\box\tw@\kern-\tsi@dimen\tsi@a\box\z@}\fi} + +\def\tsi@phantom#1{% + \setbox\tw@\null + \setbox\z@\hbox{$\tsi@fam\m@th\tsi@index#1$}% + \wd\tw@\wd\z@ + \box\tw@}% + +\def\whenindex#1#2#3{% + \expandafter\def\csname tsi@cmd\expandafter\string#1\endcsname{% + \def\tsi@theindex{#2}#3}} + +\whenindex{'}{\prime}{} + +\def\spadjust#1#2{% + \def\tsi@a{#1}% + \ifx\tsi@a\tsi@lastindex + \iftsi@l\else + \iftsi@r\else + \ifx\tsi@addindex\tsi@addsp + \if\tsi@lastloc b% + \protected@edef\tsi@theindex{\mskip#2\thinmuskip\tsi@theindex}% + \fi + \fi + \fi + \fi + \fi} + +\def\sbadjust#1#2{% + \def\tsi@a{#1}% + \ifx\tsi@a\tsi@lastindex + \iftsi@l\else + \iftsi@r\else + \ifx\tsi@addindex\tsi@addsb + \if\tsi@lastloc p% + \protected@edef\tsi@theindex{\mskip#2\thinmuskip\tsi@theindex}% + \fi + \fi + \fi + \fi + \fi} + + +\def\omitdot{\tsi@nodottrue} +\def\finishdots{\tsi@nodottrue\let\tsi@nodotfalse\relax} + +\catcode`^=\@tempcnta\catcode`_=\@tempcntb |