Kerning for subscripts of sigma?












3















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:



documentclass{book}
usepackage{fontspec}
usepackage[american,british,french,norsk,german,ngerman]{babel}
usepackage{mathtools}
mathtoolsset{mathic=true} %%% See http://tex.stackexchange.com/a/3496/
usepackage{amssymb}
usepackage{unicode-math}
setmainfont[Ligatures=TeX]{TeX Gyre Termes}
setsansfont{TeX Gyre Heros}[Scale=0.88]
setmonofont{TeX 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}
begin{document}
[sigma_0 sigma_0]
[sigma_{!0} sigma_{!0}]
end{document}


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> would suffice as a start. Of course, for σ_{mathrm{T}} 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
    3 hours ago











  • @PhelypeOleinik Question updated.

    – user49915
    2 hours ago
















3















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:



documentclass{book}
usepackage{fontspec}
usepackage[american,british,french,norsk,german,ngerman]{babel}
usepackage{mathtools}
mathtoolsset{mathic=true} %%% See http://tex.stackexchange.com/a/3496/
usepackage{amssymb}
usepackage{unicode-math}
setmainfont[Ligatures=TeX]{TeX Gyre Termes}
setsansfont{TeX Gyre Heros}[Scale=0.88]
setmonofont{TeX 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}
begin{document}
[sigma_0 sigma_0]
[sigma_{!0} sigma_{!0}]
end{document}


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> would suffice as a start. Of course, for σ_{mathrm{T}} 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
    3 hours ago











  • @PhelypeOleinik Question updated.

    – user49915
    2 hours ago














3












3








3


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:



documentclass{book}
usepackage{fontspec}
usepackage[american,british,french,norsk,german,ngerman]{babel}
usepackage{mathtools}
mathtoolsset{mathic=true} %%% See http://tex.stackexchange.com/a/3496/
usepackage{amssymb}
usepackage{unicode-math}
setmainfont[Ligatures=TeX]{TeX Gyre Termes}
setsansfont{TeX Gyre Heros}[Scale=0.88]
setmonofont{TeX 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}
begin{document}
[sigma_0 sigma_0]
[sigma_{!0} sigma_{!0}]
end{document}


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> would suffice as a start. Of course, for σ_{mathrm{T}} 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:



documentclass{book}
usepackage{fontspec}
usepackage[american,british,french,norsk,german,ngerman]{babel}
usepackage{mathtools}
mathtoolsset{mathic=true} %%% See http://tex.stackexchange.com/a/3496/
usepackage{amssymb}
usepackage{unicode-math}
setmainfont[Ligatures=TeX]{TeX Gyre Termes}
setsansfont{TeX Gyre Heros}[Scale=0.88]
setmonofont{TeX 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}
begin{document}
[sigma_0 sigma_0]
[sigma_{!0} sigma_{!0}]
end{document}


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> would suffice as a start. Of course, for σ_{mathrm{T}} 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 50 mins ago







user49915

















asked 3 hours ago









user49915user49915

759122




759122













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











  • @PhelypeOleinik Question updated.

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











  • @PhelypeOleinik Question updated.

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













@PhelypeOleinik Question updated.

– user49915
2 hours ago





@PhelypeOleinik Question updated.

– user49915
2 hours ago










2 Answers
2






active

oldest

votes


















3














The following definition does it:



