diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/leftindex/leftindex.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/leftindex/leftindex.sty | 157 |
1 files changed, 157 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/leftindex/leftindex.sty b/Master/texmf-dist/tex/latex/leftindex/leftindex.sty new file mode 100644 index 00000000000..fdd7a6a822b --- /dev/null +++ b/Master/texmf-dist/tex/latex/leftindex/leftindex.sty @@ -0,0 +1,157 @@ +\RequirePackage{xparse,mathtools} +\ProvidesExplPackage{leftindex}{2020/08/25}{0.1beta}{} + +%---------------------------------------------------------------- +% leftindex -- left indices with better spacing +% Version: 0.1beta +% Maintained by Sebastian Ørsted +% E-mail: sorsted@gmail.com +% Released under the LaTeX Project Public License v1.3c or later +% See http://www.latex-project.org/lppl.txt +%---------------------------------------------------------------- + +\DeclareDocumentCommand\manualleftindex { mmmm } +{ + % #1 = height phantom + % #2 = slanting phantom + % #3 = left superscript + % #4 = left subscript + \mathpalette \__leftindex_auxiliary_mathpalette_command:nn { {#1}{#2}{#3}{#4} } +} + +\ExplSyntaxOff + +\DeclareDocumentCommand\leftindex { o o E{^_}{{}{}} m } +{ + % #1 = slanting phantom + % #2 = height phantom + % #3 = left superscript + % #4 = left subscript + % #5 = symbol + \IfValueTF {#1} + { + \IfValueTF{#2} + { + \manualleftindex { #2 } { #1 } { #3 } { #4 } + } + { + \manualleftindex { #5 } { #1 } { #3 } { #4 } + } + } + { + \manualleftindex { #5 } { #5 } { #3 } { #4 } + } + #5 +} + +\ExplSyntaxOn + +\cs_new_protected:Npn\leftindex_kern_horizontal:n#1 +{ + \kern #1 \relax +} + +\cs_new_protected:Npn\leftindex_set_mathsurround_to_zero: +{ + % This is equivalent to "\m@th" + \dim_set:Nn \mathsurround { 0pt } +} + +\cs_new_protected:Npn\__leftindex_auxiliary_mathpalette_command:nn#1#2 +{ + \__leftindex_auxiliary:nnnnn { #1 } #2 +} + +\dim_new:N\l__leftindex_phantom_height_dim + +\box_new:N \l__leftindex_slanting_phantom_with_subscript_box +\dim_new:N \l__leftindex_slanting_phantom_with_subscript_dim + +\box_new:N \l__leftindex_slanting_phantom_with_subscript_without_indentation_box +\dim_new:N \l__leftindex_slanting_phantom_with_subscript_without_indentation_dim + +\dim_new:N \l__leftindex_indentation_of_slanting_phantom_subscript + +\box_new:N \l__leftindex_superscript_temp_box +\dim_new:N \l__leftindex_width_of_superscript_dim + +\box_new:N \l__leftindex_subscript_temp_box +\dim_new:N \l__leftindex_width_of_subscript_dim + +\cs_new_protected:Npn\__leftindex_auxiliary:nnnnn#1#2#3#4#5 +{ + \group_begin: + \hbox_set:Nn \l__leftindex_slanting_phantom_with_subscript_box + { $ #1 #3 \sb{xxxxxx} $ } + \dim_set:Nn \l__leftindex_slanting_phantom_with_subscript_dim + { \box_wd:N \l__leftindex_slanting_phantom_with_subscript_box } + \hbox_set:Nn \l__leftindex_slanting_phantom_with_subscript_without_indentation_box + { $ #1 \hbox:n {$ #1 #3 $} \sb{xxxxxx} $ } + \dim_set:Nn \l__leftindex_slanting_phantom_with_subscript_without_indentation_dim + { \box_wd:N \l__leftindex_slanting_phantom_with_subscript_without_indentation_box } + \dim_set:Nn \l__leftindex_indentation_of_slanting_phantom_subscript + { + \l__leftindex_slanting_phantom_with_subscript_without_indentation_dim + - + \l__leftindex_slanting_phantom_with_subscript_dim + } + \tl_if_blank:nTF { #4 } + { + \dim_zero:N \l__leftindex_width_of_superscript_dim + } + { + \hbox_set:Nn \l__leftindex_superscript_temp_box + { + $ + \leftindex_set_mathsurround_to_zero: + #1 \sp { #4 } + $ + } + \dim_set:Nn \l__leftindex_width_of_superscript_dim + { + \box_wd:N \l__leftindex_superscript_temp_box + - + \l__leftindex_indentation_of_slanting_phantom_subscript + } + } + \tl_if_blank:nTF { #5 } + { + \dim_zero:N \l__leftindex_width_of_subscript_dim + } + { + \hbox_set:Nn \l__leftindex_subscript_temp_box + { + $ + \leftindex_set_mathsurround_to_zero: + #1 \sb { #5 } + $ + } + \dim_set:Nn \l__leftindex_width_of_subscript_dim + { + \box_wd:N \l__leftindex_subscript_temp_box + } + } + \leftindex_kern_horizontal:n + { + \dim_max:nn + { \l__leftindex_width_of_superscript_dim } + { \l__leftindex_width_of_subscript_dim } + } + \mathop{} + \mathopen{ \vphantom { #2 } } + \tl_if_blank:nF { #4 } + { + \sp { + \mathmakebox[0pt][l]{ + \mathmakebox[ \l__leftindex_indentation_of_slanting_phantom_subscript ][r]{ #4 } + } + } + } + \tl_if_blank:nF { #5 } + { + \sb { + \mathmakebox[0pt][r]{ #5 } + } + } + \group_end: +}
\ No newline at end of file |