summaryrefslogtreecommitdiff
path: root/obsolete/macros/latex/contrib/piff/tensor.sty
blob: 3c02623718e77b6e668d610711c7fabc4a8f3756 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
\def\filename{tensor.sty}
\def\fileversion{1.00}
\def\filedate{03 Jun 1996 14:57:09 BST}
%%           
%% Copyright (C) 1996 Mike Piff
%%
%%M.Piff@sheffield.ac.uk
%%                   
%%Defines the command \tensor with two parameters.
%%  #1 = The name of the tensor
%%  #2 = The superscript/subscript sequence.
%%  
%%  eg
%%  
%%  \tensor{A}{^{i}_{j}^{kl}}
%%  
%%  Don't forget the enclosing braces round the indices!!
%%  
%
\typeout{\filename\space v\fileversion, (C) Copyright Mike Piff, \filedate}
\NeedsTeXFormat{LaTeX2e}[1995/12/01]

\ProvidesPackage{tensor}
\ProcessOptions

\newtoks\tensor@sup \newtoks\tensor@sub
\newcommand\tensor[2]{\tensor@sup={}\tensor@sub={}%
   #1\tensor@process#2\tensor@endprocess%
}                                              

\newcommand\tensor@process[1]{%
   \ifx #1\tensor@endprocess
      \let\next\tensor@finish
   \else
      \ifx#1^%
         \let\next\tensor@absorbsup
      \else
         \ifx#1_%
            \let\next\tensor@absorbsub
         \else
            \PackageError{tensor}{Sub/Superscript token missing}%
         \fi
      \fi
   \fi
   \next
}                    

\newcommand\tensor@absorbsup[1]{%
   \tensor@sup=\expandafter{\the\tensor@sup#1}%
   \tensor@sub=\expandafter{\the\tensor@sub\phantom{#1}}%
   \tensor@process
}

\newcommand\tensor@absorbsub[1]{%
   \tensor@sub=\expandafter{\the\tensor@sub#1}%
   \tensor@sup=\expandafter{\the\tensor@sup\phantom{#1}}%
   \tensor@process
}

\def\tensor@finish{_{\the\tensor@sub}^{\the\tensor@sup}}
\endinput