Kerning for subscripts of sigma? The 2019 Stack Overflow Developer Survey Results Are In Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)Subscript kerning for specific letters in XeLaTeXMargin kerning in Xe(La)TeX for TeXlive 2010: how to enable?Fix math mode kerning of “C”Kerning of subscriptsPair kerning strategies in (pdf)LaTeXKerning and long subscripts or superscriptsKerning super- and subscripts “semantically”Subscript kerning for specific letters in XeLaTeXMicrotype kerning won't work with quotationmarksKerning of HyphensIs there a LuaLaTeX solution to adjust superscript kerning on large delimiters?

Windows 10: How to Lock (not sleep) laptop on lid close?

Did God make two great lights or did He make the great light two?

Did the UK government pay "millions and millions of dollars" to try to snag Julian Assange?

Typeface like Times New Roman but with "tied" percent sign

Is it ethical to upload a automatically generated paper to a non peer-reviewed site as part of a larger research?

Make it rain characters

Semisimplicity of the category of coherent sheaves?

How are presidential pardons supposed to be used?

Match Roman Numerals

What information about me do stores get via my credit card?

Can smartphones with the same camera sensor have different image quality?

Why can't wing-mounted spoilers be used to steepen approaches?

Cooking pasta in a water boiler

How to remove this toilet supply line that seems to have no nut?

How many people can fit inside Mordenkainen's Magnificent Mansion?

How should I replace vector<uint8_t>::const_iterator in an API?

Sort a list of pairs representing an acyclic, partial automorphism

Simulation of a banking system with an Account class in C++

Simulating Exploding Dice

How is simplicity better than precision and clarity in prose?

how can a perfect fourth interval be considered either consonant or dissonant?

How can I protect witches in combat who wear limited clothing?

Am I ethically obligated to go into work on an off day if the reason is sudden?

Is it ok to offer lower paid work as a trial period before negotiating for a full-time job?



Kerning for subscripts of sigma?



The 2019 Stack Overflow Developer Survey Results Are In
Announcing the arrival of Valued Associate #679: Cesar Manara
Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)Subscript kerning for specific letters in XeLaTeXMargin kerning in Xe(La)TeX for TeXlive 2010: how to enable?Fix math mode kerning of “C”Kerning of subscriptsPair kerning strategies in (pdf)LaTeXKerning and long subscripts or superscriptsKerning super- and subscripts “semantically”Subscript kerning for specific letters in XeLaTeXMicrotype kerning won't work with quotationmarksKerning of HyphensIs there a LuaLaTeX solution to adjust superscript kerning on large delimiters?










5















Is there any way to reduce the distance inside σ₀ and between sigma and its subscript in general in the following setup automatically? That is, each time you type in sigma_0 (or sigma_1 etc.), you wish the actual output to be more consistent with sigma_!0 (or sigma_!1 etc.).



Input:



