Kerning for subscripts of sigma? The 2019 Stack Overflow Developer Survey Results Are InSubscript 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?

How do I free up internal storage if I don't have any apps downloaded?

Accepted by European university, rejected by all American ones I applied to? Possible reasons?

Are spiders unable to hurt humans, especially very small spiders?

Falsification in Math vs Science

Why didn't the Event Horizon Telescope team mention Sagittarius A*?

Is it safe to harvest rainwater that fell on solar panels?

Why are there uneven bright areas in this photo of black hole?

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

Slides for 30 min~1 hr Skype tenure track application interview

Dropping list elements from nested list after evaluation

Did any laptop computers have a built-in 5 1/4 inch floppy drive?

Why isn't the circumferential light around the M87 black hole's event horizon symmetric?

If I can cast sorceries at instant speed, can I use sorcery-speed activated abilities at instant speed?

Can you cast a spell on someone in the Ethereal Plane, if you are on the Material Plane and have the True Seeing spell active?

If I score a critical hit on an 18 or higher, what are my chances of getting a critical hit if I roll 3d20?

How to type a long/em dash `—`

What do hard-Brexiteers want with respect to the Irish border?

Worn-tile Scrabble

Geography at the pixel level

What's the name of these plastic connectors

Why couldn't they take pictures of a closer black hole?

Pokemon Turn Based battle (Python)

A word that means fill it to the required quantity

What is the motivation for a law requiring 2 parties to consent for recording a conversation



Kerning for subscripts of sigma?



The 2019 Stack Overflow Developer Survey Results Are InSubscript 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?










4















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
    4 hours ago











  • @PhelypeOleinik Question updated.

    – user49915
    3 hours ago















4















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
    4 hours ago











  • @PhelypeOleinik Question updated.

    – user49915
    3 hours ago













4












4








4


1






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 1 hour ago







user49915

















asked 4 hours ago









user49915user49915

764122




764122












  • 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
    4 hours ago











  • @PhelypeOleinik Question updated.

    – user49915
    3 hours 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
    4 hours ago











  • @PhelypeOleinik Question updated.

    – user49915
    3 hours 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
4 hours 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
4 hours ago













@PhelypeOleinik Question updated.

– user49915
3 hours ago





@PhelypeOleinik Question updated.

– user49915
3 hours ago










2 Answers
2






active

oldest

votes


















4














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_^%
tracingall
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
    3 hours 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 hours 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
    1 hour ago











  • @user49915 If I understand correctly, you want to have a list of characters and the amount of kern to apply to each, is that it?

    – Phelype Oleinik
    1 hour ago











  • @PhelypeOleinik Either the list you mention or a macro which works equivalently to having this list. The list doesn't have to be big, though; I've edited the question and specified the characters that I will use, and you may feel free to take them (or take some others if you wish).

    – user49915
    1 hour ago


















3














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 hours ago












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

    – egreg
    2 hours 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 hours 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 hours ago











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

    – user49915
    2 hours 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









4














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_^%
tracingall
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
    3 hours 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 hours 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
    1 hour ago











  • @user49915 If I understand correctly, you want to have a list of characters and the amount of kern to apply to each, is that it?

    – Phelype Oleinik
    1 hour ago











  • @PhelypeOleinik Either the list you mention or a macro which works equivalently to having this list. The list doesn't have to be big, though; I've edited the question and specified the characters that I will use, and you may feel free to take them (or take some others if you wish).

    – user49915
    1 hour ago















4














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_^%
tracingall
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
    3 hours 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 hours 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
    1 hour ago











  • @user49915 If I understand correctly, you want to have a list of characters and the amount of kern to apply to each, is that it?

    – Phelype Oleinik
    1 hour ago











  • @PhelypeOleinik Either the list you mention or a macro which works equivalently to having this list. The list doesn't have to be big, though; I've edited the question and specified the characters that I will use, and you may feel free to take them (or take some others if you wish).

    – user49915
    1 hour ago













4












4








