summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/leftindex/leftindex.sty
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2020-08-25 20:52:29 +0000
committerKarl Berry <karl@freefriends.org>2020-08-25 20:52:29 +0000
commit983919fa4b54274bd32f16c3ac5ab30150c6c387 (patch)
treeeaa5c7733b85c71ec03781962ac481ae346efffc /Master/texmf-dist/tex/latex/leftindex/leftindex.sty
parent2ae5e54a73f0210b0b2179ead8acb8d2794e849d (diff)
leftindex (25aug20)
git-svn-id: svn://tug.org/texlive/trunk@56182 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/leftindex/leftindex.sty')
-rw-r--r--Master/texmf-dist/tex/latex/leftindex/leftindex.sty157
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