% \iffalse ---!!! FIRST META-COMMENT !!!--- % % % This file is innerscript_code.dtx from version 1.2 % of the free and open-source LaTeX package "innerscript," % released November 2023, to be used with the LuaTeX engine. % % Running Plain TeX on innerscript_code.dtx will % produce the following files: % % (1) the package file innerscript.sty; % % (2) the derived files innerscript_heading.tex % and innerscript_user_guide.tex, which are % used for typesetting documentation; % % and % % (3) a number of other derived files. % % Running LaTeX on innerscript_code.dtx will produce the % files listed above as well as the following: % % (4) the pdf documentation file innerscript_code.pdf; % % and % % (5) a number of other derived files. % % To install innerscript on your computer, run this file % through Plain TeX or LaTeX and move innerscript.sty % to a directory searchable by TeX. See the associated % README.txt file for installation information. % % % \fi % \iffalse ---!!! SECOND META-COMMENT !!!--- % % % This file is from version 1.2 of the free and open-source % LaTeX package "innerscript," released November 2023, to be % used with the LuaTeX engine. % % Copyright 2021, 2023 by Conrad Kosowsky % % This file may be distributed and modified under the terms % of the LaTeX Public Project License, version 1.3c or any % later version. The most recent version of this license is % available online at % % https://www.latex-project.org/lppl/ % % This Work has the LPPL status "maintained," and the current % maintainer is the package author, Conrad Kosowsky. He can % be reached at kosowsky.latex@gmail.com. The Work consists % of the following items: % % (1) the base file innerscript.dtx; % % (2) the package file innerscript.sty; % % (3) the pdf documentation files innerscript_code.pdf % and innerscript_user_guide.pdf; % % (4) the derived file innerscript_heading.tex; % % (4) all other files created through the configuration % process; % % and % % (5) the associated README.txt file. % % PLEASE KNOW THAT THIS FREE SOFTWARE IS PROVIDED WITHOUT % ANY WARRANTY. SPECIFICALLY, THE "NO WARRANTY" SECTION OF % THE LATEX PROJECT PUBLIC LICENSE STATES THE FOLLOWING: % % THERE IS NO WARRANTY FOR THE WORK. EXCEPT WHEN OTHERWISE % STATED IN WRITING, THE COPYRIGHT HOLDER PROVIDES THE WORK % `AS IS’, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED % OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED % WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR % PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE % OF THE WORK IS WITH YOU. SHOULD THE WORK PROVE DEFECTIVE, % YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR, OR % CORRECTION. % % IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED % TO IN WRITING WILL THE COPYRIGHT HOLDER, OR ANY AUTHOR % NAMED IN THE COMPONENTS OF THE WORK, OR ANY OTHER PARTY % WHO MAY DISTRIBUTE AND/OR MODIFY THE WORK AS PERMITTED % ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, % SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT % OF ANY USE OF THE WORK OR OUT OF INABILITY TO USE THE WORK % (INCLUDING, BUT NOT LIMITED TO, LOSS OF DATA, DATA BEING % RENDERED INACCURATE, OR LOSSES SUSTAINED BY ANYONE AS A % RESULT OF ANY FAILURE OF THE WORK TO OPERATE WITH ANY % OTHER PROGRAMS), EVEN IF THE COPYRIGHT HOLDER OR SAID % AUTHOR OR SAID OTHER PARTY HAS BEEN ADVISED OF THE % POSSIBILITY OF SUCH DAMAGES. % % For more information, see the LaTeX Project Public License. % Derivative works based on this software may come with their % own license or terms of use, and the package author is not % responsible for any third-party software. % % Happy TeXing! % % % \fi % \iffalse % % The installation and driver files are incorporated into % innerscript_code.dtx, so we do not need to generate them % separately. The and tags are for % reference. % %<*batchfile> \begingroup \input docstrip.tex \keepsilent \askforoverwritefalse \preamble This file is from version 1.2 of the free and open-source LaTeX package "innerscript," released November 2023, to be used with the LuaTeX engine. Copyright 2021, 2023 by Conrad Kosowsky This file may be distributed and modified under the terms of the LaTeX Public Project License, version 1.3c or any later version. The most recent version of this license is available online at https://www.latex-project.org/lppl/ This work has the LPPL status "maintained," and the current maintainer is the package author, Conrad Kosowsky. He can be reached at kosowsky.latex@gmail.com. PLEASE KNOW THAT THIS FREE SOFTWARE IS PROVIDED WITHOUT ANY WARRANTY. SPECIFICALLY, THE "NO WARRANTY" SECTION OF THE LATEX PROJECT PUBLIC LICENSE STATES THE FOLLOWING: THERE IS NO WARRANTY FOR THE WORK. EXCEPT WHEN OTHERWISE STATED IN WRITING, THE COPYRIGHT HOLDER PROVIDES THE WORK `AS IS’, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE WORK IS WITH YOU. SHOULD THE WORK PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR, OR CORRECTION. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL THE COPYRIGHT HOLDER, OR ANY AUTHOR NAMED IN THE COMPONENTS OF THE WORK, OR ANY OTHER PARTY WHO MAY DISTRIBUTE AND/OR MODIFY THE WORK AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE WORK OR OUT OF INABILITY TO USE THE WORK (INCLUDING, BUT NOT LIMITED TO, LOSS OF DATA, DATA BEING RENDERED INACCURATE, OR LOSSES SUSTAINED BY ANYONE AS A RESULT OF ANY FAILURE OF THE WORK TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF THE COPYRIGHT HOLDER OR SAID AUTHOR OR SAID OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. For more information, see the LaTeX Project Public License. Derivative works based on this software may come with their own license or terms of use, and the package author is not responsible for any third-party software. Happy TeXing! \endpreamble \generate{\file{innerscript.sty}{\from{innerscript_code.dtx}{package}} \file{innerscript_user_guide.tex}{\from{innerscript_code.dtx}{user}} \file{innerscript_heading.tex}{\from{innerscript_code.dtx}{heading}}} \catcode`\ =12\relax \immediate\write0{^^J% ****************************************************^^J% * Step 1 of the innerscript installation complete! *^^J% ****************************************************^^J^^J% ****************************************************^^J% * To finish installing the package, move *^^J% * innerscript.sty to a directory searchable by TeX *^^J% * after innerscript_code.tex is done typesetting *^^J% ****************************************************^^J} \endgroup \ifx\LaTeX\undefined \immediate\write0{Plain TeX format used; quitting now.} \immediate\write0{To create innerscript_code.pdf, run^^J% innerscript_code.dtx through LaTeX.^^J^^J} \expandafter\end \fi % %<*driver> \makeatletter \documentclass[12pt,doc2,letterpaper]{ltxdoc} \usepackage[margin=72.27pt]{geometry} \usepackage[factor=700,stretch=14,shrink=14,step=1]{microtype} \usepackage{booktabs} \usepackage{tabularx} \usepackage{amsmath} \usepackage{multicol} \usepackage{graphicx} \begin{document} \def\documentname{Implementation} \input innerscript_heading.tex \DocInput{innerscript_code.dtx} \end{document} % %<*package> % % \fi % % % \CheckSum{1921} % \init@checksum % % \makeatother % \CharacterTable % {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z % Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z % Digits \0\1\2\3\4\5\6\7\8\9 % Exclamation \! Double quote \" Hash (number) \# % Dollar \$ Percent \% Ampersand \& % Acute accent \' Left paren \( Right paren \) % Asterisk \* Plus \+ Comma \, % Minus \- Point \. Solidus \/ % Colon \: Semicolon \; Less than \< % Equals \= Greater than \> Question mark \? % Commercial at \@ Left bracket \[ Backslash \\ % Right bracket \] Circumflex \^ Underscore \_ % Grave accent \` Left brace \{ Vertical bar \| % Right brace \} Tilde \~} % \makeatletter % % % % \noindent This file documents the code for the \textsf{innerscript} package. It is not a user guide! If you are looking for instructions on how to load \textsf{innerscript} and what it can do for your document, see |innerscript_user_guide.pdf|, which is included with the \textsf{innerscript} installation and is available on \textsc{ctan}. Section~1 begins with the package declaration and option processing. Sections~2 and 3 contain the code to adjust spacing between symbols in |\scriptstyle| and |\scriptscriptstyle| respectively, and Section~4 contains the code for adjusting the spacing around |\mathinner| subformulas. Section~5 handles spacing between |\mathclose| and |\mathord| atoms, and section~6 fills out the resizable delimiter heights. Version history appears at the end of the document. % % % % \section{Setup} % % We begin the implementation by declaring the package. The counts |\IS@script| and |\IS@scriptscript| and the conditionals |\ifIS@inner|, |\ifIS@close|, and |\ifIS@cover| encode package option information. For the counts, a value of 0 means no changes, a value of 1 means default spacing, and a value of 2 means legacy spacing. % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{innerscript}[2023/11/06 v. 1.2 Package innerscript] \newcount\IS@script \newcount\IS@scriptscript \newif\ifIS@inner \newif\ifIS@close \newif\ifIS@cover % \end{macrocode} % And set default options. % \begin{macrocode} \IS@script\@ne \IS@scriptscript\@ne \IS@innertrue \IS@closetrue \IS@covertrue % \end{macrocode} % Now define and process the package options. % \begin{macrocode} \DeclareOption{script}{\IS@script\@ne} \DeclareOption{scriptscript}{\IS@scriptscript\@ne} \DeclareOption{inner}{\IS@innertrue} \DeclareOption{close}{\IS@closetrue} \DeclareOption{cover}{\IS@covertrue} \DeclareOption{legacy-script}{\IS@script\tw@} \DeclareOption{legacy-scriptscript}{\IS@scriptscript\tw@} \DeclareOption{no-script}{\IS@script\z@} \DeclareOption{no-scriptscript}{\IS@scriptscript\z@} \DeclareOption{no-inner}{\IS@innerfalse} \DeclareOption{no-close}{\IS@closefalse} \DeclareOption{no-cover}{\IS@coverfalse} \ProcessOptions* % \end{macrocode} % Check whether |\Umathordordspacing| is defined. If not, issue an error and |\endinput|. We normally can't print multiple spaces at once, so within a group, we change the space catcode to 12. % \begin{macrocode} \ifx\Umathordordspacing\@undefined \bgroup \catcode`\+=12\relax \def\IS@LuaTeXError{\GenericError{}% {\MessageBreak\MessageBreak Package innerscript error:% \MessageBreak\MessageBreak *******************\MessageBreak * *\MessageBreak * CANNOT LOAD *\MessageBreak * INNERSCRIPT *\MessageBreak * LuaTeX Needed *\MessageBreak * *\MessageBreak *******************\MessageBreak\@gobbletwo}% {See the innerscript package documentation for explanation.}% {I need LuaTeX to make the innerscript package work. It\MessageBreak looks like the current engine is something else, so I\MessageBreak can't load the package file. To use innerscript, please\MessageBreak typeset with LuaLaTeX. To continue without innerscript,\MessageBreak press return.}}% \expandafter\egroup \IS@LuaTeXError \AtEndOfPackage{\typeout{Package innerscript failed to load \on@line!}} \expandafter\endinput % we \endinput with a balanced conditional \fi % \end{macrocode} % To save space in the code, we define |\IS@info| to print an informational message in the |log| file. The macro |\scalemu| scales a muglue register. We use |\scalemu| instead of multiplying the register by a constant because |\scalemu| also affects the stretch and shrink instead of discarding them. % \begin{macrocode} \def\IS@info#1{\wlog{Package innerscript Info: #1}} \def\scalemu#1#2{\muexpr#2#1 \@plus\muexpr#2\gluetomu\gluestretch\mutoglue#1\relax \@minus\muexpr#2\gluetomu\glueshrink\mutoglue#1\relax\relax} % \end{macrocode} % % \section{Scriptstyle Spacing} % First we set the spacing for |\scriptstyle| and |\crampedscriptstyle| atoms. Each space adjustment has the form % \begin{code} % |\Umath|\argtext{classes}|spacing|\meta{style}|=\scalemu{|\meta{skip}|}{0.6}|, % \end{code} % where the \meta{classes} are a pair of choices from |ord|, |op|, |bin|, |rel|, |open|, |close|, |punct|, and |inner|. The \meta{style} is either |\scriptstyle| or |\crampedscriptstyle|, and the \meta{skip} is the amount of muglue that typically appears between the \meta{classes} while in |\textstyle| or |\displaystyle|. As of version 1.2, we use |\scalemu| to scale the muglue registers. Table~1 shows the space inserted with option |script|. % \begin{figure}[t!] % \centerline{\bfseries\strut Table 1: Space Inserted with Option |script|} % \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}lll}\toprule % Consecutive Atom Types & Default Space Added & Legacy Space Added\\\midrule % |\mathord||\mathop| & 0.6|\thinmuskip| & 0.6|\thinmuskip| \\ % |\mathord||\mathbin| & 0.6|\medmuskip| & 0.7|\thinmuskip| \\ % |\mathord||\mathrel| & 0.6|\thickmuskip| & |\thinmuskip| \\ % |\mathord||\mathinner| & 0.6|\thinmuskip| & 0.6|\thinmuskip| \\\midrule % |\mathop||\mathord| & 0.6|\thinmuskip| & 0.6|\thinmuskip| \\ % |\mathop||\mathop| & 0.6|\thinmuskip| & 0.6|\thinmuskip| \\ % |\mathop||\mathrel| & 0.6|\thickmuskip| & |\thinmuskip| \\ % |\mathop||\mathinner| & 0.6|\thickmuskip| & |\thinmuskip| \\\midrule % |\mathbin||\mathord| & 0.6|\medmuskip| & 0.7|\thinmuskip| \\ % |\mathbin||\mathop| & 0.6|\medmuskip| & 0.7|\thinmuskip| \\ % |\mathbin||\mathopen| & 0.6|\medmuskip| & 0.7|\thinmuskip| \\ % |\mathbin||\mathinner| & 0.6|\medmuskip| & 0.7|\thinmuskip| \\\midrule % |\mathrel||\mathord| & 0.6|\thickmuskip| & |\thinmuskip| \\ % |\mathrel||\mathop| & 0.6|\thickmuskip| & |\thinmuskip| \\ % |\mathrel||\mathopen| & 0.6|\thickmuskip| & |\thinmuskip| \\ % |\mathrel||\mathinner| & 0.6|\thickmuskip| & |\thinmuskip| \\\midrule % |\mathclose||\mathop| & 0.6|\thinmuskip| & 0.6|\thinmuskip| \\ % |\mathclose||\mathbin| & 0.6|\medmuskip| & 0.7|\thinmuskip| \\ % |\mathclose||\mathrel| & 0.6|\thickmuskip| & |\thinmuskip| \\ % |\mathclose||\mathinner| & 0.6|\thinmuskip| & 0.6|\thinmuskip| \\\midrule % |\mathpunct||\mathord| & 0.6|\thinmuskip| & 0.6|\thinmuskip| \\ % |\mathpunct||\mathop| & 0.6|\thinmuskip| & 0.6|\thinmuskip| \\ % |\mathpunct||\mathrel| & 0.6|\thinmuskip| & 0.6|\thinmuskip| \\ % |\mathpunct||\mathopen| & 0.6|\thinmuskip| & 0.6|\thinmuskip| \\ % |\mathpunct||\mathclose| & 0.6|\thinmuskip| & 0.6|\thinmuskip| \\ % |\mathpunct||\mathpunct| & 0.6|\thinmuskip| & 0.6|\thinmuskip| \\ % |\mathpunct||\mathinner| & 0.6|\thinmuskip| & 0.6|\thinmuskip| \\\midrule % |\mathinner||\mathord| & 0.6|\thinmuskip| & 0.6|\thinmuskip| \\ % |\mathinner||\mathop| & 0.6|\thinmuskip| & 0.6|\thinmuskip| \\ % |\mathinner||\mathbin| & 0.6|\medmuskip| & 0.7|\thinmuskip| \\ % |\mathinner||\mathrel| & 0.6|\thickmuskip| & |\thinmuskip| \\ % |\mathinner||\mathopen| & 0.6|\thinmuskip| & 0.6|\thinmuskip| \\ % |\mathinner||\mathpunct| & 0.6|\thinmuskip| & 0.6|\thinmuskip| \\ % |\mathinner||\mathinner| & 0.6|\thinmuskip| & 0.6|\thinmuskip| \\\bottomrule % \end{tabular*} % \end{figure} % \begin{macrocode} \ifcase\IS@script % Case 0: No changes \IS@info{No changes to space for \string\scriptstyle\space atoms.} \IS@info{No changes to space for \string\crampedscriptstyle\space atoms.} \or % Case 1: Default changes \IS@info{Adjusting space for \string\scriptstyle\space atoms.} \IS@info{Adjusting space for \string\crampedscriptstyle\space atoms.} % \end{macrocode} % Default spacing changes for |\scriptstyle|. % \begin{macrocode} % \scriptstyle \Umathordopspacing\scriptstyle=\scalemu{\thinmuskip}{0.6} \Umathordbinspacing\scriptstyle=\scalemu{\medmuskip}{0.6} \Umathordrelspacing\scriptstyle=\scalemu{\thickmuskip}{0.6} \Umathordinnerspacing\scriptstyle=\scalemu{\thinmuskip}{0.6} \Umathopordspacing\scriptstyle=\scalemu{\thinmuskip}{0.6} \Umathopopspacing\scriptstyle=\scalemu{\thinmuskip}{0.6} \Umathoprelspacing\scriptstyle=\scalemu{\thickmuskip}{0.6} \Umathopinnerspacing\scriptstyle=\scalemu{\thickmuskip}{0.6} \Umathbinordspacing\scriptstyle=\scalemu{\medmuskip}{0.6} \Umathbinopspacing\scriptstyle=\scalemu{\medmuskip}{0.6} \Umathbinopenspacing\scriptstyle=\scalemu{\medmuskip}{0.6} \Umathbininnerspacing\scriptstyle=\scalemu{\medmuskip}{0.6} \Umathrelordspacing\scriptstyle=\scalemu{\thickmuskip}{0.6} \Umathrelopspacing\scriptstyle=\scalemu{\thickmuskip}{0.6} \Umathrelopenspacing\scriptstyle=\scalemu{\thickmuskip}{0.6} \Umathrelinnerspacing\scriptstyle=\scalemu{\thickmuskip}{0.6} \Umathcloseopspacing\scriptstyle=\scalemu{\thinmuskip}{0.6} \Umathclosebinspacing\scriptstyle=\scalemu{\medmuskip}{0.6} \Umathcloserelspacing\scriptstyle=\scalemu{\thickmuskip}{0.6} \Umathcloseinnerspacing\scriptstyle=\scalemu{\thinmuskip}{0.6} \Umathpunctordspacing\scriptstyle=\scalemu{\thinmuskip}{0.6} \Umathpunctopspacing\scriptstyle=\scalemu{\thinmuskip}{0.6} \Umathpunctrelspacing\scriptstyle=\scalemu{\thinmuskip}{0.6} \Umathpunctopenspacing\scriptstyle=\scalemu{\thinmuskip}{0.6} \Umathpunctclosespacing\scriptstyle=\scalemu{\thinmuskip}{0.6} \Umathpunctpunctspacing\scriptstyle=\scalemu{\thinmuskip}{0.6} \Umathpunctinnerspacing\scriptstyle=\scalemu{\thinmuskip}{0.6} \Umathinnerordspacing\scriptstyle=\scalemu{\thinmuskip}{0.6} \Umathinneropspacing\scriptstyle=\scalemu{\thinmuskip}{0.6} \Umathinnerbinspacing\scriptstyle=\scalemu{\medmuskip}{0.6} \Umathinnerrelspacing\scriptstyle=\scalemu{\thickmuskip}{0.6} \Umathinneropenspacing\scriptstyle=\scalemu{\thinmuskip}{0.6} \Umathinnerpunctspacing\scriptstyle=\scalemu{\thinmuskip}{0.6} \Umathinnerinnerspacing\scriptstyle=\scalemu{\thinmuskip}{0.6} % \end{macrocode} % Default spacing changes for |\crampedscriptstyle|. % \begin{macrocode} % \crampedscriptstyle \Umathordopspacing\crampedscriptstyle=\scalemu{\thinmuskip}{0.6} \Umathordbinspacing\crampedscriptstyle=\scalemu{\medmuskip}{0.6} \Umathordrelspacing\crampedscriptstyle=\scalemu{\thickmuskip}{0.6} \Umathordinnerspacing\crampedscriptstyle=\scalemu{\thinmuskip}{0.6} \Umathopordspacing\crampedscriptstyle=\scalemu{\thinmuskip}{0.6} \Umathopopspacing\crampedscriptstyle=\scalemu{\thinmuskip}{0.6} \Umathoprelspacing\crampedscriptstyle=\scalemu{\thickmuskip}{0.6} \Umathopinnerspacing\crampedscriptstyle=\scalemu{\thickmuskip}{0.6} \Umathbinordspacing\crampedscriptstyle=\scalemu{\medmuskip}{0.6} \Umathbinopspacing\crampedscriptstyle=\scalemu{\medmuskip}{0.6} \Umathbinopenspacing\crampedscriptstyle=\scalemu{\medmuskip}{0.6} \Umathbininnerspacing\crampedscriptstyle=\scalemu{\medmuskip}{0.6} \Umathrelordspacing\crampedscriptstyle=\scalemu{\thickmuskip}{0.6} \Umathrelopspacing\crampedscriptstyle=\scalemu{\thickmuskip}{0.6} \Umathrelopenspacing\crampedscriptstyle=\scalemu{\thickmuskip}{0.6} \Umathrelinnerspacing\crampedscriptstyle=\scalemu{\thickmuskip}{0.6} \Umathcloseopspacing\crampedscriptstyle=\scalemu{\thinmuskip}{0.6} \Umathclosebinspacing\crampedscriptstyle=\scalemu{\medmuskip}{0.6} \Umathcloserelspacing\crampedscriptstyle=\scalemu{\thickmuskip}{0.6} \Umathcloseinnerspacing\crampedscriptstyle=\scalemu{\thinmuskip}{0.6} \Umathpunctordspacing\crampedscriptstyle=\scalemu{\thinmuskip}{0.6} \Umathpunctopspacing\crampedscriptstyle=\scalemu{\thinmuskip}{0.6} \Umathpunctrelspacing\crampedscriptstyle=\scalemu{\thinmuskip}{0.6} \Umathpunctopenspacing\crampedscriptstyle=\scalemu{\thinmuskip}{0.6} \Umathpunctclosespacing\crampedscriptstyle=\scalemu{\thinmuskip}{0.6} \Umathpunctpunctspacing\crampedscriptstyle=\scalemu{\thinmuskip}{0.6} \Umathpunctinnerspacing\crampedscriptstyle=\scalemu{\thinmuskip}{0.6} \Umathinnerordspacing\crampedscriptstyle=\scalemu{\thinmuskip}{0.6} \Umathinneropspacing\crampedscriptstyle=\scalemu{\thinmuskip}{0.6} \Umathinnerbinspacing\crampedscriptstyle=\scalemu{\medmuskip}{0.6} \Umathinnerrelspacing\crampedscriptstyle=\scalemu{\thickmuskip}{0.6} \Umathinneropenspacing\crampedscriptstyle=\scalemu{\thinmuskip}{0.6} \Umathinnerpunctspacing\crampedscriptstyle=\scalemu{\thinmuskip}{0.6} \Umathinnerinnerspacing\crampedscriptstyle=\scalemu{\thinmuskip}{0.6} % \end{macrocode} % For backwards compatibility, we provide an option to use the spacing from \textsf{innerscript} version 1.1. Note that the old spacing does not use |\scalemu|. % \begin{macrocode} \or % Case 2: Changes from previous version of innerscript \IS@info{Using v. 1.1 space for \string\scriptstyle\space atoms.} \IS@info{Using v. 1.1 space for \string\crampedscriptstyle\space atoms.} % \end{macrocode} % Legacy spacing for |\scriptstyle|. % \begin{macrocode} % \scriptstyle \Umathordopspacing\scriptstyle=0.6\thinmuskip \Umathordbinspacing\scriptstyle=0.7\thinmuskip \Umathordrelspacing\scriptstyle=\thinmuskip \Umathordinnerspacing\scriptstyle=0.6\thinmuskip \Umathopordspacing\scriptstyle=0.6\thinmuskip \Umathopopspacing\scriptstyle=0.6\thinmuskip \Umathoprelspacing\scriptstyle=\thinmuskip \Umathopinnerspacing\scriptstyle=\thinmuskip \Umathbinordspacing\scriptstyle=0.7\thinmuskip \Umathbinopspacing\scriptstyle=0.7\thinmuskip \Umathbinopenspacing\scriptstyle=0.7\thinmuskip \Umathbininnerspacing\scriptstyle=0.7\thinmuskip \Umathrelordspacing\scriptstyle=\thinmuskip \Umathrelopspacing\scriptstyle=\thinmuskip \Umathrelopenspacing\scriptstyle=\thinmuskip \Umathrelinnerspacing\scriptstyle=\thinmuskip \Umathcloseopspacing\scriptstyle=0.6\thinmuskip \Umathclosebinspacing\scriptstyle=0.7\thinmuskip \Umathcloserelspacing\scriptstyle=\thinmuskip \Umathcloseinnerspacing\scriptstyle=0.6\thinmuskip \Umathpunctordspacing\scriptstyle=0.6\thinmuskip \Umathpunctopspacing\scriptstyle=0.6\thinmuskip \Umathpunctrelspacing\scriptstyle=0.6\thinmuskip \Umathpunctopenspacing\scriptstyle=0.6\thinmuskip \Umathpunctclosespacing\scriptstyle=0.6\thinmuskip \Umathpunctpunctspacing\scriptstyle=0.6\thinmuskip \Umathpunctinnerspacing\scriptstyle=0.6\thinmuskip \Umathinnerordspacing\scriptstyle=0.6\thinmuskip \Umathinneropspacing\scriptstyle=0.6\thinmuskip \Umathinnerbinspacing\scriptstyle=0.7\thinmuskip \Umathinnerrelspacing\scriptstyle=\thinmuskip \Umathinneropenspacing\scriptstyle=0.6\thinmuskip \Umathinnerpunctspacing\scriptstyle=0.6\thinmuskip \Umathinnerinnerspacing\scriptstyle=0.6\thinmuskip % \end{macrocode} % Legacy spacing for |\crampedscriptstyle|. % \begin{macrocode} % \crampedscriptstyle \Umathordopspacing\crampedscriptstyle=0.6\thinmuskip \Umathordbinspacing\crampedscriptstyle=0.7\thinmuskip \Umathordrelspacing\crampedscriptstyle=\thinmuskip \Umathordinnerspacing\crampedscriptstyle=0.6\thinmuskip \Umathopordspacing\crampedscriptstyle=0.6\thinmuskip \Umathopopspacing\crampedscriptstyle=0.6\thinmuskip \Umathoprelspacing\crampedscriptstyle=\thinmuskip \Umathopinnerspacing\crampedscriptstyle=\thinmuskip \Umathbinordspacing\crampedscriptstyle=0.7\thinmuskip \Umathbinopspacing\crampedscriptstyle=0.7\thinmuskip \Umathbinopenspacing\crampedscriptstyle=0.7\thinmuskip \Umathbininnerspacing\crampedscriptstyle=0.7\thinmuskip \Umathrelordspacing\crampedscriptstyle=\thinmuskip \Umathrelopspacing\crampedscriptstyle=\thinmuskip \Umathrelopenspacing\crampedscriptstyle=\thinmuskip \Umathrelinnerspacing\crampedscriptstyle=\thinmuskip \Umathcloseopspacing\crampedscriptstyle=0.6\thinmuskip \Umathclosebinspacing\crampedscriptstyle=0.7\thinmuskip \Umathcloserelspacing\crampedscriptstyle=\thinmuskip \Umathcloseinnerspacing\crampedscriptstyle=0.6\thinmuskip \Umathpunctordspacing\crampedscriptstyle=0.6\thinmuskip \Umathpunctopspacing\crampedscriptstyle=0.6\thinmuskip \Umathpunctrelspacing\crampedscriptstyle=0.6\thinmuskip \Umathpunctopenspacing\crampedscriptstyle=0.6\thinmuskip \Umathpunctclosespacing\crampedscriptstyle=0.6\thinmuskip \Umathpunctpunctspacing\crampedscriptstyle=0.6\thinmuskip \Umathpunctinnerspacing\crampedscriptstyle=0.6\thinmuskip \Umathinnerordspacing\crampedscriptstyle=0.6\thinmuskip \Umathinneropspacing\crampedscriptstyle=0.6\thinmuskip \Umathinnerbinspacing\crampedscriptstyle=0.7\thinmuskip \Umathinnerrelspacing\crampedscriptstyle=\thinmuskip \Umathinneropenspacing\crampedscriptstyle=0.6\thinmuskip \Umathinnerpunctspacing\crampedscriptstyle=0.6\thinmuskip \Umathinnerinnerspacing\crampedscriptstyle=0.6\thinmuskip \fi % \end{macrocode} % % \section{Scriptscriptstyle Spacing} % % Set the spacing for |\scriptscriptstyle| and |\crampedscriptscriptstyle|. The process is the same as it was for |\scriptstyle| except with a factor of 0.4 instead of 0.6. See Table~2 for amounts of space added with option |scriptscript|. % \begin{figure}[t!] % \centerline{\bfseries\strut Table 2: Space Inserted with Option |scriptscript|} % \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}lll}\toprule % Consecutive Atom Types & Default Space Added & Legacy Space Added\\\midrule % |\mathord||\mathop| & 0.4|\thinmuskip| & 0.4|\thinmuskip| \\ % |\mathord||\mathbin| & 0.4|\medmuskip| & 0.5|\thinmuskip| \\ % |\mathord||\mathrel| & 0.4|\thickmuskip| & 0.7|\thinmuskip| \\ % |\mathord||\mathinner| & 0.4|\thinmuskip| & 0.4|\thinmuskip| \\\midrule % |\mathop||\mathord| & 0.4|\thinmuskip| & 0.4|\thinmuskip| \\ % |\mathop||\mathop| & 0.4|\thinmuskip| & 0.4|\thinmuskip| \\ % |\mathop||\mathrel| & 0.4|\thickmuskip| & 0.7|\thinmuskip| \\ % |\mathop||\mathinner| & 0.4|\thickmuskip| & 0.7|\thinmuskip| \\\midrule % |\mathbin||\mathord| & 0.4|\medmuskip| & 0.5|\thinmuskip| \\ % |\mathbin||\mathop| & 0.4|\medmuskip| & 0.5|\thinmuskip| \\ % |\mathbin||\mathopen| & 0.4|\medmuskip| & 0.5|\thinmuskip| \\ % |\mathbin||\mathinner| & 0.4|\medmuskip| & 0.5|\thinmuskip| \\\midrule % |\mathrel||\mathord| & 0.4|\thickmuskip| & 0.7|\thinmuskip| \\ % |\mathrel||\mathop| & 0.4|\thickmuskip| & 0.7|\thinmuskip| \\ % |\mathrel||\mathopen| & 0.4|\thickmuskip| & 0.7|\thinmuskip| \\ % |\mathrel||\mathinner| & 0.4|\thickmuskip| & 0.7|\thinmuskip| \\\midrule % |\mathclose||\mathop| & 0.4|\thinmuskip| & 0.4|\thinmuskip| \\ % |\mathclose||\mathbin| & 0.4|\medmuskip| & 0.5|\thinmuskip| \\ % |\mathclose||\mathrel| & 0.4|\thickmuskip| & 0.7|\thinmuskip| \\ % |\mathclose||\mathinner| & 0.4|\thinmuskip| & 0.4|\thinmuskip| \\\midrule % |\mathpunct||\mathord| & 0.4|\thinmuskip| & 0.4|\thinmuskip| \\ % |\mathpunct||\mathop| & 0.4|\thinmuskip| & 0.4|\thinmuskip| \\ % |\mathpunct||\mathrel| & 0.4|\thinmuskip| & 0.4|\thinmuskip| \\ % |\mathpunct||\mathopen| & 0.4|\thinmuskip| & 0.4|\thinmuskip| \\ % |\mathpunct||\mathclose| & 0.4|\thinmuskip| & 0.4|\thinmuskip| \\ % |\mathpunct||\mathpunct| & 0.4|\thinmuskip| & 0.4|\thinmuskip| \\ % |\mathpunct||\mathinner| & 0.4|\thinmuskip| & 0.4|\thinmuskip| \\\midrule % |\mathinner||\mathord| & 0.4|\thinmuskip| & 0.4|\thinmuskip| \\ % |\mathinner||\mathop| & 0.4|\thinmuskip| & 0.4|\thinmuskip| \\ % |\mathinner||\mathbin| & 0.4|\medmuskip| & 0.5|\thinmuskip| \\ % |\mathinner||\mathrel| & 0.4|\thickmuskip| & 0.7|\thinmuskip| \\ % |\mathinner||\mathopen| & 0.4|\thinmuskip| & 0.4|\thinmuskip| \\ % |\mathinner||\mathpunct| & 0.4|\thinmuskip| & 0.4|\thinmuskip| \\ % |\mathinner||\mathinner| & 0.4|\thinmuskip| & 0.4|\thinmuskip| \\\bottomrule % \end{tabular*} % \end{figure} % \begin{macrocode} \ifcase\IS@scriptscript % Case 0: No changes \IS@info{No changes to space for \string\scriptscriptstyle\space atoms.} \IS@info{No changes to space for \string\crampedscriptscriptstyle\space atoms.} \or % Case 1: Default changes \IS@info{Adjusting space for \string\scriptscriptstyle\space atoms.} \IS@info{Adjusting space for \string\crampedscriptscriptstyle\space atoms.} % \end{macrocode} % Default spacing changes for |\scriptscriptstyle|. % \begin{macrocode} % \scriptscriptstyle \Umathordopspacing\scriptscriptstyle=\scalemu{\thinmuskip}{0.4} \Umathordbinspacing\scriptscriptstyle=\scalemu{\medmuskip}{0.4} \Umathordrelspacing\scriptscriptstyle=\scalemu{\thickmuskip}{0.4} \Umathordinnerspacing\scriptscriptstyle=\scalemu{\thinmuskip}{0.4} \Umathopordspacing\scriptscriptstyle=\scalemu{\thinmuskip}{0.4} \Umathopopspacing\scriptscriptstyle=\scalemu{\thinmuskip}{0.4} \Umathoprelspacing\scriptscriptstyle=\scalemu{\thickmuskip}{0.4} \Umathopinnerspacing\scriptscriptstyle=\scalemu{\thickmuskip}{0.4} \Umathbinordspacing\scriptscriptstyle=\scalemu{\medmuskip}{0.4} \Umathbinopspacing\scriptscriptstyle=\scalemu{\medmuskip}{0.4} \Umathbinopenspacing\scriptscriptstyle=\scalemu{\medmuskip}{0.4} \Umathbininnerspacing\scriptscriptstyle=\scalemu{\medmuskip}{0.4} \Umathrelordspacing\scriptscriptstyle=\scalemu{\thickmuskip}{0.4} \Umathrelopspacing\scriptscriptstyle=\scalemu{\thickmuskip}{0.4} \Umathrelopenspacing\scriptscriptstyle=\scalemu{\thickmuskip}{0.4} \Umathrelinnerspacing\scriptscriptstyle=\scalemu{\thickmuskip}{0.4} \Umathcloseopspacing\scriptscriptstyle=\scalemu{\thinmuskip}{0.4} \Umathclosebinspacing\scriptscriptstyle=\scalemu{\medmuskip}{0.4} \Umathcloserelspacing\scriptscriptstyle=\scalemu{\thickmuskip}{0.4} \Umathcloseinnerspacing\scriptscriptstyle=\scalemu{\thinmuskip}{0.4} \Umathpunctordspacing\scriptscriptstyle=\scalemu{\thinmuskip}{0.4} \Umathpunctopspacing\scriptscriptstyle=\scalemu{\thinmuskip}{0.4} \Umathpunctrelspacing\scriptscriptstyle=\scalemu{\thinmuskip}{0.4} \Umathpunctopenspacing\scriptscriptstyle=\scalemu{\thinmuskip}{0.4} \Umathpunctclosespacing\scriptscriptstyle=\scalemu{\thinmuskip}{0.4} \Umathpunctpunctspacing\scriptscriptstyle=\scalemu{\thinmuskip}{0.4} \Umathpunctinnerspacing\scriptscriptstyle=\scalemu{\thinmuskip}{0.4} \Umathinnerordspacing\scriptscriptstyle=\scalemu{\thinmuskip}{0.4} \Umathinneropspacing\scriptscriptstyle=\scalemu{\thinmuskip}{0.4} \Umathinnerbinspacing\scriptscriptstyle=\scalemu{\medmuskip}{0.4} \Umathinnerrelspacing\scriptscriptstyle=\scalemu{\thickmuskip}{0.4} \Umathinneropenspacing\scriptscriptstyle=\scalemu{\thinmuskip}{0.4} \Umathinnerpunctspacing\scriptscriptstyle=\scalemu{\thinmuskip}{0.4} \Umathinnerinnerspacing\scriptscriptstyle=\scalemu{\thinmuskip}{0.4} % \end{macrocode} % Default spacing changes for |\crampedscriptscriptstyle|. % \begin{macrocode} % \crampedscriptscriptstyle \Umathordopspacing\crampedscriptscriptstyle=\scalemu {\thinmuskip}{0.4} \Umathordbinspacing\crampedscriptscriptstyle=\scalemu {\medmuskip}{0.4} \Umathordrelspacing\crampedscriptscriptstyle=\scalemu {\thickmuskip}{0.4} \Umathordinnerspacing\crampedscriptscriptstyle=\scalemu {\thinmuskip}{0.4} \Umathopordspacing\crampedscriptscriptstyle=\scalemu {\thinmuskip}{0.4} \Umathopopspacing\crampedscriptscriptstyle=\scalemu {\thinmuskip}{0.4} \Umathoprelspacing\crampedscriptscriptstyle=\scalemu {\thickmuskip}{0.4} \Umathopinnerspacing\crampedscriptscriptstyle=\scalemu {\thickmuskip}{0.4} \Umathbinordspacing\crampedscriptscriptstyle=\scalemu {\medmuskip}{0.4} \Umathbinopspacing\crampedscriptscriptstyle=\scalemu {\medmuskip}{0.4} \Umathbinopenspacing\crampedscriptscriptstyle=\scalemu {\medmuskip}{0.4} \Umathbininnerspacing\crampedscriptscriptstyle=\scalemu {\medmuskip}{0.4} \Umathrelordspacing\crampedscriptscriptstyle=\scalemu {\thickmuskip}{0.4} \Umathrelopspacing\crampedscriptscriptstyle=\scalemu {\thickmuskip}{0.4} \Umathrelopenspacing\crampedscriptscriptstyle=\scalemu {\thickmuskip}{0.4} \Umathrelinnerspacing\crampedscriptscriptstyle=\scalemu {\thickmuskip}{0.4} \Umathcloseopspacing\crampedscriptscriptstyle=\scalemu {\thinmuskip}{0.4} \Umathclosebinspacing\crampedscriptscriptstyle=\scalemu {\medmuskip}{0.4} \Umathcloserelspacing\crampedscriptscriptstyle=\scalemu {\thickmuskip}{0.4} \Umathcloseinnerspacing\crampedscriptscriptstyle=\scalemu {\thinmuskip}{0.4} \Umathpunctordspacing\crampedscriptscriptstyle=\scalemu {\thinmuskip}{0.4} \Umathpunctopspacing\crampedscriptscriptstyle=\scalemu {\thinmuskip}{0.4} \Umathpunctrelspacing\crampedscriptscriptstyle=\scalemu {\thinmuskip}{0.4} \Umathpunctopenspacing\crampedscriptscriptstyle=\scalemu {\thinmuskip}{0.4} \Umathpunctclosespacing\crampedscriptscriptstyle=\scalemu {\thinmuskip}{0.4} \Umathpunctpunctspacing\crampedscriptscriptstyle=\scalemu {\thinmuskip}{0.4} \Umathpunctinnerspacing\crampedscriptscriptstyle=\scalemu {\thinmuskip}{0.4} \Umathinnerordspacing\crampedscriptscriptstyle=\scalemu {\thinmuskip}{0.4} \Umathinneropspacing\crampedscriptscriptstyle=\scalemu {\thinmuskip}{0.4} \Umathinnerbinspacing\crampedscriptscriptstyle=\scalemu {\medmuskip}{0.4} \Umathinnerrelspacing\crampedscriptscriptstyle=\scalemu {\thickmuskip}{0.4} \Umathinneropenspacing\crampedscriptscriptstyle=\scalemu {\thinmuskip}{0.4} \Umathinnerpunctspacing\crampedscriptscriptstyle=\scalemu {\thinmuskip}{0.4} \Umathinnerinnerspacing\crampedscriptscriptstyle=\scalemu {\thinmuskip}{0.4} % \end{macrocode} % Again, provide an option to use spacing from previous version. % \begin{macrocode} \or % Case 2: Changes from previous version of innerscript \IS@info{Using v. 1.1 space for \string\scriptscriptstyle\space atoms.} \IS@info{Using v. 1.1 space for \string\crampedscriptscriptstyle\space atoms.} % \end{macrocode} % Legacy spacing for |\scriptscriptstyle|. % \begin{macrocode} % \scriptscriptstyle \Umathordopspacing\scriptscriptstyle=0.4\thinmuskip \Umathordbinspacing\scriptscriptstyle=0.5\thinmuskip \Umathordrelspacing\scriptscriptstyle=0.7\thinmuskip \Umathordinnerspacing\scriptscriptstyle=0.4\thinmuskip \Umathopordspacing\scriptscriptstyle=0.4\thinmuskip \Umathopopspacing\scriptscriptstyle=0.4\thinmuskip \Umathoprelspacing\scriptscriptstyle=0.7\thinmuskip \Umathopinnerspacing\scriptscriptstyle=0.7\thinmuskip \Umathbinordspacing\scriptscriptstyle=0.5\thinmuskip \Umathbinopspacing\scriptscriptstyle=0.5\thinmuskip \Umathbinopenspacing\scriptscriptstyle=0.5\thinmuskip \Umathbininnerspacing\scriptscriptstyle=0.5\thinmuskip \Umathrelordspacing\scriptscriptstyle=0.7\thinmuskip \Umathrelopspacing\scriptscriptstyle=0.7\thinmuskip \Umathrelopenspacing\scriptscriptstyle=0.7\thinmuskip \Umathrelinnerspacing\scriptscriptstyle=0.7\thinmuskip \Umathcloseopspacing\scriptscriptstyle=0.4\thinmuskip \Umathclosebinspacing\scriptscriptstyle=0.5\thinmuskip \Umathcloserelspacing\scriptscriptstyle=0.7\thinmuskip \Umathcloseinnerspacing\scriptscriptstyle=0.4\thinmuskip \Umathpunctordspacing\scriptscriptstyle=0.4\thinmuskip \Umathpunctopspacing\scriptscriptstyle=0.4\thinmuskip \Umathpunctrelspacing\scriptscriptstyle=0.4\thinmuskip \Umathpunctopenspacing\scriptscriptstyle=0.4\thinmuskip \Umathpunctclosespacing\scriptscriptstyle=0.4\thinmuskip \Umathpunctpunctspacing\scriptscriptstyle=0.4\thinmuskip \Umathpunctinnerspacing\scriptscriptstyle=0.4\thinmuskip \Umathinnerordspacing\scriptscriptstyle=0.4\thinmuskip \Umathinneropspacing\scriptscriptstyle=0.4\thinmuskip \Umathinnerbinspacing\scriptscriptstyle=0.5\thinmuskip \Umathinnerrelspacing\scriptscriptstyle=0.7\thinmuskip \Umathinneropenspacing\scriptscriptstyle=0.4\thinmuskip \Umathinnerpunctspacing\scriptscriptstyle=0.4\thinmuskip \Umathinnerinnerspacing\scriptscriptstyle=0.4\thinmuskip % \end{macrocode} % Legacy spacing for |\crampedscriptscriptstyle|. % \begin{macrocode} % \crampedscriptscriptstyle \Umathordopspacing\crampedscriptscriptstyle=0.4\thinmuskip \Umathordbinspacing\crampedscriptscriptstyle=0.5\thinmuskip \Umathordrelspacing\crampedscriptscriptstyle=0.7\thinmuskip \Umathordinnerspacing\crampedscriptscriptstyle=0.4\thinmuskip \Umathopordspacing\crampedscriptscriptstyle=0.4\thinmuskip \Umathopopspacing\crampedscriptscriptstyle=0.4\thinmuskip \Umathoprelspacing\crampedscriptscriptstyle=0.7\thinmuskip \Umathopinnerspacing\crampedscriptscriptstyle=0.7\thinmuskip \Umathbinordspacing\crampedscriptscriptstyle=0.5\thinmuskip \Umathbinopspacing\crampedscriptscriptstyle=0.5\thinmuskip \Umathbinopenspacing\crampedscriptscriptstyle=0.5\thinmuskip \Umathbininnerspacing\crampedscriptscriptstyle=0.5\thinmuskip \Umathrelordspacing\crampedscriptscriptstyle=0.7\thinmuskip \Umathrelopspacing\crampedscriptscriptstyle=0.7\thinmuskip \Umathrelopenspacing\crampedscriptscriptstyle=0.7\thinmuskip \Umathrelinnerspacing\crampedscriptscriptstyle=0.7\thinmuskip \Umathcloseopspacing\crampedscriptscriptstyle=0.4\thinmuskip \Umathclosebinspacing\crampedscriptscriptstyle=0.5\thinmuskip \Umathcloserelspacing\crampedscriptscriptstyle=0.7\thinmuskip \Umathcloseinnerspacing\crampedscriptscriptstyle=0.4\thinmuskip \Umathpunctordspacing\crampedscriptscriptstyle=0.4\thinmuskip \Umathpunctopspacing\crampedscriptscriptstyle=0.4\thinmuskip \Umathpunctrelspacing\crampedscriptscriptstyle=0.4\thinmuskip \Umathpunctopenspacing\crampedscriptscriptstyle=0.4\thinmuskip \Umathpunctclosespacing\crampedscriptscriptstyle=0.4\thinmuskip \Umathpunctpunctspacing\crampedscriptscriptstyle=0.4\thinmuskip \Umathpunctinnerspacing\crampedscriptscriptstyle=0.4\thinmuskip \Umathinnerordspacing\crampedscriptscriptstyle=0.4\thinmuskip \Umathinneropspacing\crampedscriptscriptstyle=0.4\thinmuskip \Umathinnerbinspacing\crampedscriptscriptstyle=0.5\thinmuskip \Umathinnerrelspacing\crampedscriptscriptstyle=0.7\thinmuskip \Umathinneropenspacing\crampedscriptscriptstyle=0.4\thinmuskip \Umathinnerpunctspacing\crampedscriptscriptstyle=0.4\thinmuskip \Umathinnerinnerspacing\crampedscriptscriptstyle=0.4\thinmuskip \fi % \end{macrocode} % % \section{Mathinner Subformulas} % % Now set the spacing for |\mathinner| subformulas. For every atom type from |ord|, |op|, |bin|, |rel|, |open|, |close|, |punct|, and |inner|, we set the spacing that appears between that atom and a |\mathinner| subformula to the amount that normally appears between that type and a |\mathord| atom. Specifically, every space adjustment has the form % \begin{code} % |\Umath|\meta{atom}|innerspacing|\meta{style}|=|\\ % | \the\Umath|\meta{atom}|ordspacing|\meta{style}|\relax| % \end{code} % or the same with the \meta{atom} appearing after the |inner| or |ord|. The \meta{style} is one of the eight math style commands: |\displaystyle|, |\textstyle|, |\scriptstyle|, |\scriptscriptstyle|, and the cramped versions. Section~4 comes after Sections~2 and 3 because we make sure to capture all spacing changes in superscripts and subscripts. % \begin{macrocode} \ifIS@inner \IS@info{Adjusting space for \string\mathinner\space subformulas.} % \end{macrocode} % First, we handle the cases where the first subformula is not |\mathinner| and the second subformula is |\mathinner|. We start with |\displaystyle|. % \begin{macrocode} % \displaystyle \Umathordinnerspacing\displaystyle= \the\Umathordordspacing\displaystyle\relax \Umathopinnerspacing\displaystyle= \the\Umathopordspacing\displaystyle\relax \Umathbininnerspacing\displaystyle= \the\Umathbinordspacing\displaystyle\relax \Umathrelinnerspacing\displaystyle= \the\Umathrelordspacing\displaystyle\relax \Umathopeninnerspacing\displaystyle= \the\Umathopenordspacing\displaystyle\relax \Umathcloseinnerspacing\displaystyle= \the\Umathcloseordspacing\displaystyle\relax \Umathpunctinnerspacing\displaystyle= \the\Umathpunctordspacing\displaystyle\relax % \end{macrocode} % Changes for |\textstyle|. % \begin{macrocode} % \textstyle \Umathordinnerspacing\textstyle= \the\Umathordordspacing\textstyle\relax \Umathopinnerspacing\textstyle= \the\Umathopordspacing\textstyle\relax \Umathbininnerspacing\textstyle= \the\Umathbinordspacing\textstyle\relax \Umathrelinnerspacing\textstyle= \the\Umathrelordspacing\textstyle\relax \Umathopeninnerspacing\textstyle= \the\Umathopenordspacing\textstyle\relax \Umathcloseinnerspacing\textstyle= \the\Umathcloseordspacing\textstyle\relax \Umathpunctinnerspacing\textstyle= \the\Umathpunctordspacing\textstyle\relax % \end{macrocode} % Changes for |\scriptstyle|. % \begin{macrocode} % \scriptstyle \Umathordinnerspacing\scriptstyle= \the\Umathordordspacing\scriptstyle\relax \Umathopinnerspacing\scriptstyle= \the\Umathopordspacing\scriptstyle\relax \Umathbininnerspacing\scriptstyle= \the\Umathbinordspacing\scriptstyle\relax \Umathrelinnerspacing\scriptstyle= \the\Umathrelordspacing\scriptstyle\relax \Umathopeninnerspacing\scriptstyle= \the\Umathopenordspacing\scriptstyle\relax \Umathcloseinnerspacing\scriptstyle= \the\Umathcloseordspacing\scriptstyle\relax \Umathpunctinnerspacing\scriptstyle= \the\Umathpunctordspacing\scriptstyle\relax % \end{macrocode} % Changes for |\scriptscriptstyle|. % \begin{macrocode} % \scriptscriptstyle \Umathordinnerspacing\scriptscriptstyle= \the\Umathordordspacing\scriptscriptstyle\relax \Umathopinnerspacing\scriptscriptstyle= \the\Umathopordspacing\scriptscriptstyle\relax \Umathbininnerspacing\scriptscriptstyle= \the\Umathbinordspacing\scriptscriptstyle\relax \Umathrelinnerspacing\scriptscriptstyle= \the\Umathrelordspacing\scriptscriptstyle\relax \Umathopeninnerspacing\scriptscriptstyle= \the\Umathopenordspacing\scriptscriptstyle\relax \Umathcloseinnerspacing\scriptscriptstyle= \the\Umathcloseordspacing\scriptscriptstyle\relax \Umathpunctinnerspacing\scriptscriptstyle= \the\Umathpunctordspacing\scriptscriptstyle\relax % \end{macrocode} % Changes for |\crampeddisplaystyle|. % \begin{macrocode} % \crampeddisplaystyle \Umathordinnerspacing\crampeddisplaystyle= \the\Umathordordspacing\crampeddisplaystyle\relax \Umathopinnerspacing\crampeddisplaystyle= \the\Umathopordspacing\crampeddisplaystyle\relax \Umathbininnerspacing\crampeddisplaystyle= \the\Umathbinordspacing\crampeddisplaystyle\relax \Umathrelinnerspacing\crampeddisplaystyle= \the\Umathrelordspacing\crampeddisplaystyle\relax \Umathopeninnerspacing\crampeddisplaystyle= \the\Umathopenordspacing\crampeddisplaystyle\relax \Umathcloseinnerspacing\crampeddisplaystyle= \the\Umathcloseordspacing\crampeddisplaystyle\relax \Umathpunctinnerspacing\crampeddisplaystyle= \the\Umathpunctordspacing\crampeddisplaystyle\relax % \end{macrocode} % Changes for |\crampedtextstyle|. % \begin{macrocode} % \crampedtextstyle \Umathordinnerspacing\crampedtextstyle= \the\Umathordordspacing\crampedtextstyle\relax \Umathopinnerspacing\crampedtextstyle= \the\Umathopordspacing\crampedtextstyle\relax \Umathbininnerspacing\crampedtextstyle= \the\Umathbinordspacing\crampedtextstyle\relax \Umathrelinnerspacing\crampedtextstyle= \the\Umathrelordspacing\crampedtextstyle\relax \Umathopeninnerspacing\crampedtextstyle= \the\Umathopenordspacing\crampedtextstyle\relax \Umathcloseinnerspacing\crampedtextstyle= \the\Umathcloseordspacing\crampedtextstyle\relax \Umathpunctinnerspacing\crampedtextstyle= \the\Umathpunctordspacing\crampedtextstyle\relax % \end{macrocode} % Changes for |\crampedscriptstyle|. % \begin{macrocode} % \crampedscriptstyle \Umathordinnerspacing\crampedscriptstyle= \the\Umathordordspacing\crampedscriptstyle\relax \Umathopinnerspacing\crampedscriptstyle= \the\Umathopordspacing\crampedscriptstyle\relax \Umathbininnerspacing\crampedscriptstyle= \the\Umathbinordspacing\crampedscriptstyle\relax \Umathrelinnerspacing\crampedscriptstyle= \the\Umathrelordspacing\crampedscriptstyle\relax \Umathopeninnerspacing\crampedscriptstyle= \the\Umathopenordspacing\crampedscriptstyle\relax \Umathcloseinnerspacing\crampedscriptstyle= \the\Umathcloseordspacing\crampedscriptstyle\relax \Umathpunctinnerspacing\crampedscriptstyle= \the\Umathpunctordspacing\crampedscriptstyle\relax % \end{macrocode} % Changes for |\crampedscriptscriptstyle|. % \begin{macrocode} % \crampedscriptscriptstyle \Umathordinnerspacing\crampedscriptscriptstyle= \the\Umathordordspacing\crampedscriptscriptstyle\relax \Umathopinnerspacing\crampedscriptscriptstyle= \the\Umathopordspacing\crampedscriptscriptstyle\relax \Umathbininnerspacing\crampedscriptscriptstyle= \the\Umathbinordspacing\crampedscriptscriptstyle\relax \Umathrelinnerspacing\crampedscriptscriptstyle= \the\Umathrelordspacing\crampedscriptscriptstyle\relax \Umathopeninnerspacing\crampedscriptscriptstyle= \the\Umathopenordspacing\crampedscriptscriptstyle\relax \Umathcloseinnerspacing\crampedscriptscriptstyle= \the\Umathcloseordspacing\crampedscriptscriptstyle\relax \Umathpunctinnerspacing\crampedscriptscriptstyle= \the\Umathpunctordspacing\crampedscriptscriptstyle\relax % \end{macrocode} % Now handle the case when the first subformula is |\mathinner| followed by something else. Again we start with |\displaystyle|. % \begin{macrocode} % \displaystyle \Umathinnerordspacing\displaystyle= \the\Umathordordspacing\displaystyle\relax \Umathinneropspacing\displaystyle= \the\Umathordopspacing\displaystyle\relax \Umathinnerbinspacing\displaystyle= \the\Umathordbinspacing\displaystyle\relax \Umathinnerrelspacing\displaystyle= \the\Umathordrelspacing\displaystyle\relax \Umathinneropenspacing\displaystyle= \the\Umathordopenspacing\displaystyle\relax \Umathinnerclosespacing\displaystyle= \the\Umathordclosespacing\displaystyle\relax \Umathinnerpunctspacing\displaystyle= \the\Umathordpunctspacing\displaystyle\relax % \end{macrocode} % Changes for |\textstyle|. % \begin{macrocode} % \textstyle \Umathinnerordspacing\textstyle= \the\Umathordordspacing\textstyle\relax \Umathinneropspacing\textstyle= \the\Umathordopspacing\textstyle\relax \Umathinnerbinspacing\textstyle= \the\Umathordbinspacing\textstyle\relax \Umathinnerrelspacing\textstyle= \the\Umathordrelspacing\textstyle\relax \Umathinneropenspacing\textstyle= \the\Umathordopenspacing\textstyle\relax \Umathinnerclosespacing\textstyle= \the\Umathordclosespacing\textstyle\relax \Umathinnerpunctspacing\textstyle= \the\Umathordpunctspacing\textstyle\relax % \end{macrocode} % Changes for |\scriptstyle|. % \begin{macrocode} % \scriptstyle \Umathinnerordspacing\scriptstyle= \the\Umathordordspacing\scriptstyle\relax \Umathinneropspacing\scriptstyle= \the\Umathordopspacing\scriptstyle\relax \Umathinnerbinspacing\scriptstyle= \the\Umathordbinspacing\scriptstyle\relax \Umathinnerrelspacing\scriptstyle= \the\Umathordrelspacing\scriptstyle\relax \Umathinneropenspacing\scriptstyle= \the\Umathordopenspacing\scriptstyle\relax \Umathinnerclosespacing\scriptstyle= \the\Umathordclosespacing\scriptstyle\relax \Umathinnerpunctspacing\scriptstyle= \the\Umathordpunctspacing\scriptstyle\relax % \end{macrocode} % Changes for |\scriptscriptstyle|. % \begin{macrocode} % \scriptscriptstyle \Umathinnerordspacing\scriptscriptstyle= \the\Umathordordspacing\scriptscriptstyle\relax \Umathinneropspacing\scriptscriptstyle= \the\Umathordopspacing\scriptscriptstyle\relax \Umathinnerbinspacing\scriptscriptstyle= \the\Umathordbinspacing\scriptscriptstyle\relax \Umathinnerrelspacing\scriptscriptstyle= \the\Umathordrelspacing\scriptscriptstyle\relax \Umathinneropenspacing\scriptscriptstyle= \the\Umathordopenspacing\scriptscriptstyle\relax \Umathinnerclosespacing\scriptscriptstyle= \the\Umathordclosespacing\scriptscriptstyle\relax \Umathinnerpunctspacing\scriptscriptstyle= \the\Umathordpunctspacing\scriptscriptstyle\relax % \end{macrocode} % Changes for |\crampeddisplaystyle|. % \begin{macrocode} % \crampeddisplaystyle \Umathinnerordspacing\crampeddisplaystyle= \the\Umathordordspacing\crampeddisplaystyle\relax \Umathinneropspacing\crampeddisplaystyle= \the\Umathordopspacing\crampeddisplaystyle\relax \Umathinnerbinspacing\crampeddisplaystyle= \the\Umathordbinspacing\crampeddisplaystyle\relax \Umathinnerrelspacing\crampeddisplaystyle= \the\Umathordrelspacing\crampeddisplaystyle\relax \Umathinneropenspacing\crampeddisplaystyle= \the\Umathordopenspacing\crampeddisplaystyle\relax \Umathinnerclosespacing\crampeddisplaystyle= \the\Umathordclosespacing\crampeddisplaystyle\relax \Umathinnerpunctspacing\crampeddisplaystyle= \the\Umathordpunctspacing\crampeddisplaystyle\relax % \end{macrocode} % Changes for |\crampedtextstyle|. % \begin{macrocode} % \crampedtextstyle \Umathinnerordspacing\crampedtextstyle= \the\Umathordordspacing\crampedtextstyle\relax \Umathinneropspacing\crampedtextstyle= \the\Umathordopspacing\crampedtextstyle\relax \Umathinnerbinspacing\crampedtextstyle= \the\Umathordbinspacing\crampedtextstyle\relax \Umathinnerrelspacing\crampedtextstyle= \the\Umathordrelspacing\crampedtextstyle\relax \Umathinneropenspacing\crampedtextstyle= \the\Umathordopenspacing\crampedtextstyle\relax \Umathinnerclosespacing\crampedtextstyle= \the\Umathordclosespacing\crampedtextstyle\relax \Umathinnerpunctspacing\crampedtextstyle= \the\Umathordpunctspacing\crampedtextstyle\relax % \end{macrocode} % Changes for |\crampedscriptstyle|. % \begin{macrocode} % \crampedscriptstyle \Umathinnerordspacing\crampedscriptstyle= \the\Umathordordspacing\crampedscriptstyle\relax \Umathinneropspacing\crampedscriptstyle= \the\Umathordopspacing\crampedscriptstyle\relax \Umathinnerbinspacing\crampedscriptstyle= \the\Umathordbinspacing\crampedscriptstyle\relax \Umathinnerrelspacing\crampedscriptstyle= \the\Umathordrelspacing\crampedscriptstyle\relax \Umathinneropenspacing\crampedscriptstyle= \the\Umathordopenspacing\crampedscriptstyle\relax \Umathinnerclosespacing\crampedscriptstyle= \the\Umathordclosespacing\crampedscriptstyle\relax \Umathinnerpunctspacing\crampedscriptstyle= \the\Umathordpunctspacing\crampedscriptstyle\relax % \end{macrocode} % Changes for |\crampedscriptscriptstyle|. % \begin{macrocode} % \crampedscriptscriptstyle \Umathinnerordspacing\crampedscriptscriptstyle= \the\Umathordordspacing\crampedscriptscriptstyle\relax \Umathinneropspacing\crampedscriptscriptstyle= \the\Umathordopspacing\crampedscriptscriptstyle\relax \Umathinnerbinspacing\crampedscriptscriptstyle= \the\Umathordbinspacing\crampedscriptscriptstyle\relax \Umathinnerrelspacing\crampedscriptscriptstyle= \the\Umathordrelspacing\crampedscriptscriptstyle\relax \Umathinneropenspacing\crampedscriptscriptstyle= \the\Umathordopenspacing\crampedscriptscriptstyle\relax \Umathinnerclosespacing\crampedscriptscriptstyle= \the\Umathordclosespacing\crampedscriptscriptstyle\relax \Umathinnerpunctspacing\crampedscriptscriptstyle= \the\Umathordpunctspacing\crampedscriptscriptstyle\relax % \end{macrocode} % Finally the case where both subformulas are |\mathinner|. % \begin{macrocode} % both subformulas are \mathinner \Umathinnerinnerspacing\displaystyle= \the\Umathordordspacing\displaystyle\relax \Umathinnerinnerspacing\textstyle= \the\Umathordordspacing\textstyle\relax \Umathinnerinnerspacing\scriptstyle= \the\Umathordordspacing\scriptstyle\relax \Umathinnerinnerspacing\scriptscriptstyle= \the\Umathordordspacing\scriptscriptstyle\relax \Umathinnerinnerspacing\crampeddisplaystyle= \the\Umathordordspacing\crampeddisplaystyle\relax \Umathinnerinnerspacing\crampedtextstyle= \the\Umathordordspacing\crampedtextstyle\relax \Umathinnerinnerspacing\crampedscriptstyle= \the\Umathordordspacing\crampedscriptstyle\relax \Umathinnerinnerspacing\crampedscriptscriptstyle= \the\Umathordordspacing\crampedscriptscriptstyle\relax \else \IS@info{No changes to space for \string\mathinner\space subformulas.} \fi % \end{macrocode} % % \section{Mathclose Spacing} % % In |\textstyle| and |\displaystyle|, we add half a |\thinmuskip| between |\mathclose| and |\mathord| atoms. As with the |script| and |scriptscript| options, we scale the spacing by 0.6 and 0.4 for |\scriptstyle| and |\scriptscriptstyle| respectively. Section~5 comes after Section~4 because we do not want to enlarge the spacing between |\mathclose| and |\mathinner| subformulas. % % \begin{macrocode} \ifIS@close \IS@info{Adding space after closing delimiters.} \Umathcloseordspacing\displaystyle=\scalemu{\thinmuskip}{0.5} \Umathcloseordspacing\textstyle=\scalemu{\thinmuskip}{0.5} \Umathcloseordspacing\crampedisplaystyle=\scalemu{\thinmuskip}{0.5} \Umathcloseordspacing\crampedtextstyle=\scalemu{\thinmuskip}{0.5} \ifnum\IS@script>0 \Umathcloseordspacing\scriptstyle=\scalemu{\thinmuskip}{0.3} \Umathcloseordspacing\crampedscriptstyle=\scalemu{\thinmuskip}{0.3} \fi \ifnum\IS@scriptscript>0 \Umathcloseordspacing\scriptscriptstyle=\scalemu{\thinmuskip}{0.2} \Umathcloseordspacing\crampedscriptscriptstyle=\scalemu {\thinmuskip}{0.2} \fi \else \IS@info{No changes to space after delimiters.} \fi % \end{macrocode} % % % \section{Delimiter Heights} % % Finally, filling out the delimiter heights is easy. We simply set |\delimiterfactor| to 1000. % \begin{macrocode} \ifIS@cover \IS@info{Setting delimiters to full height.} \delimiterfactor\@m \else \IS@info{No changes to delimiter heights.} \fi % \end{macrocode} % And that's a wrap! % % \vfil\eject % \section*{Version History} % \begin{multicols*}{2} % \bgroup\raggedright\parskip\z@\parindent\z@\leftskip1em\obeylines % \setbox0\hbox{\hskip 1pt.\hskip 1pt} % \def\version#1#2{\bigskip\hbox to \hsize{\textbf{#1} \cleaders\copy0\hfill\ #2}\par} % \def\item{---\kern0.2ex\relax} % % \version{1.0}{February 2021} % \item initial release % % \version{1.1}{February 2021} % \item bug fix for |\mathinner| spacing % \item added |\IS@skip| muglue register % % \version{1.2}{November 2023} % \item redesigned spacing for options |script| and |scriptscript| % \item no more |\IS@skip|---options |script| and |scriptscript| now use |\the| % \item added option |close| % \item added option |cover| % \item separated implementation and user guide % % \egroup % \end{multicols*} % % % % \iffalse % %<*user> \makeatletter \documentclass[12pt]{article} \usepackage[margin=72.27pt]{geometry} \usepackage[factor=700,stretch=14,shrink=14,step=1]{microtype} \usepackage{booktabs} \usepackage{tabularx} \usepackage{amsmath} \usepackage{doc}[=v2] \MakeShortVerb{|} \interfootnotelinepenalty=0 \newbox\fracbox \setbox\fracbox\hbox{$\displaystyle\left(\frac x2\right)$} \begin{document} \def\documentname{User Guide} \input innerscript_heading.tex \def\@oddhead{\ifnum\c@page>\@ne \ifodd\c@page \hfil\the\c@page \else \the\c@page\hfil \fi\fi} \begin{figure}[b] \centerline{\strut\bfseries Table~1: Package Behavior Shown in Each Part of Equation (2)} \begin{tabular*}\textwidth{@{\extracolsep{\fill}}lllll}\toprule Part of equation (2) & Summation & Functions & Product & Fraction\\\midrule Option shown & |script| & |inner| & |close| & |cover|\\\bottomrule \end{tabular*} \end{figure} \noindent For several years before the first release of \textsf{innerscript}, I wondered whether it was possible to adjust two features of \TeX's automatic mathematics spacing, namely adding more space in superscripts and subscripts and removing the extra space around |\left|-|\right| delimiter pairs. Lua\TeX's extra math-mode primitives make these changes possible, and \textsf{innerscript} grew out of my desire to implement them in my documents. For example, compare the next two lines: \begin{flalign} &&\sum_{i=1}^n{}&x_i^{1+a} &f(x)&=g\left(\frac1x\right) &x(t)&y(t) &\hskip0.5\wd\fracbox &\clap@math{\left(\frac{x}2\right)} \hskip0.5\wd\fracbox &&\\ &&\sum_{i\mskip\scalemu{\thickmuskip}{0.6}= \mskip\scalemu{\thickmuskip}{0.6}1}^n {}&x_i^{1\mskip\scalemu{\medmuskip}{0.6}+ \mskip\scalemu{\medmuskip}{0.6} a} &f(x)&=g{\left(\frac1x\right)} &x(t)\mskip\scalemu{\thinmuskip}{0.25}&\mskip\scalemu{\thinmuskip}{0.25}y(t) &\hskip0.5\wd\fracbox & \clap@math{\left(\frac{\vphantom{1}x}2\right)} \hskip0.5\wd\fracbox && \end{flalign} Equation~(1) uses traditional \TeX\ formatting, and equation~(2) incorporates the small tweaks characteristic of \textsf{innerscript}. If you like equation~(2) more than equation~(1), then \textsf{innerscript} is the package for you! This file explains how to load \textsf{innerscript} and enable whichever adjustments you want to use. For version history and documentation of the code, see |innerscript_code.pdf|, which is included with the package installation and is available on \textsc{ctan}. Table~1 explains which parts of equation~(2) show different aspects of \textsf{innerscript}'s behavior. At far left, the subscript under the summation symbol and the superscript of $x_i$ have small amounts of extra space around the |=| and |+| signs respectively, and at center-left, the $g$ is directly next to the parenthesis. At center-right, the closing parenthesis is offset from the following $y$, and on the right, the parentheses cover the entire fraction instead of covering only most of it. Using the package will automate some or all of these changes for you depending on which options you specify. Users can load \textsf{innerscript} with the standard \begin{code} |\usepackage[|\meta{options}|]{innerscript}| \end{code} syntax, and when doing so, you must typeset with Lua\TeX. If it detects a different engine, \textsf{innerscript} will raise an error and stop loading, which will prevent it from changing the math in your document. The package provides no user-level commands---rather, you can control its functionality through the twelve options in Table~2. Options |script|, |legacy-|\penalty0|script|, and |no-script| determine how \textsf{innerscript} treats superscripts and subscripts. Options |scriptscript|, |legacy-scriptscript|, and |no-scriptscript| are the same except that they deal with second-order superscripts and subscripts. The |inner| option tells \TeX\ to avoid placing extra space around |\mathinner| subformulas, which in practice mostly means that \TeX\ will position |\left|-|\right| delimiter pairs the same way as ordinary variables such as $f$ or $g$ in equation~(2). The |close| option adds a small amount of space after a closing grouping symbol, such as a right parenthesis, when it comes before a regular variable or number, and |cover| tells \TeX\ to make sure that resizable delimiters fully cover their contents. The |no-|~variants disable formatting adjustments, and by default, \textsf{innerscript} selects the first five options from Table~2. \begin{figure}[t!] \centerline{\strut\bfseries Table~2: Package Options for \textsf{innerscript}} \begin{tabularx}\hsize{l>{\raggedright\arraybackslash}X} \toprule Package Option & Meaning\\ \midrule |script| & Change |\scriptstyle| (and cramped style) spacing\\ |scriptscript| & Change |\scriptscriptstyle| (and cramped style) spacing\\ |inner| & Use |\mathord| spacing for |\mathinner| subformulas\\ |close| & Extra space between \vrb\mathclose\vrb\mathord\ pairs\\ |cover| & Resizable delimiters (i.e.\ |\left| and |\right|) fully cover contents\\\midrule |legacy-script| & Option |script| with legacy spacing (not recommended)\\ |legacy-scriptscript| & Option |scriptscript| with legacy spacing (not recommended)\\\midrule |no-script| & No changes to |\scriptstyle| spacing\\ |no-scriptscript| & No changes to |\scriptscriptstyle| spacing\\ |no-inner| & No changes to treatment of |\mathinner| subformulas\\ |no-close| & No changes to |\mathclose| atoms\\ |no-cover| & No changes to resizable delimiters\\ \bottomrule \end{tabularx} \end{figure} \begin{figure}[t!] \centerline{\bfseries\strut Table~3: Space Inserted by \textsf{innerscript}} \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}lll}\toprule Consecutive Atom Types & Option |script| & Option |scriptscript|\\\midrule |\mathord||\mathop| & 0.6|\thinmuskip| & 0.4|\thinmuskip| \\ |\mathord||\mathbin| & 0.6|\medmuskip| & 0.4|\medmuskip| \\ |\mathord||\mathrel| & 0.6|\thickmuskip| & 0.4|\thickmuskip| \\ |\mathord||\mathinner| & 0.6|\thinmuskip| & 0.4|\thinmuskip| \\\midrule |\mathop||\mathord| & 0.6|\thinmuskip| & 0.4|\thinmuskip| \\ |\mathop||\mathop| & 0.6|\thinmuskip| & 0.4|\thinmuskip| \\ |\mathop||\mathrel| & 0.6|\thickmuskip| & 0.4|\thickmuskip| \\ |\mathop||\mathinner| & 0.6|\thickmuskip| & 0.4|\thickmuskip| \\\midrule |\mathbin||\mathord| & 0.6|\medmuskip| & 0.4|\medmuskip| \\ |\mathbin||\mathop| & 0.6|\medmuskip| & 0.4|\medmuskip| \\ |\mathbin||\mathopen| & 0.6|\medmuskip| & 0.4|\medmuskip| \\ |\mathbin||\mathinner| & 0.6|\medmuskip| & 0.4|\medmuskip| \\\midrule |\mathrel||\mathord| & 0.6|\thickmuskip| & 0.4|\thickmuskip| \\ |\mathrel||\mathop| & 0.6|\thickmuskip| & 0.4|\thickmuskip| \\ |\mathrel||\mathopen| & 0.6|\thickmuskip| & 0.4|\thickmuskip| \\ |\mathrel||\mathinner| & 0.6|\thickmuskip| & 0.4|\thickmuskip| \\\midrule |\mathclose||\mathop| & 0.6|\thinmuskip| & 0.4|\thinmuskip| \\ |\mathclose||\mathbin| & 0.6|\medmuskip| & 0.4|\medmuskip| \\ |\mathclose||\mathrel| & 0.6|\thickmuskip| & 0.4|\thickmuskip| \\ |\mathclose||\mathinner| & 0.6|\thinmuskip| & 0.4|\thinmuskip| \\\midrule |\mathpunct||\mathord| & 0.6|\thinmuskip| & 0.4|\thinmuskip| \\ |\mathpunct||\mathop| & 0.6|\thinmuskip| & 0.4|\thinmuskip| \\ |\mathpunct||\mathrel| & 0.6|\thinmuskip| & 0.4|\thinmuskip| \\ |\mathpunct||\mathopen| & 0.6|\thinmuskip| & 0.4|\thinmuskip| \\ |\mathpunct||\mathclose| & 0.6|\thinmuskip| & 0.4|\thinmuskip| \\ |\mathpunct||\mathpunct| & 0.6|\thinmuskip| & 0.4|\thinmuskip| \\ |\mathpunct||\mathinner| & 0.6|\thinmuskip| & 0.4|\thinmuskip| \\\midrule |\mathinner||\mathord| & 0.6|\thinmuskip| & 0.4|\thinmuskip| \\ |\mathinner||\mathop| & 0.6|\thinmuskip| & 0.4|\thinmuskip| \\ |\mathinner||\mathbin| & 0.6|\medmuskip| & 0.4|\medmuskip| \\ |\mathinner||\mathrel| & 0.6|\thickmuskip| & 0.4|\thickmuskip| \\ |\mathinner||\mathopen| & 0.6|\thinmuskip| & 0.4|\thinmuskip| \\ |\mathinner||\mathpunct| & 0.6|\thinmuskip| & 0.4|\thinmuskip| \\ |\mathinner||\mathinner| & 0.6|\thinmuskip| & 0.4|\thinmuskip| \\\bottomrule \end{tabular*} \end{figure} \iffalse % ignore \begin{figure}[t!] \centerline{\bfseries\strut Table~4: Legacy Space Inserted by \textsf{innerscript}} \begin{tabularx}{\hsize}{p{2in}Xl}\toprule Consecutive Atom Types & Option |legacy-script| & Option |legacy-scriptscript|\\\midrule |\mathord||\mathop| & 0.6|\thinmuskip| & 0.4|\thinmuskip| \\ |\mathord||\mathbin| & 0.7|\thinmuskip| & 0.5|\thinmuskip| \\ |\mathord||\mathrel| & |\thinmuskip| & 0.7|\thinmuskip| \\ |\mathord||\mathinner| & 0.6|\thinmuskip| & 0.4|\thinmuskip| \\\midrule |\mathop||\mathord| & 0.6|\thinmuskip| & 0.4|\thinmuskip| \\ |\mathop||\mathop| & 0.6|\thinmuskip| & 0.4|\thinmuskip| \\ |\mathop||\mathrel| & |\thinmuskip| & 0.7|\thinmuskip| \\ |\mathop||\mathinner| & |\thinmuskip| & 0.7|\thinmuskip| \\\midrule |\mathbin||\mathord| & 0.7|\thinmuskip| & 0.5|\thinmuskip| \\ |\mathbin||\mathop| & 0.7|\thinmuskip| & 0.5|\thinmuskip| \\ |\mathbin||\mathopen| & 0.7|\thinmuskip| & 0.5|\thinmuskip| \\ |\mathbin||\mathinner| & 0.7|\thinmuskip| & 0.5|\thinmuskip| \\\midrule |\mathrel||\mathord| & |\thinmuskip| & 0.7|\thinmuskip| \\ |\mathrel||\mathop| & |\thinmuskip| & 0.7|\thinmuskip| \\ |\mathrel||\mathopen| & |\thinmuskip| & 0.7|\thinmuskip| \\ |\mathrel||\mathinner| & |\thinmuskip| & 0.7|\thinmuskip| \\\midrule |\mathclose||\mathop| & 0.6|\thinmuskip| & 0.4|\thinmuskip| \\ |\mathclose||\mathbin| & 0.7|\thinmuskip| & 0.5|\thinmuskip| \\ |\mathclose||\mathrel| & |\thinmuskip| & 0.7|\thinmuskip| \\ |\mathclose||\mathinner| & 0.6|\thinmuskip| & 0.4|\thinmuskip| \\\midrule |\mathpunct||\mathord| & 0.6|\thinmuskip| & 0.4|\thinmuskip| \\ |\mathpunct||\mathop| & 0.6|\thinmuskip| & 0.4|\thinmuskip| \\ |\mathpunct||\mathrel| & 0.6|\thinmuskip| & 0.4|\thinmuskip| \\ |\mathpunct||\mathopen| & 0.6|\thinmuskip| & 0.4|\thinmuskip| \\ |\mathpunct||\mathclose| & 0.6|\thinmuskip| & 0.4|\thinmuskip| \\ |\mathpunct||\mathpunct| & 0.6|\thinmuskip| & 0.4|\thinmuskip| \\ |\mathpunct||\mathinner| & 0.6|\thinmuskip| & 0.4|\thinmuskip| \\\midrule |\mathinner||\mathord| & 0.6|\thinmuskip| & 0.4|\thinmuskip| \\ |\mathinner||\mathop| & 0.6|\thinmuskip| & 0.4|\thinmuskip| \\ |\mathinner||\mathbin| & 0.7|\thinmuskip| & 0.5|\thinmuskip| \\ |\mathinner||\mathrel| & |\thinmuskip| & 0.7|\thinmuskip| \\ |\mathinner||\mathopen| & 0.6|\thinmuskip| & 0.4|\thinmuskip| \\ |\mathinner||\mathpunct| & 0.6|\thinmuskip| & 0.4|\thinmuskip| \\ |\mathinner||\mathinner| & 0.6|\thinmuskip| & 0.4|\thinmuskip| \\\bottomrule \end{tabularx} \end{figure} \fi % end ignore \begin{figure}[t] \centerline{\bfseries\strut Table 4: Factors of \vrb\thinmuskip\ in Legacy Spacing} \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}lcc}\toprule Skip Used in Current Version & For Option |script| & For Option |scriptscript|\\\midrule |\thinmuskip| & 0.6 & 0.4 \\ |\medmuskip| & 0.7 & 0.5 \\ |\thickmuskip| & 1 & 0.7\\\bottomrule \end{tabular*} \end{figure} The |inner|, |close|, and |cover| options are straightforward, but the options |script| and |scriptscript| warrant more explanation. With its usual math formatting, \TeX\ adds small amounts of space between different math-mode characters depending on what types of symbols they represent, and \TeX's fine-tuned math spacing is part of what makes it a great program for typesetting equations.\footnote{\TeX\ classifies math symbols into eight categories: \vrb\mathord\ (ordinary), \vrb\mathop\ (big operator), \vrb\mathbin\ (binary operation), \vrb\mathrel\ (relation), \vrb\mathopen\ (opening delimiter), \vrb\mathclose\ (closing delimiter), \vrb\mathpunct\ (punctuation), and \vrb\mathinner\ (``inner'' subformula). As part of its definition, every math-mode character is assigned a math class.\vadjust{\bigskip} See Donald Knuth, \textit{The \TeX book} (Addison Wesley, 1986), 170; David Salomon, \textit{The Advanced \TeX book} (Springer, 1995), 256--258.} However, some spacing additions from inline and display math don't appear inside superscripts and subscripts. The |script| and |scriptscript| options address this situation by changing the space in superscripts and subscripts to scaled-down versions of the standard spacing rules.\footnote{Technically, \textsf{innerscript} scales down the standard spacing twice. The exact length of a \vrb\muskip\ register varries proportionally with the surrounding font size, so, for example, a \vrb\thinmuskip\ inside a superscript or subscript will be about two-thirds the size of a \vrb\thinmuskip\ in regular inline math. If \textsf{innerscript} always inserted the same amounts of muglue between math characters as with inline math, the spacing in superscripts and subscripts would be proportional to inline and display spacing. However, doing so produces math where the symbols appear too far apart, so \textsf{innerscript} scales the muglue by a factor of 0.6 in superscripts and subscripts and by a factor of 0.4 in second-order superscripts and subscripts.} Table~3 lists the spacing that \textsf{innerscript} adds under both options. Finally, in version 1.2, I redesigned the extra space amounts in the |script| and |scriptscript| options, and for backwards compatibility, the |legacy-| options implement the old spacing. In legacy spacing, all space additions are multiples of |\thinmuskip|, and Table~4 lists the factors of |\thinmuskip| from version 1.1. The factors correspond to whether a given row of Table~3 uses |\thinmuskip|, |\medmuskip|, or |\thickmuskip|. For example, the current version of \textsf{innerscript} adds a multiple of |\thinmuskip| between an ordinary math symbol and a large operator, so under legacy spacing, \textsf{innerscript} inserts 0.6|\thinmuskip| in superscripts and subscripts and 0.4|\thinmuskip| in second-order superscripts and subscripts. I changed the package this way so that superscripts and subscripts will parallel inline and display spacing. Now if you set the value of |\thinmuskip|, |\medmuskip|, or |\thickmuskip| before loading \textsf{innerscript}, the adjustment will have the same effect in all parts of your equation. \end{document} % % %<*heading> % \csname count@\endcsname\catcode`\@ \makeatletter % identifying macros \def\packageversion{1.2} \def\packagedate{November 2023} % general macros \MacroIndent=1.3em \def\scalemu#1#2{\muexpr#2#1 \@plus\muexpr#2\gluetomu\gluestretch\mutoglue#1\relax \@minus\muexpr#2\gluetomu\glueshrink\mutoglue#1\relax\relax} \baselineskip=\the\baselineskip plus 0.3pt minus 0.3pt\relax % section, header, and footer commands \let\@@section\section \def\section{\@ifstar\star@sect\no@star@sect} \def\star@sect#1{\sectionhook{#1}\@@section*{#1}} \def\no@star@sect#1{\sectionhook{#1}\@@section{#1}} \def\sectionhook#1{% \ifdim\dimexpr\pagegoal-\pagetotal-3pt\relax<6\bigskipamount \vfill\eject \fi \def\sectionname{#1}} \def\@oddhead{% \ifnum\count0>1\relax \ifodd\c@page \rlap{\textit{\sectionname}}\hfil \hbox to 0pt{\hss\documentname\hss}\hfil \llap{\the\count0}% \else \rlap{\the\count0}\hfil \hbox to 0pt{\hss\documentname\hss}\hfil \llap{\textit{\sectionname}}% \fi \fi} \def\@oddfoot{\hfil\ifnum\count0=1\relax1\fi\hfil} % penalties \pretolerance=-1 \hyphenpenalty=20 \exhyphenpenalty=15 \brokenpenalty=0 \clubpenalty=0 \widowpenalty=0 \finalhyphendemerits=500 \doublehyphendemerits=2000 % code environment \let\code\@undefined \let\endcode\@undefined \newenvironment{code} {\strut\vadjust\bgroup\medskip\parindent\z@\leftskip=4em\relax \noindent\strut\ignorespaces} {\strut\par\medskip\egroup\hfill\break\strut\ignorespacesafterend} \def\argtext#1{\ensuremath{\langle$\textit{#1}$\rangle}} \def\vrb#1{\expandafter\texttt\expandafter{\string#1}} \def\clap@math#1{\hb@xt@\z@{\hss$\displaystyle#1$\hss}} % title line {\large \parindent=0pt \leftskip=0pt plus 1 fil \rightskip=0pt plus 1fil \parfillskip=0pt {\strut\Large Package \textsf{innerscript} v.\ 1.2 \documentname}\par \strut Conrad Kosowsky\par \strut \packagedate\par \strut\texttt{kosowsky.latex@gmail.com}\par} \bigskip % off-the-shelf insert \hrule height \p@ \@@line{\vrule width \p@\kern-\p@ \vbox{\medskip \leftskip=8em\relax\rightskip=8em\relax \noindent\strut For easy, off-the-shelf use, type the following in your document preamble and compile using Lua\LaTeX: \vskip\medskipamount \noindent\hfil\strut|\usepackage{innerscript}|\hfil \vskip\medskipamount}\relax \kern-\p@\vrule width \p@} \hrule height \p@ \bigskip % abstract {\small \leftskip=0.5in \rightskip=0.5in \centerline{\bfseries Overview\strut} \noindent The \textsf{innerscript} package optionally modifies four aspects of \TeX's automatic math formatting to improve typesetting: (1) it adds extra space around relation and operation symbols in superscripts and subscripts; (2) it removes extra space around |\left|-|\right| delimiter pairs; (3) it adds extra space after right delimiters in certain situations; and (4) it forces |\left| and |\right| delimiters to completely cover their contents. Using Lua\LaTeX\ is required.\par} \bigskip\bigskip\nointerlineskip \centerline{\vrule height 0.5pt width 2.5in}\bigskip\bigskip \nointerlineskip \catcode`\@\count@ % % % \fi % % % \check@checksum % % \endinput