ExplSyntaxOn
cs_new_eq:NN __userxlixk_actual_sigma: sigma
RenewDocumentCommandsigma{}
{ __userxlixk_sigma: }
cs_new_protected:Npn __userxlixk_sigma:
{
peek_catcode_remove:NTF c_math_subscript_token
{ __userxlixk_sigma_check_group:n }
{ __userxlixk_actual_sigma: }
}
cs_new_protected:Npn __userxlixk_sigma_check_group:n #1
{
tl_if_single_token:nTF {#1}
{ __userxlixk_actual_sigma: c_math_subscript_token { ! #1 } }
{ __userxlixk_actual_sigma: c_math_subscript_token {#1} }
}
ExplSyntaxOff


I save the definition of sigma in __userxlixk_actual_sigma: then redefine sigma to check:




  1. if it is followed by a c_math_subscript_token: if it is not, then just print __userxlixk_actual_sigma: otherwise;


  2. grab what follows the subscript token as argument and check if the argument consists of a single token: if it does, apply a !, otherwise print normally.



Here's the output before and after the redefinition (I used LuaTeX and lua-visual-debug to show the negative kern):




enter image description here




Code:



documentclass[varwidth]{standalone}
usepackage{lua-visual-debug}
usepackage{luatexbase}
usepackage{unravel}
usepackage{fontspec}
usepackage[american,british,french,norsk,german,ngerman]{babel}
usepackage{mathtools}
mathtoolsset{mathic=true} %%% See http://tex.stackexchange.com/a/3496/
usepackage{amssymb}
usepackage{unicode-math}
setmainfont[Ligatures=TeX]{TeX Gyre Termes}
setsansfont{TeX Gyre Heros}[Scale=0.88]
setmonofont{TeX 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}
begin{document}
$sigma_{abc} sigma_0 sigma_0$

ExplSyntaxOn
cs_new_eq:NN __userxlixk_actual_sigma: sigma
RenewDocumentCommandsigma{}
{ __userxlixk_sigma: }
cs_new_protected:Npn __userxlixk_sigma:
{
peek_catcode_remove:NTF c_math_subscript_token
{ __userxlixk_sigma_check_group:n }
{ __userxlixk_actual_sigma: }
}
cs_new_protected:Npn __userxlixk_sigma_check_group:n #1
{
tl_if_single_token:nTF {#1}
{ __userxlixk_actual_sigma: c_math_subscript_token { ! #1 } }
{ __userxlixk_actual_sigma: c_math_subscript_token {#1} }
}
ExplSyntaxOff

$sigma_{abc} sigma_0 sigma_0$
end{document}


Note, however, that this code will work if you use sigma_a^b but not if you use sigma^b_a.






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 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
    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
    24 mins 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
    22 mins 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
    18 mins ago



















3














I'd use the e argument type of xparse.



documentclass{book}
usepackage{fontspec}
usepackage[american,british,french,norsk,german,ngerman]{babel}
usepackage{mathtools}
usepackage{amssymb}
usepackage{unicode-math}
usepackage[babel=true,verbose=errors]{microtype}

setmainfont{TeX Gyre Termes}
setsansfont{TeX Gyre Heros}[Scale=0.88]
setmonofont{TeX Gyre Cursor}
setmathfont{TeX Gyre Termes Math}
setmathfont{Asana Math}[
range={setminus},
]
setmathfont{XITSMath-Regular}[
Extension=.otf,
range={"2A3E},
BoldFont=XITSMath-Bold,
]

%mathtoolsset{mathic=true} %%% See http://tex.stackexchange.com/a/3496/

AtBeginDocument{%
letstandardsigmasigma
letsigmakernedsigma
}

NewDocumentCommand{kernedsigma}{e{_^}}{%
standardsigma
IfValueT{#1}{_{!#1}}%
IfValueT{#2}{^{#2}}%
}

begin{document}

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

end{document}


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













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

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













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

    – egreg
    1 hour ago











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

    – user49915
    57 mins 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









3














The following definition does it:



ExplSyntaxOn
cs_new_eq:NN __userxlixk_actual_sigma: sigma
RenewDocumentCommandsigma{}
{ __userxlixk_sigma: }
cs_new_protected:Npn __userxlixk_sigma:
{
peek_catcode_remove:NTF c_math_subscript_token
{ __userxlixk_sigma_check_group:n }
{ __userxlixk_actual_sigma: }
}
cs_new_protected:Npn __userxlixk_sigma_check_group:n #1
{
tl_if_single_token:nTF {#1}
{ __userxlixk_actual_sigma: c_math_subscript_token { ! #1 } }
{ __userxlixk_actual_sigma: c_math_subscript_token {#1} }
}
ExplSyntaxOff


I save the definition of sigma in __userxlixk_actual_sigma: then redefine sigma to check:




  1. if it is followed by a c_math_subscript_token: if it is not, then just print __userxlixk_actual_sigma: otherwise;


  2. grab what follows the subscript token as argument and check if the argument consists of a single token: if it does, apply a !, otherwise print normally.



Here's the output before and after the redefinition (I used LuaTeX and lua-visual-debug to show the negative kern):




enter image description here




Code:



documentclass[varwidth]{standalone}
usepackage{lua-visual-debug}
usepackage{luatexbase}
usepackage{unravel}
usepackage{fontspec}
usepackage[american,british,french,norsk,german,ngerman]{babel}
usepackage{mathtools}
mathtoolsset{mathic=true} %%% See http://tex.stackexchange.com/a/3496/
usepackage{amssymb}
usepackage{unicode-math}
setmainfont[Ligatures=TeX]{TeX Gyre Termes}
setsansfont{TeX Gyre Heros}[Scale=0.88]
setmonofont{TeX 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}
begin{document}
$sigma_{abc} sigma_0 sigma_0$

ExplSyntaxOn
cs_new_eq:NN __userxlixk_actual_sigma: sigma
RenewDocumentCommandsigma{}
{ __userxlixk_sigma: }
cs_new_protected:Npn __userxlixk_sigma:
{
peek_catcode_remove:NTF c_math_subscript_token
{ __userxlixk_sigma_check_group:n }
{ __userxlixk_actual_sigma: }
}
cs_new_protected:Npn __userxlixk_sigma_check_group:n #1
{
tl_if_single_token:nTF {#1}
{ __userxlixk_actual_sigma: c_math_subscript_token { ! #1 } }
{ __userxlixk_actual_sigma: c_math_subscript_token {#1} }
}
ExplSyntaxOff

$sigma_{abc} sigma_0 sigma_0$
end{document}


Note, however, that this code will work if you use sigma_a^b but not if you use sigma^b_a.






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 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
    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
    24 mins 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
    22 mins 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
    18 mins ago
















3














The following definition does it:



ExplSyntaxOn
cs_new_eq:NN __userxlixk_actual_sigma: sigma
RenewDocumentCommandsigma{}
{ __userxlixk_sigma: }
cs_new_protected:Npn __userxlixk_sigma:
{
peek_catcode_remove:NTF c_math_subscript_token
{ __userxlixk_sigma_check_group:n }
{ __userxlixk_actual_sigma: }
}
cs_new_protected:Npn __userxlixk_sigma_check_group:n #1
{
tl_if_single_token:nTF {#1}
{ __userxlixk_actual_sigma: c_math_subscript_token { ! #1 } }
{ __userxlixk_actual_sigma: c_math_subscript_token {#1} }
}
ExplSyntaxOff


I save the definition of sigma in __userxlixk_actual_sigma: then redefine sigma to check:




  1. if it is followed by a c_math_subscript_token: if it is not, then just print __userxlixk_actual_sigma: otherwise;


  2. grab what follows the subscript token as argument and check if the argument consists of a single token: if it does, apply a !, otherwise print normally.



Here's the output before and after the redefinition (I used LuaTeX and lua-visual-debug to show the negative kern):




enter image description here




Code:



documentclass[varwidth]{standalone}
usepackage{lua-visual-debug}
usepackage{luatexbase}
usepackage{unravel}
usepackage{fontspec}
usepackage[american,british,french,norsk,german,ngerman]{babel}
usepackage{mathtools}
mathtoolsset{mathic=true} %%% See http://tex.stackexchange.com/a/3496/
usepackage{amssymb}
usepackage{unicode-math}
setmainfont[Ligatures=TeX]{TeX Gyre Termes}
setsansfont{TeX Gyre Heros}[Scale=0.88]
setmonofont{TeX 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}
begin{document}
$sigma_{abc} sigma_0 sigma_0$

ExplSyntaxOn
cs_new_eq:NN __userxlixk_actual_sigma: sigma
RenewDocumentCommandsigma{}
{ __userxlixk_sigma: }
cs_new_protected:Npn __userxlixk_sigma:
{
peek_catcode_remove:NTF c_math_subscript_token
{ __userxlixk_sigma_check_group:n }
{ __userxlixk_actual_sigma: }
}
cs_new_protected:Npn __userxlixk_sigma_check_group:n #1
{
tl_if_single_token:nTF {#1}
{ __userxlixk_actual_sigma: c_math_subscript_token { ! #1 } }
{ __userxlixk_actual_sigma: c_math_subscript_token {#1} }
}
ExplSyntaxOff

$sigma_{abc} sigma_0 sigma_0$
end{document}


Note, however, that this code will work if you use sigma_a^b but not if you use sigma^b_a.






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 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
    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
    24 mins 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
    22 mins 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
    18 mins ago














3












3








3







The following definition does it:



ExplSyntaxOn
cs_new_eq:NN __userxlixk_actual_sigma: sigma
RenewDocumentCommandsigma{}
{ __userxlixk_sigma: }
cs_new_protected:Npn __userxlixk_sigma:
{
peek_catcode_remove:NTF c_math_subscript_token
{ __userxlixk_sigma_check_group:n }
{ __userxlixk_actual_sigma: }
}
cs_new_protected:Npn __userxlixk_sigma_check_group:n #1
{
tl_if_single_token:nTF {#1}
{ __userxlixk_actual_sigma: c_math_subscript_token { ! #1 } }
{ __userxlixk_actual_sigma: c_math_subscript_token {#1} }
}
ExplSyntaxOff


I save the definition of sigma in __userxlixk_actual_sigma: then redefine sigma to check:




  1. if it is followed by a c_math_subscript_token: if it is not, then just print __userxlixk_actual_sigma: otherwise;


  2. grab what follows the subscript token as argument and check if the argument consists of a single token: if it does, apply a !, otherwise print normally.



Here's the output before and after the redefinition (I used LuaTeX and lua-visual-debug to show the negative kern):




enter image description here




Code:



documentclass[varwidth]{standalone}
usepackage{lua-visual-debug}
usepackage{luatexbase}
usepackage{unravel}
usepackage{fontspec}
usepackage[american,british,french,norsk,german,ngerman]{babel}
usepackage{mathtools}
mathtoolsset{mathic=true} %%% See http://tex.stackexchange.com/a/3496/
usepackage{amssymb}
usepackage{unicode-math}
setmainfont[Ligatures=TeX]{TeX Gyre Termes}
setsansfont{TeX Gyre Heros}[Scale=0.88]
setmonofont{TeX 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}
begin{document}
$sigma_{abc} sigma_0 sigma_0$

ExplSyntaxOn
cs_new_eq:NN __userxlixk_actual_sigma: sigma
RenewDocumentCommandsigma{}
{ __userxlixk_sigma: }
cs_new_protected:Npn __userxlixk_sigma:
{
peek_catcode_remove:NTF c_math_subscript_token
{ __userxlixk_sigma_check_group:n }
{ __userxlixk_actual_sigma: }
}
cs_new_protected:Npn __userxlixk_sigma_check_group:n #1
{
tl_if_single_token:nTF {#1}
{ __userxlixk_actual_sigma: c_math_subscript_token { ! #1 } }
{ __userxlixk_actual_sigma: c_math_subscript_token {#1} }
}
ExplSyntaxOff

$sigma_{abc} sigma_0 sigma_0$
end{document}


Note, however, that this code will work if you use sigma_a^b but not if you use sigma^b_a.






share|improve this answer













The following definition does it:



ExplSyntaxOn
cs_new_eq:NN __userxlixk_actual_sigma: sigma
RenewDocumentCommandsigma{}
{ __userxlixk_sigma: }
cs_new_protected:Npn __userxlixk_sigma:
{
peek_catcode_remove:NTF c_math_subscript_token
{ __userxlixk_sigma_check_group:n }
{ __userxlixk_actual_sigma: }
}
cs_new_protected:Npn __userxlixk_sigma_check_group:n #1
{
tl_if_single_token:nTF {#1}
{ __userxlixk_actual_sigma: c_math_subscript_token { ! #1 } }
{ __userxlixk_actual_sigma: c_math_subscript_token {#1} }
}
ExplSyntaxOff


I save the definition of sigma in __userxlixk_actual_sigma: then redefine sigma to check:




  1. if it is followed by a c_math_subscript_token: if it is not, then just print __userxlixk_actual_sigma: otherwise;


  2. grab what follows the subscript token as argument and check if the argument consists of a single token: if it does, apply a !, otherwise print normally.



Here's the output before and after the redefinition (I used LuaTeX and lua-visual-debug to show the negative kern):




enter image description here




Code:



documentclass[varwidth]{standalone}
usepackage{lua-visual-debug}
usepackage{luatexbase}
usepackage{unravel}
usepackage{fontspec}
usepackage[american,british,french,norsk,german,ngerman]{babel}
usepackage{mathtools}
mathtoolsset{mathic=true} %%% See http://tex.stackexchange.com/a/3496/
usepackage{amssymb}
usepackage{unicode-math}
setmainfont[Ligatures=TeX]{TeX Gyre Termes}
setsansfont{TeX Gyre Heros}[Scale=0.88]
setmonofont{TeX 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}
begin{document}
$sigma_{abc} sigma_0 sigma_0$

ExplSyntaxOn
cs_new_eq:NN __userxlixk_actual_sigma: sigma
RenewDocumentCommandsigma{}
{ __userxlixk_sigma: }
cs_new_protected:Npn __userxlixk_sigma:
{
peek_catcode_remove:NTF c_math_subscript_token
{ __userxlixk_sigma_check_group:n }
{ __userxlixk_actual_sigma: }
}
cs_new_protected:Npn __userxlixk_sigma_check_group:n #1
{
tl_if_single_token:nTF {#1}
{ __userxlixk_actual_sigma: c_math_subscript_token { ! #1 } }
{ __userxlixk_actual_sigma: c_math_subscript_token {#1} }
}
ExplSyntaxOff

$sigma_{abc} sigma_0 sigma_0$
end{document}


Note, however, that this code will work if you use sigma_a^b but not if you use sigma^b_a.







share|improve this answer












share|improve this answer



share|improve this answer










answered 2 hours ago









Phelype OleinikPhelype Oleinik

25k54690




25k54690













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

    – Henri Menke
    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
    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
    24 mins 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
    22 mins 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
    18 mins 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 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
    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
    24 mins 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
    22 mins 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
    18 mins 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 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
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
1 hour 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
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
24 mins 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
24 mins 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
22 mins 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
22 mins 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
18 mins 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
18 mins ago











3














I'd use the e argument type of xparse.



documentclass{book}
usepackage{fontspec}
usepackage[american,british,french,norsk,german,ngerman]{babel}
usepackage{mathtools}
usepackage{amssymb}
usepackage{unicode-math}
usepackage[babel=true,verbose=errors]{microtype}

setmainfont{TeX Gyre Termes}
setsansfont{TeX Gyre Heros}[Scale=0.88]
setmonofont{TeX Gyre Cursor}
setmathfont{TeX Gyre Termes Math}
setmathfont{Asana Math}[
range={setminus},
]
setmathfont{XITSMath-Regular}[
Extension=.otf,
range={"2A3E},
BoldFont=XITSMath-Bold,
]

%mathtoolsset{mathic=true} %%% See http://tex.stackexchange.com/a/3496/

AtBeginDocument{%
letstandardsigmasigma
letsigmakernedsigma
}

NewDocumentCommand{kernedsigma}{e{_^}}{%
standardsigma
IfValueT{#1}{_{!#1}}%
IfValueT{#2}{^{#2}}%
}

begin{document}

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

end{document}


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













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

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













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

    – egreg
    1 hour ago











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

    – user49915
    57 mins ago


















3














I'd use the e argument type of xparse.



documentclass{book}
usepackage{fontspec}
usepackage[american,british,french,norsk,german,ngerman]{babel}
usepackage{mathtools}
usepackage{amssymb}
usepackage{unicode-math}
usepackage[babel=true,verbose=errors]{microtype}

setmainfont{TeX Gyre Termes}
setsansfont{TeX Gyre Heros}[Scale=0.88]
setmonofont{TeX Gyre Cursor}
setmathfont{TeX Gyre Termes Math}
setmathfont{Asana Math}[
range={setminus},
]
setmathfont{XITSMath-Regular}[
Extension=.otf,
range={"2A3E},
BoldFont=XITSMath-Bold,
]

%mathtoolsset{mathic=true} %%% See http://tex.stackexchange.com/a/3496/

AtBeginDocument{%
letstandardsigmasigma
letsigmakernedsigma
}

NewDocumentCommand{kernedsigma}{e{_^}}{%
standardsigma
IfValueT{#1}{_{!#1}}%
IfValueT{#2}{^{#2}}%
}

begin{document}

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

end{document}


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













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

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













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

    – egreg
    1 hour ago











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

    – user49915
    57 mins ago
















3












3








3







I'd use the e argument type of xparse.



documentclass{book}
usepackage{fontspec}
usepackage[american,british,french,norsk,german,ngerman]{babel}
usepackage{mathtools}
usepackage{amssymb}
usepackage{unicode-math}
usepackage[babel=true,verbose=errors]{microtype}

setmainfont{TeX Gyre Termes}
setsansfont{TeX Gyre Heros}[Scale=0.88]
setmonofont{TeX Gyre Cursor}
setmathfont{TeX Gyre Termes Math}
setmathfont{Asana Math}[
range={setminus},
]
setmathfont{XITSMath-Regular}[
Extension=.otf,
range={"2A3E},
BoldFont=XITSMath-Bold,
]

%mathtoolsset{mathic=true} %%% See http://tex.stackexchange.com/a/3496/

AtBeginDocument{%
letstandardsigmasigma
letsigmakernedsigma
}

NewDocumentCommand{kernedsigma}{e{_^}}{%
standardsigma
IfValueT{#1}{_{!#1}}%
IfValueT{#2}{^{#2}}%
}

begin{document}

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

end{document}


enter image description here






share|improve this answer













I'd use the e argument type of xparse.



documentclass{book}
usepackage{fontspec}
usepackage[american,british,french,norsk,german,ngerman]{babel}
usepackage{mathtools}
usepackage{amssymb}
usepackage{unicode-math}
usepackage[babel=true,verbose=errors]{microtype}

setmainfont{TeX Gyre Termes}
setsansfont{TeX Gyre Heros}[Scale=0.88]
setmonofont{TeX Gyre Cursor}
setmathfont{TeX Gyre Termes Math}
setmathfont{Asana Math}[
range={setminus},
]
setmathfont{XITSMath-Regular}[
Extension=.otf,
range={"2A3E},
BoldFont=XITSMath-Bold,
]

%mathtoolsset{mathic=true} %%% See http://tex.stackexchange.com/a/3496/

AtBeginDocument{%
letstandardsigmasigma
letsigmakernedsigma
}

NewDocumentCommand{kernedsigma}{e{_^}}{%
standardsigma
IfValueT{#1}{_{!#1}}%
IfValueT{#2}{^{#2}}%
}

begin{document}

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

end{document}


enter image description here







share|improve this answer












share|improve this answer



share|improve this answer










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













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

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













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

    – egreg
    1 hour ago











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

    – user49915
    57 mins 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
    1 hour ago













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

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













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

    – egreg
    1 hour ago











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

    – user49915
    57 mins 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
1 hour 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
1 hour ago















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

– egreg
1 hour ago





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

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















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

– egreg
1 hour ago





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

– egreg
1 hour ago













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

– user49915
57 mins ago







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

– user49915
57 mins 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

How to label and detect the document text images

Vallis Paradisi

Tabula Rosettana