4







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_^%
tracingall
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_^%
tracingall
csname exp_args:NNfendcsname
standardsigma_
IfValueT#1CheckKernListUse#1%
IfValueT#2^#2%







share|improve this answer














share|improve this answer



share|improve this answer








edited 44 mins ago

























answered 3 hours ago









Phelype OleinikPhelype Oleinik

25.1k54690




25.1k54690












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

    – Henri Menke
    3 hours 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 hours 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
    1 hour ago











  • @user49915 If I understand correctly, you want to have a list of characters and the amount of kern to apply to each, is that it?

    – Phelype Oleinik
    1 hour ago











  • @PhelypeOleinik Either the list you mention or a macro which works equivalently to having this list. The list doesn't have to be big, though; I've edited the question and specified the characters that I will use, and you may feel free to take them (or take some others if you wish).

    – user49915
    1 hour ago

















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

    – Henri Menke
    3 hours 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 hours 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
    1 hour ago











  • @user49915 If I understand correctly, you want to have a list of characters and the amount of kern to apply to each, is that it?

    – Phelype Oleinik
    1 hour ago











  • @PhelypeOleinik Either the list you mention or a macro which works equivalently to having this list. The list doesn't have to be big, though; I've edited the question and specified the characters that I will use, and you may feel free to take them (or take some others if you wish).

    – user49915
    1 hour ago
















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

– Henri Menke
3 hours ago





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

– Henri Menke
3 hours 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 hours 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 hours 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
1 hour 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
1 hour ago













@user49915 If I understand correctly, you want to have a list of characters and the amount of kern to apply to each, is that it?

– Phelype Oleinik
1 hour ago





@user49915 If I understand correctly, you want to have a list of characters and the amount of kern to apply to each, is that it?

– Phelype Oleinik
1 hour ago













@PhelypeOleinik Either the list you mention or a macro which works equivalently to having this list. The list doesn't have to be big, though; I've edited the question and specified the characters that I will use, and you may feel free to take them (or take some others if you wish).

– user49915
1 hour ago





@PhelypeOleinik Either the list you mention or a macro which works equivalently to having this list. The list doesn't have to be big, though; I've edited the question and specified the characters that I will use, and you may feel free to take them (or take some others if you wish).

– user49915
1 hour ago











3














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 hours ago












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

    – egreg
    2 hours 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 hours 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 hours ago











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

    – user49915
    2 hours ago
















3














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 hours ago












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

    – egreg
    2 hours 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 hours 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 hours ago











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

    – user49915
    2 hours ago














3












3








3







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 hours ago









egregegreg

733k8919313254




733k8919313254












  • 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 hours ago












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

    – egreg
    2 hours 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 hours 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 hours ago











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

    – user49915
    2 hours 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 hours ago












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

    – egreg
    2 hours 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 hours 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 hours ago











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

    – user49915
    2 hours 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 hours 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 hours ago














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

– egreg
2 hours ago





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

– egreg
2 hours 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 hours 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 hours 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 hours 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 hours ago













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

– user49915
2 hours ago






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

– user49915
2 hours 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

19. јануар Садржај Догађаји Рођења Смрти Празници и дани сећања Види још Референце Мени за навигацијуу

