% \iffalse meta comment % File: fouridx.dtx Copyright (C) 2008 Stefan Karrmann % \fi % % \iffalse % %<*package> \def\fileversion{1.00} \def\filedate{2008/03/27} % %<*driver> \documentclass{ltxdoc} \usepackage[latin1]{inputenc} \IfFileExists{fouridx.sty}{\usepackage{fouridx} \let\fouridxSTYfound\active}{\GenericWarning{fouridx.dtx}{Package file fouridx.sty not found (Documentation will be messed up!^^J^^A Generate fouridx.sty by (La)TeXing fouridx.ins, process fouridx.dtx again)^^J}\stop} \usepackage{longtable} \title{The \texttt{fouridx} package\thanks{This file has version \fileversion\ last revised \filedate.}} \author{Stefan Karrmann\\\texttt{s.karrmann at web.de}} \date{File Date \filedate, Printed \today} \newlength{\tempdima}% \makeatletter \renewenvironment{table}[1][]{% \@float{table}[#1]% \centering% \setlength{\tempdima}{\abovecaptionskip}% \setlength{\abovecaptionskip}{\belowcaptionskip}% \setlength{\belowcaptionskip}{\tempdima}% }{% \end@float } \makeatother \EnableCrossrefs \CodelineIndex \DoNotIndex{\def,\edef,\let,\newcommand,\newenvironment,\newcounter} \DoNotIndex{\setcounter,\space,\if,\else,\fi,\empty,\@empty,\ifx,\fi} \DoNotIndex{\ifnum,\fi,\expandafter} \CodelineNumbered \RecordChanges \CheckSum{39} \begin{document} \DocInput{fouridx.dtx} \end{document} % % \fi % % \changes{1.00}{2008/03/27}{Used leftidx.dtx as a template for the % English documentation}% % % \maketitle % \begin{abstract} % \noindent % This package enables left subscripts and superscripts in math mode. % These subscripts and superscripts are automatically raised for better % fitting to the symbol they belong to. This is done in such a way that % the left and right subscripts and superscripts are set on the same line, % respectivly. % \end{abstract} % % \tableofcontents % % \section*{Copyright} % Copyright 2007 Stefan Karrmann. % % 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. % % \section{Introduction} % % In mathematical equations, it is sometimes necessary to use indices % (subscript or superscript) that are positioned at the left side of a % symbol. % In tensor mathematics, for instance, some notations use a transponed % sign at the left side of the symbol: % \begin{eqnarray*} % \fourIdx{\mathrm{t}}{}{}{}{\left(A_{ij}\right)} &=& % \left(A_{ji}\right) % \end{eqnarray*} % % For symbols with a normal character height, this can be reached by % simply put the indices without an own symbol: % % \noindent % \begin{minipage}[c]{0.79\linewidth} % \leavevmode\begin{verbatim} % ${_1^2}a_3^4$ % \end{verbatim} % \end{minipage} % \begin{minipage}[c]{0.19\linewidth} % ${_1^2}a_3^4$ % \end{minipage} % % \noindent % Is the symbol larger, this leads to unsatisfactory results: % % \noindent % \begin{minipage}[c]{0.79\linewidth} % \leavevmode\begin{verbatim} % ${^1_2}\left(\frac{1}{b}\right)^3_4$ % \end{verbatim} % \end{minipage} % \begin{minipage}[c]{0.19\linewidth} % ${^1_2}\left(\frac{1}{b}\right)^3_4$ % \end{minipage} % % \noindent % If the subscripts on the left and right side are of different height or % the left subscripts and superscripts are of different width, % the result is also unsatisfactory: % % \noindent % \begin{minipage}[c]{0.79\linewidth} % \leavevmode\begin{verbatim} % ${^{(k)}_n}A^x_{\overline x\vert}$ % \end{verbatim} % \end{minipage} % \begin{minipage}[c]{0.19\linewidth} % ${^{(k)}_n}A^x_{\overline x\vert}$ % \end{minipage} % % \noindent % A better output can be reached by using the package |fouridx.sty|: % % \noindent % \begin{minipage}[c]{0.79\linewidth} % \leavevmode\begin{verbatim} % $\fourIdx{1}{2}{3}{4}{\left(\frac{1}{b}\right)}$ % \end{verbatim} % \end{minipage} % \begin{minipage}[c]{0.19\linewidth} % $\fourIdx{1}{2}{3}{4}{\left(\frac{1}{b}\right)}$ % \end{minipage} % % \noindent % \begin{minipage}[c]{0.79\linewidth} % \leavevmode\begin{verbatim} % $\fourIdx{(k)}{n}{x}{\overline x\vert}A$ % \end{verbatim} % \end{minipage} % \begin{minipage}[c]{0.19\linewidth} % $\fourIdx{(k)}{n}{x}{\overline x\vert}A$ % \end{minipage} % % \section{Usage of the package} % % One command is provided by the package. % % \DescribeMacro{\fourIdx}% % The \cs{fourIdx} command has the syntax % \cs{fourIdx}\marg{left superscript}\marg{left subscript}% % \marg{right superscript}\marg{right subscript}\marg{symbol}. % This command typesets the symbol \meta{symbol} with indices on the % left and on the right side. % Example: % % \noindent % \begin{minipage}[c]{0.79\linewidth} % \leavevmode\begin{verbatim} % $\fourIdx1234{\left(\frac{1}{b}\right)}$ % \end{verbatim} % \end{minipage} % \begin{minipage}[c]{0.19\linewidth} % $\fourIdx1234{\left(\frac{1}{b}\right)}$ % \end{minipage} % % \noindent % You may omit left or right indices by using empty arguments. % % The next example shows the same in the different mathematical % styles: % \def\asdf{\fourIdx1234{\left(\frac1b\right)}}% % \begin{displaymath} % \displaystyle\asdf\quad\textstyle\asdf\quad % \scriptstyle\asdf\quad\scriptscriptstyle\asdf % \end{displaymath} % % \StopEventually{\PrintChanges \PrintIndex} % % \section{The implementation} % \iffalse %<*package> % \fi % Heading of the package: % \begin{macrocode} \NeedsTeXFormat{LaTeX2e}[1995/12/01] \ProvidesPackage{fouridx}[\filedate\space v\fileversion\space Four indices] % \end{macrocode} % \begin{macro}{\fourIdx} % \changes{1.00}{2008/03/27}{Implementation simplyfied}% % Command for left indices. % \begin{macrocode} \newcommand{\fourIdx}[5]{% \setbox1=\hbox{\ensuremath{^{#1}}}% \setbox2=\hbox{\ensuremath{_{#2}}}% \setbox5=\hbox{\ensuremath{#5}}% \hspace{\ifnum\wd1>\wd2\wd1\else\wd2\fi}% \ensuremath{\copy5^{\hspace{-\wd1}\hspace{-\wd5}#1\hspace{\wd5}#3}% _{\hspace{-\wd2}\hspace{-\wd5}#2\hspace{\wd5}#4}% }} % \end{macrocode} % \end{macro} % % \iffalse % % \fi % \Finale