documentclassbook
usepackagefontspec
usepackage[american,british,french,norsk,german,ngerman]babel
usepackagemathtools
mathtoolssetmathic=true %%% See http://tex.stackexchange.com/a/3496/
usepackageamssymb
usepackageunicode-math
setmainfont[Ligatures=TeX]TeX Gyre Termes
setsansfontTeX Gyre Heros[Scale=0.88]
setmonofontTeX Gyre Cursor
setmathfont[Ligatures=TeX]TeX Gyre Termes Math
setmathfont[Ligatures=TeX,range=setminus]Asana Math
setmathfont[Ligatures=TeX,Extension=.otf,range="2A3E,BoldFont=XITSMath-Bold]XITSMath-Regular%%% The fat semicolon
usepackage[babel=true,verbose=errors]microtype
begindocument
[sigma_0 sigma_0]
[sigma_!0 sigma_!0]
enddocument


Output so far:



enter image description here



As you see, in the upper line the left zero seems to be more close to the right σ (which doesn't make any sense) than to the left one (which would make sense). The kerning in the lower line makes more sense.



I guess, this would be easier than Subscript kerning for specific letters in XeLaTeX, since we already have sigma as a macro and can redefine it.



For which letters in the subscript position the kerning should be improved (and how) is intentionally left unspecified; improving the kerning in sigma_<any single arabic digit or any single Latin small letter> or sigma_<any nonempty sequence of arabic digits and Latin small letters> would suffice as a start. Of course, for σ_mathrmT we might need less kerning (e.g., only -1mu rather than -3mu), and that's why capital Latin letters would need more work (and are not asked for in the first step). As of now, I intend to use the following subscripts: all the digits, i, j, k, k (yes, this one upright), n, i + 1, i - 1.










share|improve this question
























  • Do you want to change the behaviour for sigma_<any single number>, or for sigma_<any single character>, or sigma_<anything>, or somthing else?

    – Phelype Oleinik
    2 days ago











  • @PhelypeOleinik Question updated.

    – user49915
    2 days ago















5















Is there any way to reduce the distance inside σ₀ and between sigma and its subscript in general in the following setup automatically? That is, each time you type in sigma_0 (or sigma_1 etc.), you wish the actual output to be more consistent with sigma_!0 (or sigma_!1 etc.).



Input:



documentclassbook
usepackagefontspec
usepackage[american,british,french,norsk,german,ngerman]babel
usepackagemathtools
mathtoolssetmathic=true %%% See http://tex.stackexchange.com/a/3496/
usepackageamssymb
usepackageunicode-math
setmainfont[Ligatures=TeX]TeX Gyre Termes
setsansfontTeX Gyre Heros[Scale=0.88]
setmonofontTeX Gyre Cursor
setmathfont[Ligatures=TeX]TeX Gyre Termes Math
setmathfont[Ligatures=TeX,range=setminus]Asana Math
setmathfont[Ligatures=TeX,Extension=.otf,range="2A3E,BoldFont=XITSMath-Bold]XITSMath-Regular%%% The fat semicolon
usepackage[babel=true,verbose=errors]microtype
begindocument
[sigma_0 sigma_0]
[sigma_!0 sigma_!0]
enddocument


Output so far:



enter image description here



As you see, in the upper line the left zero seems to be more close to the right σ (which doesn't make any sense) than to the left one (which would make sense). The kerning in the lower line makes more sense.



I guess, this would be easier than Subscript kerning for specific letters in XeLaTeX, since we already have sigma as a macro and can redefine it.



For which letters in the subscript position the kerning should be improved (and how) is intentionally left unspecified; improving the kerning in sigma_<any single arabic digit or any single Latin small letter> or sigma_<any nonempty sequence of arabic digits and Latin small letters> would suffice as a start. Of course, for σ_mathrmT we might need less kerning (e.g., only -1mu rather than -3mu), and that's why capital Latin letters would need more work (and are not asked for in the first step). As of now, I intend to use the following subscripts: all the digits, i, j, k, k (yes, this one upright), n, i + 1, i - 1.










share|improve this question
























  • Do you want to change the behaviour for sigma_<any single number>, or for sigma_<any single character>, or sigma_<anything>, or somthing else?

    – Phelype Oleinik
    2 days ago











  • @PhelypeOleinik Question updated.

    – user49915
    2 days ago













5












5








5


2






Is there any way to reduce the distance inside σ₀ and between sigma and its subscript in general in the following setup automatically? That is, each time you type in sigma_0 (or sigma_1 etc.), you wish the actual output to be more consistent with sigma_!0 (or sigma_!1 etc.).



Input:



documentclassbook
usepackagefontspec
usepackage[american,british,french,norsk,german,ngerman]babel
usepackagemathtools
mathtoolssetmathic=true %%% See http://tex.stackexchange.com/a/3496/
usepackageamssymb
usepackageunicode-math
setmainfont[Ligatures=TeX]TeX Gyre Termes
setsansfontTeX Gyre Heros[Scale=0.88]
setmonofontTeX Gyre Cursor
setmathfont[Ligatures=TeX]TeX Gyre Termes Math
setmathfont[Ligatures=TeX,range=setminus]Asana Math
setmathfont[Ligatures=TeX,Extension=.otf,range="2A3E,BoldFont=XITSMath-Bold]XITSMath-Regular%%% The fat semicolon
usepackage[babel=true,verbose=errors]microtype
begindocument
[sigma_0 sigma_0]
[sigma_!0 sigma_!0]
enddocument


Output so far:



enter image description here



As you see, in the upper line the left zero seems to be more close to the right σ (which doesn't make any sense) than to the left one (which would make sense). The kerning in the lower line makes more sense.



I guess, this would be easier than Subscript kerning for specific letters in XeLaTeX, since we already have sigma as a macro and can redefine it.



For which letters in the subscript position the kerning should be improved (and how) is intentionally left unspecified; improving the kerning in sigma_<any single arabic digit or any single Latin small letter> or sigma_<any nonempty sequence of arabic digits and Latin small letters> would suffice as a start. Of course, for σ_mathrmT we might need less kerning (e.g., only -1mu rather than -3mu), and that's why capital Latin letters would need more work (and are not asked for in the first step). As of now, I intend to use the following subscripts: all the digits, i, j, k, k (yes, this one upright), n, i + 1, i - 1.










share|improve this question
















Is there any way to reduce the distance inside σ₀ and between sigma and its subscript in general in the following setup automatically? That is, each time you type in sigma_0 (or sigma_1 etc.), you wish the actual output to be more consistent with sigma_!0 (or sigma_!1 etc.).



Input:



documentclassbook
usepackagefontspec
usepackage[american,british,french,norsk,german,ngerman]babel
usepackagemathtools
mathtoolssetmathic=true %%% See http://tex.stackexchange.com/a/3496/
usepackageamssymb
usepackageunicode-math
setmainfont[Ligatures=TeX]TeX Gyre Termes
setsansfontTeX Gyre Heros[Scale=0.88]
setmonofontTeX Gyre Cursor
setmathfont[Ligatures=TeX]TeX Gyre Termes Math
setmathfont[Ligatures=TeX,range=setminus]Asana Math
setmathfont[Ligatures=TeX,Extension=.otf,range="2A3E,BoldFont=XITSMath-Bold]XITSMath-Regular%%% The fat semicolon
usepackage[babel=true,verbose=errors]microtype
begindocument
[sigma_0 sigma_0]
[sigma_!0 sigma_!0]
enddocument


Output so far:



enter image description here



As you see, in the upper line the left zero seems to be more close to the right σ (which doesn't make any sense) than to the left one (which would make sense). The kerning in the lower line makes more sense.



I guess, this would be easier than Subscript kerning for specific letters in XeLaTeX, since we already have sigma as a macro and can redefine it.



For which letters in the subscript position the kerning should be improved (and how) is intentionally left unspecified; improving the kerning in sigma_<any single arabic digit or any single Latin small letter> or sigma_<any nonempty sequence of arabic digits and Latin small letters> would suffice as a start. Of course, for σ_mathrmT we might need less kerning (e.g., only -1mu rather than -3mu), and that's why capital Latin letters would need more work (and are not asked for in the first step). As of now, I intend to use the following subscripts: all the digits, i, j, k, k (yes, this one upright), n, i + 1, i - 1.







xetex microtype kerning






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited 2 days ago







user49915

















asked 2 days ago









user49915user49915

819122




819122












  • Do you want to change the behaviour for sigma_<any single number>, or for sigma_<any single character>, or sigma_<anything>, or somthing else?

    – Phelype Oleinik
    2 days ago











  • @PhelypeOleinik Question updated.

    – user49915
    2 days ago

















  • Do you want to change the behaviour for sigma_<any single number>, or for sigma_<any single character>, or sigma_<anything>, or somthing else?

    – Phelype Oleinik
    2 days ago











  • @PhelypeOleinik Question updated.

    – user49915
    2 days ago
















Do you want to change the behaviour for sigma_<any single number>, or for sigma_<any single character>, or sigma_<anything>, or somthing else?

– Phelype Oleinik
2 days ago





Do you want to change the behaviour for sigma_<any single number>, or for sigma_<any single character>, or sigma_<anything>, or somthing else?

– Phelype Oleinik
2 days ago













@PhelypeOleinik Question updated.

– user49915
2 days ago





@PhelypeOleinik Question updated.

– user49915
2 days ago










2 Answers
2






active

oldest

votes


















6














I defined a command AddtoKernList<token list><mu kern> which will add the first token of the <token list> to a lookup table (the assignment is local). Later on, the sigma command is redefined to to check for a subscript; if the subscript is found, then it looks the first token in the subscript in the lookup list. If that token is found, mkern<mu kern> is applied right before the subscript.



I search for the subscript using peek_catcode_remove:NTF. I could've significantly reduced the code if I had used xparse's e-type arguments, as Henri Menke suggested (thanks :-) and egreg did. I'll keep my answer with the first approach, however.



With the defined commands, the input:



$sigma_abc sigma^a_0 sigma_0^b sigma^c_T$

AddtoKernList0-thinmuskip

$sigma_abc sigma_0^a sigma^b_0 sigma^c_T$

AddtoKernListT-1mu

$sigma_abc sigma_0^a sigma^b_0 sigma^c_T$


produces (with LuaTeX and lua-visual-debug to show the negative kern):




enter image description here




Notice that the order of subscript and superscript does not matter (anymore, thanks to far too many lines of code) and notice also that the character is kerned only after the AddtoKernList instruction. To add temporarily a token to this list, do the assignment in a group.



Code:



documentclass[varwidth]standalone
usepackagelua-visual-debug
usepackageluatexbase
usepackageunravel
usepackagefontspec
usepackage[american,british,french,norsk,german,ngerman]babel
usepackagemathtools
mathtoolssetmathic=true %%% See http://tex.stackexchange.com/a/3496/
usepackageamssymb
usepackageunicode-math
setmainfont[Ligatures=TeX]TeX Gyre Termes
setsansfontTeX Gyre Heros[Scale=0.88]
setmonofontTeX Gyre Cursor
setmathfont[Ligatures=TeX]TeX Gyre Termes Math
setmathfont[Ligatures=TeX,range=setminus]Asana Math
setmathfont[Ligatures=TeX,Extension=.otf,range="2A3E,BoldFont=XITSMath-Bold]XITSMath-Regular%%% The fat semicolon
usepackage[babel=true,verbose=errors]microtype

ExplSyntaxOn
tl_new:N l__userxlixk_kern_case_tl
AtBeginDocument
cs_new_eq:NN __userxlixk_actual_sigma: sigma
RenewDocumentCommandsigma
__userxlixk_sigma:

NewDocumentCommandAddtoKernListmm

tl_put_right:Nn l__userxlixk_kern_case_tl
#1 tex_mskip:D #2 scan_stop: #1

cs_new_protected:Npn __userxlixk_sigma:

peek_catcode_remove:NTF c_math_subscript_token
__userxlixk_sigma_check_group:n
__userxlixk_sigma_check_superscript:

cs_new_protected:Npn __userxlixk_sigma_check_group:n #1

exp_args:NNf
__userxlixk_actual_sigma: c_math_subscript_token
__userxlixk_check_kern_list_use:n #1

cs_new_protected:Npn __userxlixk_sigma_check_superscript:

peek_catcode_remove:NTF c_math_superscript_token
__userxlixk_sigma_check_sub_after_sup:n
__userxlixk_actual_sigma:

cs_new_protected:Npn __userxlixk_sigma_check_sub_after_sup:n #1

peek_catcode_remove:NTF c_math_subscript_token
__userxlixk_sigma_sub_after_sup:nn #1
__userxlixk_actual_sigma: c_math_superscript_token #1

cs_new_protected:Npn __userxlixk_sigma_sub_after_sup:nn #1 #2

exp_args:NNf
__userxlixk_actual_sigma: c_math_subscript_token
__userxlixk_check_kern_list_use:n #2
c_math_superscript_token #1


cs_new:Npn __userxlixk_check_kern_list_use:n #1
__userxlixk_check_kern_list_use:Nw #1 q_stop
cs_new:Npn __userxlixk_check_kern_list_use:Nw #1 #2 q_stop

exp_args:NNo
tl_case:NnF #1
l__userxlixk_kern_case_tl
#1
#2

ExplSyntaxOff

begindocument

$sigma_abc sigma^a_0 sigma_0^b sigma^c_T$

AddtoKernList0-thinmuskip

$sigma_abc sigma_0^a sigma^b_0 sigma^c_T$

AddtoKernListT-1mu

$sigma_abc sigma_0^a sigma^b_0 sigma^c_T$

enddocument



If you prefer the e-type argument you can add my lookup list to egreg's answer:



AtBeginDocument%
letstandardsigmasigma
letsigmakernedsigma

ExplSyntaxOn
tl_new:N l__userxlixk_kern_case_tl
NewDocumentCommandAddtoKernListmm

tl_put_right:Nn l__userxlixk_kern_case_tl
#1 tex_mskip:D #2 scan_stop: #1

cs_new:Npn __userxlixk_check_kern_list_use:n #1
__userxlixk_check_kern_list_use:Nw #1 q_stop
cs_new:Npn __userxlixk_check_kern_list_use:Nw #1 #2 q_stop

exp_args:NNo
tl_case:NnF #1
l__userxlixk_kern_case_tl
#1
#2

cs_new_eq:NN CheckKernListUse __userxlixk_check_kern_list_use:n
ExplSyntaxOff

NewDocumentCommandkernedsigmae_^%
csname exp_args:NNfendcsname
standardsigma_
IfValueT#1CheckKernListUse#1%
IfValueT#2^#2%






share|improve this answer

























  • To make it work for both sigma_a^b and sigma^b_a you could use an e-type argument (“embellishments”).

    – Henri Menke
    2 days ago











  • First, thanks! Second, could you adapt your code slightly such that it checks that the first subscript letter (or all subscript letters, it doesn't matter as of now) is small alphanumeric rather than checking that the whole subscript is single-token?

    – user49915
    2 days ago












  • @HenriMenke Thanks for the idea :-) I completely forgot about those. I didn't know, however, that the order in which the arguments were used didn't matter.

    – Phelype Oleinik
    2 days ago






  • 1





    @user49915 Not easily, sorry. The lookup table thingy relies on expl3's tl_case:NnF whose first argument is an N type (if you don't know expl3, an N type is a single token argument). For a token list I'd need a tl_case:nnF (with a lowercase n), which doesn't exist in expl3. I know how to build this tl_case:nnF, but unfortunately I don't have the time right now, and it will be a very slow code. I suggest you to do defmathrmkmathrmk and then use this mathrmk for the time being. Once I have the time I'll make it for you.

    – Phelype Oleinik
    yesterday







  • 1





    @user49915 Oops, my bad, I forgot it there. Yes, certainly remove it!

    – Phelype Oleinik
    yesterday


















5














I'd use the e argument type of xparse.



documentclassbook
usepackagefontspec
usepackage[american,british,french,norsk,german,ngerman]babel
usepackagemathtools
usepackageamssymb
usepackageunicode-math
usepackage[babel=true,verbose=errors]microtype

setmainfontTeX Gyre Termes
setsansfontTeX Gyre Heros[Scale=0.88]
setmonofontTeX Gyre Cursor
setmathfontTeX Gyre Termes Math
setmathfontAsana Math[
range=setminus,
]
setmathfontXITSMath-Regular[
Extension=.otf,
range="2A3E,
BoldFont=XITSMath-Bold,
]

%mathtoolssetmathic=true %%% See http://tex.stackexchange.com/a/3496/

AtBeginDocument%
letstandardsigmasigma
letsigmakernedsigma


NewDocumentCommandkernedsigmae_^%
standardsigma
IfValueT#1_!#1%
IfValueT#2^#2%


begindocument

[sigma_0 sigma_0^2 sigma^2_0]
[standardsigma_!0 standardsigma_!0^2 standardsigma^2_!0]

enddocument


enter image description here






share|improve this answer























  • First, thanks! Second, could you adapt your code slightly such that it checks that the first subscript letter (or all subscript letters, it doesn't matter as of now) is small alphanumeric? We don't really know whether it would produce a pleasant kerning for all other possible subscripts, would we?

    – user49915
    2 days ago












  • @user49915 I'm not sure what could be the difference. One can quite easily exclude some symbols from being kerned.

    – egreg
    2 days ago











  • I'm afraid that some sub/superscripts might need a little bit different kerning, e.g. sigma_top. There is no overlap, of course, but I'm feeling slightly uneasy about allowing for all possible subscripts to be moved left by 3mu.

    – user49915
    2 days ago












  • @user49915 I don't know what subscripts you want to use next to sigma. You probably should kern less than -3mu generally.

    – egreg
    2 days ago











  • Initially: all the digits, i, j, k, k, n, i + 1, i - 1.

    – user49915
    2 days ago












Your Answer








StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "85"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);

else
createEditor();

);

function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);



);













draft saved

draft discarded


















StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f484404%2fkerning-for-subscripts-of-sigma%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown

























2 Answers
2






active

oldest

votes








2 Answers
2






active

oldest

votes









active

oldest

votes






active

oldest

votes









6














I defined a command AddtoKernList<token list><mu kern> which will add the first token of the <token list> to a lookup table (the assignment is local). Later on, the sigma command is redefined to to check for a subscript; if the subscript is found, then it looks the first token in the subscript in the lookup list. If that token is found, mkern<mu kern> is applied right before the subscript.



I search for the subscript using peek_catcode_remove:NTF. I could've significantly reduced the code if I had used xparse's e-type arguments, as Henri Menke suggested (thanks :-) and egreg did. I'll keep my answer with the first approach, however.



With the defined commands, the input:



$sigma_abc sigma^a_0 sigma_0^b sigma^c_T$

AddtoKernList0-thinmuskip

$sigma_abc sigma_0^a sigma^b_0 sigma^c_T$

AddtoKernListT-1mu

$sigma_abc sigma_0^a sigma^b_0 sigma^c_T$


produces (with LuaTeX and lua-visual-debug to show the negative kern):




enter image description here




Notice that the order of subscript and superscript does not matter (anymore, thanks to far too many lines of code) and notice also that the character is kerned only after the AddtoKernList instruction. To add temporarily a token to this list, do the assignment in a group.



Code:



documentclass[varwidth]standalone
usepackagelua-visual-debug
usepackageluatexbase
usepackageunravel
usepackagefontspec
usepackage[american,british,french,norsk,german,ngerman]babel
usepackagemathtools
mathtoolssetmathic=true %%% See http://tex.stackexchange.com/a/3496/
usepackageamssymb
usepackageunicode-math
setmainfont[Ligatures=TeX]TeX Gyre Termes
setsansfontTeX Gyre Heros[Scale=0.88]
setmonofontTeX Gyre Cursor
setmathfont[Ligatures=TeX]TeX Gyre Termes Math
setmathfont[Ligatures=TeX,range=setminus]Asana Math
setmathfont[Ligatures=TeX,Extension=.otf,range="2A3E,BoldFont=XITSMath-Bold]XITSMath-Regular%%% The fat semicolon
usepackage[babel=true,verbose=errors]microtype

ExplSyntaxOn
tl_new:N l__userxlixk_kern_case_tl
AtBeginDocument
cs_new_eq:NN __userxlixk_actual_sigma: sigma
RenewDocumentCommandsigma
__userxlixk_sigma:

NewDocumentCommandAddtoKernListmm

tl_put_right:Nn l__userxlixk_kern_case_tl
#1 tex_mskip:D #2 scan_stop: #1

cs_new_protected:Npn __userxlixk_sigma:

peek_catcode_remove:NTF c_math_subscript_token
__userxlixk_sigma_check_group:n
__userxlixk_sigma_check_superscript:

cs_new_protected:Npn __userxlixk_sigma_check_group:n #1

exp_args:NNf
__userxlixk_actual_sigma: c_math_subscript_token
__userxlixk_check_kern_list_use:n #1

cs_new_protected:Npn __userxlixk_sigma_check_superscript:

peek_catcode_remove:NTF c_math_superscript_token
__userxlixk_sigma_check_sub_after_sup:n
__userxlixk_actual_sigma:

cs_new_protected:Npn __userxlixk_sigma_check_sub_after_sup:n #1

peek_catcode_remove:NTF c_math_subscript_token
__userxlixk_sigma_sub_after_sup:nn #1
__userxlixk_actual_sigma: c_math_superscript_token #1

cs_new_protected:Npn __userxlixk_sigma_sub_after_sup:nn #1 #2

exp_args:NNf
__userxlixk_actual_sigma: c_math_subscript_token
__userxlixk_check_kern_list_use:n #2
c_math_superscript_token #1


cs_new:Npn __userxlixk_check_kern_list_use:n #1
__userxlixk_check_kern_list_use:Nw #1 q_stop
cs_new:Npn __userxlixk_check_kern_list_use:Nw #1 #2 q_stop

exp_args:NNo
tl_case:NnF #1
l__userxlixk_kern_case_tl
#1
#2

ExplSyntaxOff

begindocument

$sigma_abc sigma^a_0 sigma_0^b sigma^c_T$

AddtoKernList0-thinmuskip

$sigma_abc sigma_0^a sigma^b_0 sigma^c_T$

AddtoKernListT-1mu

$sigma_abc sigma_0^a sigma^b_0 sigma^c_T$

enddocument



If you prefer the e-type argument you can add my lookup list to egreg's answer:



AtBeginDocument%
letstandardsigmasigma
letsigmakernedsigma

ExplSyntaxOn
tl_new:N l__userxlixk_kern_case_tl
NewDocumentCommandAddtoKernListmm

tl_put_right:Nn l__userxlixk_kern_case_tl
#1 tex_mskip:D #2 scan_stop: #1

cs_new:Npn __userxlixk_check_kern_list_use:n #1
__userxlixk_check_kern_list_use:Nw #1 q_stop
cs_new:Npn __userxlixk_check_kern_list_use:Nw #1 #2 q_stop

exp_args:NNo
tl_case:NnF #1
l__userxlixk_kern_case_tl
#1
#2

cs_new_eq:NN CheckKernListUse __userxlixk_check_kern_list_use:n
ExplSyntaxOff

NewDocumentCommandkernedsigmae_^%
csname exp_args:NNfendcsname
standardsigma_
IfValueT#1CheckKernListUse#1%
IfValueT#2^#2%






share|improve this answer

























  • To make it work for both sigma_a^b and sigma^b_a you could use an e-type argument (“embellishments”).

    – Henri Menke
    2 days ago











  • First, thanks! Second, could you adapt your code slightly such that it checks that the first subscript letter (or all subscript letters, it doesn't matter as of now) is small alphanumeric rather than checking that the whole subscript is single-token?

    – user49915
    2 days ago












  • @HenriMenke Thanks for the idea :-) I completely forgot about those. I didn't know, however, that the order in which the arguments were used didn't matter.

    – Phelype Oleinik
    2 days ago






  • 1





    @user49915 Not easily, sorry. The lookup table thingy relies on expl3's tl_case:NnF whose first argument is an N type (if you don't know expl3, an N type is a single token argument). For a token list I'd need a tl_case:nnF (with a lowercase n), which doesn't exist in expl3. I know how to build this tl_case:nnF, but unfortunately I don't have the time right now, and it will be a very slow code. I suggest you to do defmathrmkmathrmk and then use this mathrmk for the time being. Once I have the time I'll make it for you.

    – Phelype Oleinik
    yesterday







  • 1





    @user49915 Oops, my bad, I forgot it there. Yes, certainly remove it!

    – Phelype Oleinik
    yesterday















6














I defined a command AddtoKernList<token list><mu kern> which will add the first token of the <token list> to a lookup table (the assignment is local). Later on, the sigma command is redefined to to check for a subscript; if the subscript is found, then it looks the first token in the subscript in the lookup list. If that token is found, mkern<mu kern> is applied right before the subscript.



I search for the subscript using peek_catcode_remove:NTF. I could've significantly reduced the code if I had used xparse's e-type arguments, as Henri Menke suggested (thanks :-) and egreg did. I'll keep my answer with the first approach, however.



With the defined commands, the input:



$sigma_abc sigma^a_0 sigma_0^b sigma^c_T$

AddtoKernList0-thinmuskip

$sigma_abc sigma_0^a sigma^b_0 sigma^c_T$

AddtoKernListT-1mu

$sigma_abc sigma_0^a sigma^b_0 sigma^c_T$


produces (with LuaTeX and lua-visual-debug to show the negative kern):




enter image description here




Notice that the order of subscript and superscript does not matter (anymore, thanks to far too many lines of code) and notice also that the character is kerned only after the AddtoKernList instruction. To add temporarily a token to this list, do the assignment in a group.



Code:



documentclass[varwidth]standalone
usepackagelua-visual-debug
usepackageluatexbase
usepackageunravel
usepackagefontspec
usepackage[american,british,french,norsk,german,ngerman]babel
usepackagemathtools
mathtoolssetmathic=true %%% See http://tex.stackexchange.com/a/3496/
usepackageamssymb
usepackageunicode-math
setmainfont[Ligatures=TeX]TeX Gyre Termes
setsansfontTeX Gyre Heros[Scale=0.88]
setmonofontTeX Gyre Cursor
setmathfont[Ligatures=TeX]TeX Gyre Termes Math
setmathfont[Ligatures=TeX,range=setminus]Asana Math
setmathfont[Ligatures=TeX,Extension=.otf,range="2A3E,BoldFont=XITSMath-Bold]XITSMath-Regular%%% The fat semicolon
usepackage[babel=true,verbose=errors]microtype

ExplSyntaxOn
tl_new:N l__userxlixk_kern_case_tl
AtBeginDocument
cs_new_eq:NN __userxlixk_actual_sigma: sigma
RenewDocumentCommandsigma
__userxlixk_sigma:

NewDocumentCommandAddtoKernListmm

tl_put_right:Nn l__userxlixk_kern_case_tl
#1 tex_mskip:D #2 scan_stop: #1

cs_new_protected:Npn __userxlixk_sigma:

peek_catcode_remove:NTF c_math_subscript_token
__userxlixk_sigma_check_group:n
__userxlixk_sigma_check_superscript:

cs_new_protected:Npn __userxlixk_sigma_check_group:n #1

exp_args:NNf
__userxlixk_actual_sigma: c_math_subscript_token
__userxlixk_check_kern_list_use:n #1

cs_new_protected:Npn __userxlixk_sigma_check_superscript:

peek_catcode_remove:NTF c_math_superscript_token
__userxlixk_sigma_check_sub_after_sup:n
__userxlixk_actual_sigma:

cs_new_protected:Npn __userxlixk_sigma_check_sub_after_sup:n #1

peek_catcode_remove:NTF c_math_subscript_token
__userxlixk_sigma_sub_after_sup:nn #1
__userxlixk_actual_sigma: c_math_superscript_token #1

cs_new_protected:Npn __userxlixk_sigma_sub_after_sup:nn #1 #2

exp_args:NNf
__userxlixk_actual_sigma: c_math_subscript_token
__userxlixk_check_kern_list_use:n #2
c_math_superscript_token #1


cs_new:Npn __userxlixk_check_kern_list_use:n #1
__userxlixk_check_kern_list_use:Nw #1 q_stop
cs_new:Npn __userxlixk_check_kern_list_use:Nw #1 #2 q_stop

exp_args:NNo
tl_case:NnF #1
l__userxlixk_kern_case_tl
#1
#2

ExplSyntaxOff

begindocument

$sigma_abc sigma^a_0 sigma_0^b sigma^c_T$

AddtoKernList0-thinmuskip

$sigma_abc sigma_0^a sigma^b_0 sigma^c_T$

AddtoKernListT-1mu

$sigma_abc sigma_0^a sigma^b_0 sigma^c_T$

enddocument



If you prefer the e-type argument you can add my lookup list to egreg's answer:



AtBeginDocument%
letstandardsigmasigma
letsigmakernedsigma

ExplSyntaxOn
tl_new:N l__userxlixk_kern_case_tl
NewDocumentCommandAddtoKernListmm

tl_put_right:Nn l__userxlixk_kern_case_tl
#1 tex_mskip:D #2 scan_stop: #1

cs_new:Npn __userxlixk_check_kern_list_use:n #1
__userxlixk_check_kern_list_use:Nw #1 q_stop
cs_new:Npn __userxlixk_check_kern_list_use:Nw #1 #2 q_stop

exp_args:NNo
tl_case:NnF #1
l__userxlixk_kern_case_tl
#1
#2

cs_new_eq:NN CheckKernListUse __userxlixk_check_kern_list_use:n
ExplSyntaxOff

NewDocumentCommandkernedsigmae_^%
csname exp_args:NNfendcsname
standardsigma_
IfValueT#1CheckKernListUse#1%
IfValueT#2^#2%






share|improve this answer

























  • To make it work for both sigma_a^b and sigma^b_a you could use an e-type argument (“embellishments”).

    – Henri Menke
    2 days ago











  • First, thanks! Second, could you adapt your code slightly such that it checks that the first subscript letter (or all subscript letters, it doesn't matter as of now) is small alphanumeric rather than checking that the whole subscript is single-token?

    – user49915
    2 days ago












  • @HenriMenke Thanks for the idea :-) I completely forgot about those. I didn't know, however, that the order in which the arguments were used didn't matter.

    – Phelype Oleinik
    2 days ago






  • 1





    @user49915 Not easily, sorry. The lookup table thingy relies on expl3's tl_case:NnF whose first argument is an N type (if you don't know expl3, an N type is a single token argument). For a token list I'd need a tl_case:nnF (with a lowercase n), which doesn't exist in expl3. I know how to build this tl_case:nnF, but unfortunately I don't have the time right now, and it will be a very slow code. I suggest you to do defmathrmkmathrmk and then use this mathrmk for the time being. Once I have the time I'll make it for you.

    – Phelype Oleinik
    yesterday







  • 1





    @user49915 Oops, my bad, I forgot it there. Yes, certainly remove it!

    – Phelype Oleinik
    yesterday













6












6








6







I defined a command AddtoKernList<token list><mu kern> which will add the first token of the <token list> to a lookup table (the assignment is local). Later on, the sigma command is redefined to to check for a subscript; if the subscript is found, then it looks the first token in the subscript in the lookup list. If that token is found, mkern<mu kern> is applied right before the subscript.



I search for the subscript using peek_catcode_remove:NTF. I could've significantly reduced the code if I had used xparse's e-type arguments, as Henri Menke suggested (thanks :-) and egreg did. I'll keep my answer with the first approach, however.



With the defined commands, the input:



$sigma_abc sigma^a_0 sigma_0^b sigma^c_T$

AddtoKernList0-thinmuskip

$sigma_abc sigma_0^a sigma^b_0 sigma^c_T$

AddtoKernListT-1mu

$sigma_abc sigma_0^a sigma^b_0 sigma^c_T$


produces (with LuaTeX and lua-visual-debug to show the negative kern):




enter image description here




Notice that the order of subscript and superscript does not matter (anymore, thanks to far too many lines of code) and notice also that the character is kerned only after the AddtoKernList instruction. To add temporarily a token to this list, do the assignment in a group.



Code:



documentclass[varwidth]standalone
usepackagelua-visual-debug
usepackageluatexbase
usepackageunravel
usepackagefontspec
usepackage[american,british,french,norsk,german,ngerman]babel
usepackagemathtools
mathtoolssetmathic=true %%% See http://tex.stackexchange.com/a/3496/
usepackageamssymb
usepackageunicode-math
setmainfont[Ligatures=TeX]TeX Gyre Termes
setsansfontTeX Gyre Heros[Scale=0.88]
setmonofontTeX Gyre Cursor
setmathfont[Ligatures=TeX]TeX Gyre Termes Math
setmathfont[Ligatures=TeX,range=setminus]Asana Math
setmathfont[Ligatures=TeX,Extension=.otf,range="2A3E,BoldFont=XITSMath-Bold]XITSMath-Regular%%% The fat semicolon
usepackage[babel=true,verbose=errors]microtype

ExplSyntaxOn
tl_new:N l__userxlixk_kern_case_tl
AtBeginDocument
cs_new_eq:NN __userxlixk_actual_sigma: sigma
RenewDocumentCommandsigma
__userxlixk_sigma:

NewDocumentCommandAddtoKernListmm

tl_put_right:Nn l__userxlixk_kern_case_tl
#1 tex_mskip:D #2 scan_stop: #1

cs_new_protected:Npn __userxlixk_sigma:

peek_catcode_remove:NTF c_math_subscript_token
__userxlixk_sigma_check_group:n
__userxlixk_sigma_check_superscript:

cs_new_protected:Npn __userxlixk_sigma_check_group:n #1

exp_args:NNf
__userxlixk_actual_sigma: c_math_subscript_token
__userxlixk_check_kern_list_use:n #1

cs_new_protected:Npn __userxlixk_sigma_check_superscript:

peek_catcode_remove:NTF c_math_superscript_token
__userxlixk_sigma_check_sub_after_sup:n
__userxlixk_actual_sigma:

cs_new_protected:Npn __userxlixk_sigma_check_sub_after_sup:n #1

peek_catcode_remove:NTF c_math_subscript_token
__userxlixk_sigma_sub_after_sup:nn #1
__userxlixk_actual_sigma: c_math_superscript_token #1

cs_new_protected:Npn __userxlixk_sigma_sub_after_sup:nn #1 #2

exp_args:NNf
__userxlixk_actual_sigma: c_math_subscript_token
__userxlixk_check_kern_list_use:n #2
c_math_superscript_token #1


cs_new:Npn __userxlixk_check_kern_list_use:n #1
__userxlixk_check_kern_list_use:Nw #1 q_stop
cs_new:Npn __userxlixk_check_kern_list_use:Nw #1 #2 q_stop

exp_args:NNo
tl_case:NnF #1
l__userxlixk_kern_case_tl
#1
#2

ExplSyntaxOff

begindocument

$sigma_abc sigma^a_0 sigma_0^b sigma^c_T$

AddtoKernList0-thinmuskip

$sigma_abc sigma_0^a sigma^b_0 sigma^c_T$

AddtoKernListT-1mu

$sigma_abc sigma_0^a sigma^b_0 sigma^c_T$

enddocument



If you prefer the e-type argument you can add my lookup list to egreg's answer:



AtBeginDocument%
letstandardsigmasigma
letsigmakernedsigma

ExplSyntaxOn
tl_new:N l__userxlixk_kern_case_tl
NewDocumentCommandAddtoKernListmm

tl_put_right:Nn l__userxlixk_kern_case_tl
#1 tex_mskip:D #2 scan_stop: #1

cs_new:Npn __userxlixk_check_kern_list_use:n #1
__userxlixk_check_kern_list_use:Nw #1 q_stop
cs_new:Npn __userxlixk_check_kern_list_use:Nw #1 #2 q_stop

exp_args:NNo
tl_case:NnF #1
l__userxlixk_kern_case_tl
#1
#2

cs_new_eq:NN CheckKernListUse __userxlixk_check_kern_list_use:n
ExplSyntaxOff

NewDocumentCommandkernedsigmae_^%
csname exp_args:NNfendcsname
standardsigma_
IfValueT#1CheckKernListUse#1%
IfValueT#2^#2%






share|improve this answer















I defined a command AddtoKernList<token list><mu kern> which will add the first token of the <token list> to a lookup table (the assignment is local). Later on, the sigma command is redefined to to check for a subscript; if the subscript is found, then it looks the first token in the subscript in the lookup list. If that token is found, mkern<mu kern> is applied right before the subscript.



I search for the subscript using peek_catcode_remove:NTF. I could've significantly reduced the code if I had used xparse's e-type arguments, as Henri Menke suggested (thanks :-) and egreg did. I'll keep my answer with the first approach, however.



With the defined commands, the input:



$sigma_abc sigma^a_0 sigma_0^b sigma^c_T$

AddtoKernList0-thinmuskip

$sigma_abc sigma_0^a sigma^b_0 sigma^c_T$

AddtoKernListT-1mu

$sigma_abc sigma_0^a sigma^b_0 sigma^c_T$


produces (with LuaTeX and lua-visual-debug to show the negative kern):




enter image description here




Notice that the order of subscript and superscript does not matter (anymore, thanks to far too many lines of code) and notice also that the character is kerned only after the AddtoKernList instruction. To add temporarily a token to this list, do the assignment in a group.



Code:



documentclass[varwidth]standalone
usepackagelua-visual-debug
usepackageluatexbase
usepackageunravel
usepackagefontspec
usepackage[american,british,french,norsk,german,ngerman]babel
usepackagemathtools
mathtoolssetmathic=true %%% See http://tex.stackexchange.com/a/3496/
usepackageamssymb
usepackageunicode-math
setmainfont[Ligatures=TeX]TeX Gyre Termes
setsansfontTeX Gyre Heros[Scale=0.88]
setmonofontTeX Gyre Cursor
setmathfont[Ligatures=TeX]TeX Gyre Termes Math
setmathfont[Ligatures=TeX,range=setminus]Asana Math
setmathfont[Ligatures=TeX,Extension=.otf,range="2A3E,BoldFont=XITSMath-Bold]XITSMath-Regular%%% The fat semicolon
usepackage[babel=true,verbose=errors]microtype

ExplSyntaxOn
tl_new:N l__userxlixk_kern_case_tl
AtBeginDocument
cs_new_eq:NN __userxlixk_actual_sigma: sigma
RenewDocumentCommandsigma
__userxlixk_sigma:

NewDocumentCommandAddtoKernListmm

tl_put_right:Nn l__userxlixk_kern_case_tl
#1 tex_mskip:D #2 scan_stop: #1

cs_new_protected:Npn __userxlixk_sigma:

peek_catcode_remove:NTF c_math_subscript_token
__userxlixk_sigma_check_group:n
__userxlixk_sigma_check_superscript:

cs_new_protected:Npn __userxlixk_sigma_check_group:n #1

exp_args:NNf
__userxlixk_actual_sigma: c_math_subscript_token
__userxlixk_check_kern_list_use:n #1

cs_new_protected:Npn __userxlixk_sigma_check_superscript:

peek_catcode_remove:NTF c_math_superscript_token
__userxlixk_sigma_check_sub_after_sup:n
__userxlixk_actual_sigma:

cs_new_protected:Npn __userxlixk_sigma_check_sub_after_sup:n #1

peek_catcode_remove:NTF c_math_subscript_token
__userxlixk_sigma_sub_after_sup:nn #1
__userxlixk_actual_sigma: c_math_superscript_token #1

cs_new_protected:Npn __userxlixk_sigma_sub_after_sup:nn #1 #2

exp_args:NNf
__userxlixk_actual_sigma: c_math_subscript_token
__userxlixk_check_kern_list_use:n #2
c_math_superscript_token #1


cs_new:Npn __userxlixk_check_kern_list_use:n #1
__userxlixk_check_kern_list_use:Nw #1 q_stop
cs_new:Npn __userxlixk_check_kern_list_use:Nw #1 #2 q_stop

exp_args:NNo
tl_case:NnF #1
l__userxlixk_kern_case_tl
#1
#2

ExplSyntaxOff

begindocument

$sigma_abc sigma^a_0 sigma_0^b sigma^c_T$

AddtoKernList0-thinmuskip

$sigma_abc sigma_0^a sigma^b_0 sigma^c_T$

AddtoKernListT-1mu

$sigma_abc sigma_0^a sigma^b_0 sigma^c_T$

enddocument



If you prefer the e-type argument you can add my lookup list to egreg's answer:



AtBeginDocument%
letstandardsigmasigma
letsigmakernedsigma

ExplSyntaxOn
tl_new:N l__userxlixk_kern_case_tl
NewDocumentCommandAddtoKernListmm

tl_put_right:Nn l__userxlixk_kern_case_tl
#1 tex_mskip:D #2 scan_stop: #1

cs_new:Npn __userxlixk_check_kern_list_use:n #1
__userxlixk_check_kern_list_use:Nw #1 q_stop
cs_new:Npn __userxlixk_check_kern_list_use:Nw #1 #2 q_stop

exp_args:NNo
tl_case:NnF #1
l__userxlixk_kern_case_tl
#1
#2

cs_new_eq:NN CheckKernListUse __userxlixk_check_kern_list_use:n
ExplSyntaxOff

NewDocumentCommandkernedsigmae_^%
csname exp_args:NNfendcsname
standardsigma_
IfValueT#1CheckKernListUse#1%
IfValueT#2^#2%







share|improve this answer














share|improve this answer



share|improve this answer








edited yesterday

























answered 2 days ago









Phelype OleinikPhelype Oleinik

25.2k54690




25.2k54690












  • To make it work for both sigma_a^b and sigma^b_a you could use an e-type argument (“embellishments”).

    – Henri Menke
    2 days ago











  • First, thanks! Second, could you adapt your code slightly such that it checks that the first subscript letter (or all subscript letters, it doesn't matter as of now) is small alphanumeric rather than checking that the whole subscript is single-token?

    – user49915
    2 days ago












  • @HenriMenke Thanks for the idea :-) I completely forgot about those. I didn't know, however, that the order in which the arguments were used didn't matter.

    – Phelype Oleinik
    2 days ago






  • 1





    @user49915 Not easily, sorry. The lookup table thingy relies on expl3's tl_case:NnF whose first argument is an N type (if you don't know expl3, an N type is a single token argument). For a token list I'd need a tl_case:nnF (with a lowercase n), which doesn't exist in expl3. I know how to build this tl_case:nnF, but unfortunately I don't have the time right now, and it will be a very slow code. I suggest you to do defmathrmkmathrmk and then use this mathrmk for the time being. Once I have the time I'll make it for you.

    – Phelype Oleinik
    yesterday







  • 1





    @user49915 Oops, my bad, I forgot it there. Yes, certainly remove it!

    – Phelype Oleinik
    yesterday

















  • To make it work for both sigma_a^b and sigma^b_a you could use an e-type argument (“embellishments”).

    – Henri Menke
    2 days ago











  • First, thanks! Second, could you adapt your code slightly such that it checks that the first subscript letter (or all subscript letters, it doesn't matter as of now) is small alphanumeric rather than checking that the whole subscript is single-token?

    – user49915
    2 days ago












  • @HenriMenke Thanks for the idea :-) I completely forgot about those. I didn't know, however, that the order in which the arguments were used didn't matter.

    – Phelype Oleinik
    2 days ago






  • 1





    @user49915 Not easily, sorry. The lookup table thingy relies on expl3's tl_case:NnF whose first argument is an N type (if you don't know expl3, an N type is a single token argument). For a token list I'd need a tl_case:nnF (with a lowercase n), which doesn't exist in expl3. I know how to build this tl_case:nnF, but unfortunately I don't have the time right now, and it will be a very slow code. I suggest you to do defmathrmkmathrmk and then use this mathrmk for the time being. Once I have the time I'll make it for you.

    – Phelype Oleinik
    yesterday







  • 1





    @user49915 Oops, my bad, I forgot it there. Yes, certainly remove it!

    – Phelype Oleinik
    yesterday
















To make it work for both sigma_a^b and sigma^b_a you could use an e-type argument (“embellishments”).

– Henri Menke
2 days ago





To make it work for both sigma_a^b and sigma^b_a you could use an e-type argument (“embellishments”).

– Henri Menke
2 days ago













First, thanks! Second, could you adapt your code slightly such that it checks that the first subscript letter (or all subscript letters, it doesn't matter as of now) is small alphanumeric rather than checking that the whole subscript is single-token?

– user49915
2 days ago






First, thanks! Second, could you adapt your code slightly such that it checks that the first subscript letter (or all subscript letters, it doesn't matter as of now) is small alphanumeric rather than checking that the whole subscript is single-token?

– user49915
2 days ago














@HenriMenke Thanks for the idea :-) I completely forgot about those. I didn't know, however, that the order in which the arguments were used didn't matter.

– Phelype Oleinik
2 days ago





@HenriMenke Thanks for the idea :-) I completely forgot about those. I didn't know, however, that the order in which the arguments were used didn't matter.

– Phelype Oleinik
2 days ago




1




1





@user49915 Not easily, sorry. The lookup table thingy relies on expl3's tl_case:NnF whose first argument is an N type (if you don't know expl3, an N type is a single token argument). For a token list I'd need a tl_case:nnF (with a lowercase n), which doesn't exist in expl3. I know how to build this tl_case:nnF, but unfortunately I don't have the time right now, and it will be a very slow code. I suggest you to do defmathrmkmathrmk and then use this mathrmk for the time being. Once I have the time I'll make it for you.

– Phelype Oleinik
yesterday






@user49915 Not easily, sorry. The lookup table thingy relies on expl3's tl_case:NnF whose first argument is an N type (if you don't know expl3, an N type is a single token argument). For a token list I'd need a tl_case:nnF (with a lowercase n), which doesn't exist in expl3. I know how to build this tl_case:nnF, but unfortunately I don't have the time right now, and it will be a very slow code. I suggest you to do defmathrmkmathrmk and then use this mathrmk for the time being. Once I have the time I'll make it for you.

– Phelype Oleinik
yesterday





1




1





@user49915 Oops, my bad, I forgot it there. Yes, certainly remove it!

– Phelype Oleinik
yesterday





@user49915 Oops, my bad, I forgot it there. Yes, certainly remove it!

– Phelype Oleinik
yesterday











5














I'd use the e argument type of xparse.



documentclassbook
usepackagefontspec
usepackage[american,british,french,norsk,german,ngerman]babel
usepackagemathtools
usepackageamssymb
usepackageunicode-math
usepackage[babel=true,verbose=errors]microtype

setmainfontTeX Gyre Termes
setsansfontTeX Gyre Heros[Scale=0.88]
setmonofontTeX Gyre Cursor
setmathfontTeX Gyre Termes Math
setmathfontAsana Math[
range=setminus,
]
setmathfontXITSMath-Regular[
Extension=.otf,
range="2A3E,
BoldFont=XITSMath-Bold,
]

%mathtoolssetmathic=true %%% See http://tex.stackexchange.com/a/3496/

AtBeginDocument%
letstandardsigmasigma
letsigmakernedsigma


NewDocumentCommandkernedsigmae_^%
standardsigma
IfValueT#1_!#1%
IfValueT#2^#2%


begindocument

[sigma_0 sigma_0^2 sigma^2_0]
[standardsigma_!0 standardsigma_!0^2 standardsigma^2_!0]

enddocument


enter image description here






share|improve this answer























  • First, thanks! Second, could you adapt your code slightly such that it checks that the first subscript letter (or all subscript letters, it doesn't matter as of now) is small alphanumeric? We don't really know whether it would produce a pleasant kerning for all other possible subscripts, would we?

    – user49915
    2 days ago












  • @user49915 I'm not sure what could be the difference. One can quite easily exclude some symbols from being kerned.

    – egreg
    2 days ago











  • I'm afraid that some sub/superscripts might need a little bit different kerning, e.g. sigma_top. There is no overlap, of course, but I'm feeling slightly uneasy about allowing for all possible subscripts to be moved left by 3mu.

    – user49915
    2 days ago












  • @user49915 I don't know what subscripts you want to use next to sigma. You probably should kern less than -3mu generally.

    – egreg
    2 days ago











  • Initially: all the digits, i, j, k, k, n, i + 1, i - 1.

    – user49915
    2 days ago
















5














I'd use the e argument type of xparse.



documentclassbook
usepackagefontspec
usepackage[american,british,french,norsk,german,ngerman]babel
usepackagemathtools
usepackageamssymb
usepackageunicode-math
usepackage[babel=true,verbose=errors]microtype

setmainfontTeX Gyre Termes
setsansfontTeX Gyre Heros[Scale=0.88]
setmonofontTeX Gyre Cursor
setmathfontTeX Gyre Termes Math
setmathfontAsana Math[
range=setminus,
]
setmathfontXITSMath-Regular[
Extension=.otf,
range="2A3E,
BoldFont=XITSMath-Bold,
]

%mathtoolssetmathic=true %%% See http://tex.stackexchange.com/a/3496/

AtBeginDocument%
letstandardsigmasigma
letsigmakernedsigma


NewDocumentCommandkernedsigmae_^%
standardsigma
IfValueT#1_!#1%
IfValueT#2^#2%


begindocument

[sigma_0 sigma_0^2 sigma^2_0]
[standardsigma_!0 standardsigma_!0^2 standardsigma^2_!0]

enddocument


enter image description here






share|improve this answer























  • First, thanks! Second, could you adapt your code slightly such that it checks that the first subscript letter (or all subscript letters, it doesn't matter as of now) is small alphanumeric? We don't really know whether it would produce a pleasant kerning for all other possible subscripts, would we?

    – user49915
    2 days ago












  • @user49915 I'm not sure what could be the difference. One can quite easily exclude some symbols from being kerned.

    – egreg
    2 days ago











  • I'm afraid that some sub/superscripts might need a little bit different kerning, e.g. sigma_top. There is no overlap, of course, but I'm feeling slightly uneasy about allowing for all possible subscripts to be moved left by 3mu.

    – user49915
    2 days ago












  • @user49915 I don't know what subscripts you want to use next to sigma. You probably should kern less than -3mu generally.

    – egreg
    2 days ago











  • Initially: all the digits, i, j, k, k, n, i + 1, i - 1.

    – user49915
    2 days ago














5












5








5







I'd use the e argument type of xparse.



documentclassbook
usepackagefontspec
usepackage[american,british,french,norsk,german,ngerman]babel
usepackagemathtools
usepackageamssymb
usepackageunicode-math
usepackage[babel=true,verbose=errors]microtype

setmainfontTeX Gyre Termes
setsansfontTeX Gyre Heros[Scale=0.88]
setmonofontTeX Gyre Cursor
setmathfontTeX Gyre Termes Math
setmathfontAsana Math[
range=setminus,
]
setmathfontXITSMath-Regular[
Extension=.otf,
range="2A3E,
BoldFont=XITSMath-Bold,
]

%mathtoolssetmathic=true %%% See http://tex.stackexchange.com/a/3496/

AtBeginDocument%
letstandardsigmasigma
letsigmakernedsigma


NewDocumentCommandkernedsigmae_^%
standardsigma
IfValueT#1_!#1%
IfValueT#2^#2%


begindocument

[sigma_0 sigma_0^2 sigma^2_0]
[standardsigma_!0 standardsigma_!0^2 standardsigma^2_!0]

enddocument


enter image description here






share|improve this answer













I'd use the e argument type of xparse.



documentclassbook
usepackagefontspec
usepackage[american,british,french,norsk,german,ngerman]babel
usepackagemathtools
usepackageamssymb
usepackageunicode-math
usepackage[babel=true,verbose=errors]microtype

setmainfontTeX Gyre Termes
setsansfontTeX Gyre Heros[Scale=0.88]
setmonofontTeX Gyre Cursor
setmathfontTeX Gyre Termes Math
setmathfontAsana Math[
range=setminus,
]
setmathfontXITSMath-Regular[
Extension=.otf,
range="2A3E,
BoldFont=XITSMath-Bold,
]

%mathtoolssetmathic=true %%% See http://tex.stackexchange.com/a/3496/

AtBeginDocument%
letstandardsigmasigma
letsigmakernedsigma


NewDocumentCommandkernedsigmae_^%
standardsigma
IfValueT#1_!#1%
IfValueT#2^#2%


begindocument

[sigma_0 sigma_0^2 sigma^2_0]
[standardsigma_!0 standardsigma_!0^2 standardsigma^2_!0]

enddocument


enter image description here







share|improve this answer












share|improve this answer



share|improve this answer










answered 2 days ago









egregegreg

734k8919323256




734k8919323256












  • First, thanks! Second, could you adapt your code slightly such that it checks that the first subscript letter (or all subscript letters, it doesn't matter as of now) is small alphanumeric? We don't really know whether it would produce a pleasant kerning for all other possible subscripts, would we?

    – user49915
    2 days ago












  • @user49915 I'm not sure what could be the difference. One can quite easily exclude some symbols from being kerned.

    – egreg
    2 days ago











  • I'm afraid that some sub/superscripts might need a little bit different kerning, e.g. sigma_top. There is no overlap, of course, but I'm feeling slightly uneasy about allowing for all possible subscripts to be moved left by 3mu.

    – user49915
    2 days ago












  • @user49915 I don't know what subscripts you want to use next to sigma. You probably should kern less than -3mu generally.

    – egreg
    2 days ago











  • Initially: all the digits, i, j, k, k, n, i + 1, i - 1.

    – user49915
    2 days ago


















  • First, thanks! Second, could you adapt your code slightly such that it checks that the first subscript letter (or all subscript letters, it doesn't matter as of now) is small alphanumeric? We don't really know whether it would produce a pleasant kerning for all other possible subscripts, would we?

    – user49915
    2 days ago












  • @user49915 I'm not sure what could be the difference. One can quite easily exclude some symbols from being kerned.

    – egreg
    2 days ago











  • I'm afraid that some sub/superscripts might need a little bit different kerning, e.g. sigma_top. There is no overlap, of course, but I'm feeling slightly uneasy about allowing for all possible subscripts to be moved left by 3mu.

    – user49915
    2 days ago












  • @user49915 I don't know what subscripts you want to use next to sigma. You probably should kern less than -3mu generally.

    – egreg
    2 days ago











  • Initially: all the digits, i, j, k, k, n, i + 1, i - 1.

    – user49915
    2 days ago

















First, thanks! Second, could you adapt your code slightly such that it checks that the first subscript letter (or all subscript letters, it doesn't matter as of now) is small alphanumeric? We don't really know whether it would produce a pleasant kerning for all other possible subscripts, would we?

– user49915
2 days ago






First, thanks! Second, could you adapt your code slightly such that it checks that the first subscript letter (or all subscript letters, it doesn't matter as of now) is small alphanumeric? We don't really know whether it would produce a pleasant kerning for all other possible subscripts, would we?

– user49915
2 days ago














@user49915 I'm not sure what could be the difference. One can quite easily exclude some symbols from being kerned.

– egreg
2 days ago





@user49915 I'm not sure what could be the difference. One can quite easily exclude some symbols from being kerned.

– egreg
2 days ago













I'm afraid that some sub/superscripts might need a little bit different kerning, e.g. sigma_top. There is no overlap, of course, but I'm feeling slightly uneasy about allowing for all possible subscripts to be moved left by 3mu.

– user49915
2 days ago






I'm afraid that some sub/superscripts might need a little bit different kerning, e.g. sigma_top. There is no overlap, of course, but I'm feeling slightly uneasy about allowing for all possible subscripts to be moved left by 3mu.

– user49915
2 days ago














@user49915 I don't know what subscripts you want to use next to sigma. You probably should kern less than -3mu generally.

– egreg
2 days ago





@user49915 I don't know what subscripts you want to use next to sigma. You probably should kern less than -3mu generally.

– egreg
2 days ago













Initially: all the digits, i, j, k, k, n, i + 1, i - 1.

– user49915
2 days ago






Initially: all the digits, i, j, k, k, n, i + 1, i - 1.

– user49915
2 days ago


















draft saved

draft discarded
















































Thanks for contributing an answer to TeX - LaTeX Stack Exchange!


  • Please be sure to answer the question. Provide details and share your research!

But avoid


  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f484404%2fkerning-for-subscripts-of-sigma%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Category:9 (number) SubcategoriesMedia in category "9 (number)"Navigation menuUpload mediaGND ID: 4485639-8Library of Congress authority ID: sh85091979ReasonatorScholiaStatistics

Circuit construction for execution of conditional statements using least significant bitHow are two different registers being used as “control”?How exactly is the stated composite state of the two registers being produced using the $R_zz$ controlled rotations?Efficiently performing controlled rotations in HHLWould this quantum algorithm implementation work?How to prepare a superposed states of odd integers from $1$ to $sqrtN$?Why is this implementation of the order finding algorithm not working?Circuit construction for Hamiltonian simulationHow can I invert the least significant bit of a certain term of a superposed state?Implementing an oracleImplementing a controlled sum operation

Magento 2 “No Payment Methods” in Admin New OrderHow to integrate Paypal Express Checkout with the Magento APIMagento 1.5 - Sales > Order > edit order and shipping methods disappearAuto Invoice Check/Money Order Payment methodAdd more simple payment methods?Shipping methods not showingWhat should I do to change payment methods if changing the configuration has no effects?1.9 - No Payment Methods showing upMy Payment Methods not Showing for downloadable/virtual product when checkout?Magento2 API to access internal payment methodHow to call an existing payment methods in the registration form?