Israel Cuprins Etimologie | Istorie | Geografie | Politică | Demografie | Educație | Economie | Cultură | Note explicative | Note bibliografice | Bibliografie | Legături externe | Meniu de navigaresite web oficialfacebooktweeterGoogle+Instagramcanal YouTubeInstagramtextmodificaremodificarewww.technion.ac.ilnew.huji.ac.ilwww.weizmann.ac.ilwww1.biu.ac.ilenglish.tau.ac.ilwww.haifa.ac.ilin.bgu.ac.ilwww.openu.ac.ilwww.ariel.ac.ilCIA FactbookHarta Israelului"Negotiating Jerusalem," Palestine–Israel JournalThe Schizoid Nature of Modern Hebrew: A Slavic Language in Search of a Semitic Past„Arabic in Israel: an official language and a cultural bridge”„Latest Population Statistics for Israel”„Israel Population”„Tables”„Report for Selected Countries and Subjects”Human Development Report 2016: Human Development for Everyone„Distribution of family income - Gini index”The World FactbookJerusalem Law„Israel”„Israel”„Zionist Leaders: David Ben-Gurion 1886–1973”„The status of Jerusalem”„Analysis: Kadima's big plans”„Israel's Hard-Learned Lessons”„The Legacy of Undefined Borders, Tel Aviv Notes No. 40, 5 iunie 2002”„Israel Journal: A Land Without Borders”„Population”„Israel closes decade with population of 7.5 million”Time Series-DataBank„Selected Statistics on Jerusalem Day 2007 (Hebrew)”Golan belongs to Syria, Druze protestGlobal Survey 2006: Middle East Progress Amid Global Gains in FreedomWHO: Life expectancy in Israel among highest in the worldInternational Monetary Fund, World Economic Outlook Database, April 2011: Nominal GDP list of countries. Data for the year 2010.„Israel's accession to the OECD”Popular Opinion„On the Move”Hosea 12:5„Walking the Bible Timeline”„Palestine: History”„Return to Zion”An invention called 'the Jewish people' – Haaretz – Israel NewsoriginalJewish and Non-Jewish Population of Palestine-Israel (1517–2004)ImmigrationJewishvirtuallibrary.orgChapter One: The Heralders of Zionism„The birth of modern Israel: A scrap of paper that changed history”„League of Nations: The Mandate for Palestine, 24 iulie 1922”The Population of Palestine Prior to 1948originalBackground Paper No. 47 (ST/DPI/SER.A/47)History: Foreign DominationTwo Hundred and Seventh Plenary Meeting„Israel (Labor Zionism)”Population, by Religion and Population GroupThe Suez CrisisAdolf EichmannJustice Ministry Reply to Amnesty International Report„The Interregnum”Israel Ministry of Foreign Affairs – The Palestinian National Covenant- July 1968Research on terrorism: trends, achievements & failuresThe Routledge Atlas of the Arab–Israeli conflict: The Complete History of the Struggle and the Efforts to Resolve It"George Habash, Palestinian Terrorism Tactician, Dies at 82."„1973: Arab states attack Israeli forces”Agranat Commission„Has Israel Annexed East Jerusalem?”original„After 4 Years, Intifada Still Smolders”From the End of the Cold War to 2001originalThe Oslo Accords, 1993Israel-PLO Recognition – Exchange of Letters between PM Rabin and Chairman Arafat – Sept 9- 1993Foundation for Middle East PeaceSources of Population Growth: Total Israeli Population and Settler Population, 1991–2003original„Israel marks Rabin assassination”The Wye River Memorandumoriginal„West Bank barrier route disputed, Israeli missile kills 2”"Permanent Ceasefire to Be Based on Creation Of Buffer Zone Free of Armed Personnel Other than UN, Lebanese Forces"„Hezbollah kills 8 soldiers, kidnaps two in offensive on northern border”„Olmert confirms peace talks with Syria”„Battleground Gaza: Israeli ground forces invade the strip”„IDF begins Gaza troop withdrawal, hours after ending 3-week offensive”„THE LAND: Geography and Climate”„Area of districts, sub-districts, natural regions and lakes”„Israel - Geography”„Makhteshim Country”Israel and the Palestinian Territories„Makhtesh Ramon”„The Living Dead Sea”„Temperatures reach record high in Pakistan”„Climate Extremes In Israel”Israel in figures„Deuteronom”„JNF: 240 million trees planted since 1901”„Vegetation of Israel and Neighboring Countries”Environmental Law in Israel„Executive branch”„Israel's election process explained”„The Electoral System in Israel”„Constitution for Israel”„All 120 incoming Knesset members”„Statul ISRAEL”„The Judiciary: The Court System”„Israel's high court unique in region”„Israel and the International Criminal Court: A Legal Battlefield”„Localities and population, by population group, district, sub-district and natural region”„Israel: Districts, Major Cities, Urban Localities & Metropolitan Areas”„Israel-Egypt Relations: Background & Overview of Peace Treaty”„Solana to Haaretz: New Rules of War Needed for Age of Terror”„Israel's Announcement Regarding Settlements”„United Nations Security Council Resolution 497”„Security Council resolution 478 (1980) on the status of Jerusalem”„Arabs will ask U.N. to seek razing of Israeli wall”„Olmert: Willing to trade land for peace”„Mapping Peace between Syria and Israel”„Egypt: Israel must accept the land-for-peace formula”„Israel: Age structure from 2005 to 2015”„Global, regional, and national disability-adjusted life years (DALYs) for 306 diseases and injuries and healthy life expectancy (HALE) for 188 countries, 1990–2013: quantifying the epidemiological transition”10.1016/S0140-6736(15)61340-X„World Health Statistics 2014”„Life expectancy for Israeli men world's 4th highest”„Family Structure and Well-Being Across Israel's Diverse Population”„Fertility among Jewish and Muslim Women in Israel, by Level of Religiosity, 1979-2009”„Israel leaders in birth rate, but poverty major challenge”„Ethnic Groups”„Israel's population: Over 8.5 million”„Israel - Ethnic groups”„Jews, by country of origin and age”„Minority Communities in Israel: Background & Overview”„Israel”„Language in Israel”„Selected Data from the 2011 Social Survey on Mastery of the Hebrew Language and Usage of Languages”„Religions”„5 facts about Israeli Druze, a unique religious and ethnic group”„Israël”Israel Country Study Guide„Haredi city in Negev – blessing or curse?”„New town Harish harbors hopes of being more than another Pleasantville”„List of localities, in alphabetical order”„Muncitorii români, doriți în Israel”„Prietenia româno-israeliană la nevoie se cunoaște”„The Higher Education System in Israel”„Middle East”„Academic Ranking of World Universities 2016”„Israel”„Israel”„Jewish Nobel Prize Winners”„All Nobel Prizes in Literature”„All Nobel Peace Prizes”„All Prizes in Economic Sciences”„All Nobel Prizes in Chemistry”„List of Fields Medallists”„Sakharov Prize”„Țara care și-a sfidat "destinul" și se bate umăr la umăr cu Silicon Valley”„Apple's R&D center in Israel grew to about 800 employees”„Tim Cook: Apple's Herzliya R&D center second-largest in world”„Lecții de economie de la Israel”„Land use”Israel Investment and Business GuideA Country Study: IsraelCentral Bureau of StatisticsFlorin Diaconu, „Kadima: Flexibilitate și pragmatism, dar nici un compromis în chestiuni vitale", în Revista Institutului Diplomatic Român, anul I, numărul I, semestrul I, 2006, pp. 71-72Florin Diaconu, „Likud: Dreapta israeliană constant opusă retrocedării teritoriilor cureite prin luptă în 1967", în Revista Institutului Diplomatic Român, anul I, numărul I, semestrul I, 2006, pp. 73-74MassadaIsraelul a crescut in 50 de ani cât alte state intr-un mileniuIsrael Government PortalIsraelIsraelIsraelmmmmmXX451232cb118646298(data)4027808-634110000 0004 0372 0767n7900328503691455-bb46-37e3-91d2-cb064a35ffcc1003570400564274ge1294033523775214929302638955X146498911146498911

Кастелфранко ди Сопра Становништво Референце Спољашње везе Мени за навигацију43°37′18″ СГШ; 11°33′32″ ИГД / 43.62156° СГШ; 11.55885° ИГД / 43.62156; 11.5588543°37′18″ СГШ; 11°33′32″ ИГД / 43.62156° СГШ; 11.55885° ИГД / 43.62156; 11.558853179688„The GeoNames geographical database”„Istituto Nazionale di Statistica”проширитиууWorldCat156923403n850174324558639-1cb14643287r(подаци)