From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- macros/latex/contrib/tensind/README.md | 16 ++ macros/latex/contrib/tensind/tensind.pdf | Bin 0 -> 216060 bytes macros/latex/contrib/tensind/tensind.sty | 301 +++++++++++++++++++++++++++++++ macros/latex/contrib/tensind/tensind.tex | 211 ++++++++++++++++++++++ 4 files changed, 528 insertions(+) create mode 100644 macros/latex/contrib/tensind/README.md create mode 100644 macros/latex/contrib/tensind/tensind.pdf create mode 100644 macros/latex/contrib/tensind/tensind.sty create mode 100644 macros/latex/contrib/tensind/tensind.tex (limited to 'macros/latex/contrib/tensind') diff --git a/macros/latex/contrib/tensind/README.md b/macros/latex/contrib/tensind/README.md new file mode 100644 index 0000000000..ff11d77db0 --- /dev/null +++ b/macros/latex/contrib/tensind/README.md @@ -0,0 +1,16 @@ + +Tensorial indexes, with fine tuning and optional substitution +of letters (a -> \alpha, for instance) + +Both accents and tensind takes into account the +slight displacement of indexes in some letters (like $f^1_1$). + +License: MIT +________ +Javier Bezos --- http://www.texnia.com + + + + + + diff --git a/macros/latex/contrib/tensind/tensind.pdf b/macros/latex/contrib/tensind/tensind.pdf new file mode 100644 index 0000000000..b6da5cfa36 Binary files /dev/null and b/macros/latex/contrib/tensind/tensind.pdf differ diff --git a/macros/latex/contrib/tensind/tensind.sty b/macros/latex/contrib/tensind/tensind.sty new file mode 100644 index 0000000000..77a42d64b8 --- /dev/null +++ b/macros/latex/contrib/tensind/tensind.sty @@ -0,0 +1,301 @@ +% +% Copyright (C) 1998-2019 Javier Bezos http://www.texnia.com +% +% This file may be distributed and/or modified under the conditions of +% the MIT License. A version can be found at the end of this file. +% +% +% Release +% ~~~~~~~ + +\ProvidesPackage{tensind}[1998/05/01 v1.1 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 + +\endinput + +MIT License +----------- + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/macros/latex/contrib/tensind/tensind.tex b/macros/latex/contrib/tensind/tensind.tex new file mode 100644 index 0000000000..5fb7a93248 --- /dev/null +++ b/macros/latex/contrib/tensind/tensind.tex @@ -0,0 +1,211 @@ +% +% Copyright (C) 1998-2019 Javier Bezos http://www.texnia.com +% +% This file may be distributed and/or modified under the conditions of +% the MIT License. A version can be found at the end of this file. +% + +\def\fileversion{1.1} +\def\docdate{August 7, 2000} + +\documentclass{ltxguide} +\usepackage{tensind} + +\title{The \textsf{tensind} Package for +Tensorial Indexes\footnote{This +package is currently at version 1.1.}} + +\author{Javier Bezos\footnote{For bug reports, comments and +suggestions go to +\texttt{http://www.tex-tipografia.com}. +English is not my strong point, so contact me when you +find mistakes in the manual. Other packages by the same author: +\textsf{accents, titlesec, dotlessi}.}} + +\date{\docdate} + +\newenvironment{sample}{\begin{quote}\small\begin{tabbing}% + \hskip12pc\=\hskip6pc\\} + {\end{tabbing}\end{quote}} + +\tensordelimiter{?} +\tensorformat{lrb} + +\raggedright + +\begin{document} + +\maketitle + +This package provides typographically fine tensorial notation, with the +following features: +\begin{itemize} +\item Dots filling gaps. +\item Symbol subtitution to easy typing (if you are using greek letters, for +example). +\item Corrected position of indexes: horizontally, to compensate the small +displacement in letters +like $f$ (look carefully at $f_*^*$) and vertically, to avoid superscripts +too raised. +\item Aditional minute corrections are also allowed. +\end{itemize} + +\section{User Interface} + +\begin{decl} +|\tensordelimiter{}| +\end{decl} + +Defines || to be a tensor delimiter. In subsequent examples we will +assume +\begin{verbatim} +\tensordelimiter{?} +\end{verbatim} +and every instance of |?| will actually mean ||. + +\begin{decl} +|?[]{}{}{}...|\\ +| ...?| +\end{decl} + +Creates a tensor. || is either |_{}{}...| or +|^{}{}|. +|| is the symbol which indexes will be add to. || is a +superscript which is neither covariant nor contravariant (dual, +prime...). In +one-letter ||, || or ||, curly braces can be +omitted. +For example: +\begin{sample} +|?R_ij^kl_\alpha^\beta?| \> $?R_ij^kl_\alpha^\beta?$\\[2pt] +|?R^ij_kl^\alpha_\beta?| \> $?R^ij_kl^\alpha_\beta?$\\[2pt] +|?R**_ij^kl_\alpha^\beta?| \> $?R**_ij^kl_\alpha^\beta?$\\[2pt] +|?R**^ij_kl^\alpha_\beta?| \> $?R**^ij_kl^\alpha_\beta?$ +\end{sample} + +(\emph{Don't forget the closing |?|!}) +Finally, || changes the format in a tensor. (See |\tensorformat| +below.) + +\begin{decl} +|\tensorformat{}| +\end{decl} + +The following letter may be used in format. +\begin{itemize} +\item[\texttt{l}] Gaps to the left of the last index are filled with dots. +\item[\texttt{r}] Gaps to the right of the first index are filled. +\item[\texttt{e}] If there is no index (empty), gaps are filled. +\item[\texttt{b}] Only gaps in subscripts are filled. +\end{itemize} + +Sensible settings are: none (no dots), |l| and |lrb|. +Further options are: +\begin{itemize} +\item[\texttt{c}] Brings index lines closer. +\item[\texttt{o}] Opens index lines. +\item[\texttt{s}] Styled. |o| in display style and |c| otherwise. +\end{itemize} +These options are mutually exclusive. If none of them is +used, then indexes behave in a similar way to standard ones. +This document sets +\begin{verbatim} +\tensorformat{lrb} +\end{verbatim} + +\begin{sample} +|?[]f\prime_ij^kl?| \> $?[]f\prime_ij^kl?$\\[2pt] +|?[e]f^ij?| \> $?[e]f^ij?$ \\[2pt] +|?[l]f*_ij^kl?| \> $?[l]f*_ij^kl?$\\[2pt] +|?[c]R^ij_kl?| \> $?[c]R^ij_kl?$ +\end{sample} + +\begin{decl} +|\indexdot| +\end{decl} + +This macro is the index dot. Defined to |\cdot|. You can +redefine it with |\renewcommand|. + +\begin{decl} +|\whenindex{}{}{}| +\end{decl} + +Automatically replaces || (if not enclosed in braces) +by || and the additional || are +executed. For example, if you like to use greek indexes: +\begin{verbatim} +\whenindex{a}{\alpha}{} +\whenindex{b}{\beta}{} +\whenindex{g}{\gamma}{} +\end{verbatim} + +\whenindex{a}{\alpha}{} +\whenindex{b}{\beta}{} +\whenindex{g}{\gamma}{ +} +A |\whenindex{'}{\prime}{}| is performed by the package. For instance +\begin{sample} +|?R'_ijk^abg?| \> $?R'_ijk^abg?$ +\end{sample} + +In ||, two command for space fine-tuning are provided: +|\sbadjust{}{}| adds || times +|\,| before the current subscript index if the last superscript index +was ||. Similarly, |\spadjust| adds the space before the current +superscript index if the last subscript index was ||. +For instance, the normal result of |?[]R^ik_lm?| is $?[]R^ij_kl?$, but +with +\begin{verbatim} +\whenindex{k}{k}{\sbadjust{j}{-1}} +\end{verbatim} +\whenindex{k}{k}{\sbadjust{j}{-1}} +is $?[]R^ij_kl?$. +These commands will be ignored if dots are used. + +Two further command allowed in |\whenindex| +are: |\omitdot| omits the dot for the current +index, and |\finishdots| omits as well all subsequent indexes. +For example +\begin{verbatim} +\whenindex{;}{\,;\,}{\finishdots} +\end{verbatim} +\whenindex{;}{\,;\,}{\finishdots} + +\begin{sample} +|?[lr]A*_i^kl;i?| \> $?[lr]A*_i^kl;i?$ +\end{sample} + +\begin{decl} +|tensor| +\end{decl} + +The environment called by |?...?|. Useful if for some reason you +don't want an equivalent defined with |\tensordelimiter| . Example: +\begin{verbatim} +\begin{tensor}[lr]A*_i^kl;i\end{tensor} +\end{verbatim} + +\end{document} + +MIT License +----------- + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- cgit v1.2.3