Kerning for subscripts of sigma? The 2019 Stack Overflow Developer Survey Results Are...
Pokemon Turn Based battle (Python)
Does HR tell a hiring manager about salary negotiations?
What is the motivation for a law requiring 2 parties to consent for recording a conversation
Mathematics of imaging the black hole
Ubuntu Server install with full GUI
Is it ok to offer lower paid work as a trial period before negotiating for a full-time job?
Did the UK government pay "millions and millions of dollars" to try to snag Julian Assange?
Why doesn't UInt have a toDouble()?
Is Cinnamon a desktop environment or a window manager? (Or both?)
Flight paths in orbit around Ceres?
How to support a colleague who finds meetings extremely tiring?
Why not take a picture of a closer black hole?
Slides for 30 min~1 hr Skype tenure track application interview
Dropping list elements from nested list after evaluation
What information about me do stores get via my credit card?
What is this sharp, curved notch on my knife for?
Getting crown tickets for Statue of Liberty
Is it possible for absolutely everyone to attain enlightenment?
What does Linus Torvalds mean when he says that Git "never ever" tracks a file?
Can withdrawing asylum be illegal?
How to obtain a position of last non-zero element
Falsification in Math vs Science
Did any laptop computers have a built-in 5 1/4 inch floppy drive?
Geography at the pixel level
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”Turning off TeXnical enhancementsKerning of subscriptsPair kerning strategies in (pdf)LaTeXKerning 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?
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:

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).
xetex microtype kerning
add a comment |
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:

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).
xetex microtype kerning
Do you want to change the behaviour forsigma_<any single number>, or forsigma_<any single character>, orsigma_<anything>, or somthing else?
– Phelype Oleinik
2 hours ago
@PhelypeOleinik Question updated.
– user49915
1 hour ago
add a comment |
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:

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).
xetex microtype kerning
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:

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).
xetex microtype kerning
xetex microtype kerning
edited 17 mins ago
user49915
asked 2 hours ago
user49915user49915
761122
761122
Do you want to change the behaviour forsigma_<any single number>, or forsigma_<any single character>, orsigma_<anything>, or somthing else?
– Phelype Oleinik
2 hours ago
@PhelypeOleinik Question updated.
– user49915
1 hour ago
add a comment |
Do you want to change the behaviour forsigma_<any single number>, or forsigma_<any single character>, orsigma_<anything>, or somthing else?
– Phelype Oleinik
2 hours ago
@PhelypeOleinik Question updated.
– user49915
1 hour ago
Do you want to change the behaviour for
sigma_<any single number>, or for sigma_<any single character>, or sigma_<anything>, or somthing else?– Phelype Oleinik
2 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
2 hours ago
@PhelypeOleinik Question updated.
– user49915
1 hour ago
@PhelypeOleinik Question updated.
– user49915
1 hour ago
add a comment |
2 Answers
2
active
oldest
votes
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:
if it is followed by a
c_math_subscript_token: if it is not, then just print__userxlixk_actual_sigma:otherwise;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):
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.
To make it work for bothsigma_a^bandsigma^b_ayou could use ane-type argument (“embellishments”).
– Henri Menke
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
54 mins ago
add a comment |
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}

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
43 mins ago
@user49915 I'm not sure what could be the difference. One can quite easily exclude some symbols from being kerned.
– egreg
37 mins 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
21 mins ago
@user49915 I don't know what subscripts you want to use next tosigma. You probably should kern less than -3mu generally.
– egreg
4 mins ago
Initially: all the digits, i, j, i+1, n.
– user49915
36 secs ago
add a comment |
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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:
if it is followed by a
c_math_subscript_token: if it is not, then just print__userxlixk_actual_sigma:otherwise;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):
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.
To make it work for bothsigma_a^bandsigma^b_ayou could use ane-type argument (“embellishments”).
– Henri Menke
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
54 mins ago
add a comment |
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:
if it is followed by a
c_math_subscript_token: if it is not, then just print__userxlixk_actual_sigma:otherwise;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):
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.
To make it work for bothsigma_a^bandsigma^b_ayou could use ane-type argument (“embellishments”).
– Henri Menke
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
54 mins ago
add a comment |
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:
if it is followed by a
c_math_subscript_token: if it is not, then just print__userxlixk_actual_sigma:otherwise;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):
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.
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:
if it is followed by a
c_math_subscript_token: if it is not, then just print__userxlixk_actual_sigma:otherwise;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):
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.
answered 1 hour ago
Phelype OleinikPhelype Oleinik
25k54690
25k54690
To make it work for bothsigma_a^bandsigma^b_ayou could use ane-type argument (“embellishments”).
– Henri Menke
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
54 mins ago
add a comment |
To make it work for bothsigma_a^bandsigma^b_ayou could use ane-type argument (“embellishments”).
– Henri Menke
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
54 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
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
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
54 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 rather than checking that the whole subscript is single-token?
– user49915
54 mins ago
add a comment |
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}

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
43 mins ago
@user49915 I'm not sure what could be the difference. One can quite easily exclude some symbols from being kerned.
– egreg
37 mins 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
21 mins ago
@user49915 I don't know what subscripts you want to use next tosigma. You probably should kern less than -3mu generally.
– egreg
4 mins ago
Initially: all the digits, i, j, i+1, n.
– user49915
36 secs ago
add a comment |
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}

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
43 mins ago
@user49915 I'm not sure what could be the difference. One can quite easily exclude some symbols from being kerned.
– egreg
37 mins 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
21 mins ago
@user49915 I don't know what subscripts you want to use next tosigma. You probably should kern less than -3mu generally.
– egreg
4 mins ago
Initially: all the digits, i, j, i+1, n.
– user49915
36 secs ago
add a comment |
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}

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}

answered 48 mins 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
43 mins ago
@user49915 I'm not sure what could be the difference. One can quite easily exclude some symbols from being kerned.
– egreg
37 mins 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
21 mins ago
@user49915 I don't know what subscripts you want to use next tosigma. You probably should kern less than -3mu generally.
– egreg
4 mins ago
Initially: all the digits, i, j, i+1, n.
– user49915
36 secs ago
add a comment |
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
43 mins ago
@user49915 I'm not sure what could be the difference. One can quite easily exclude some symbols from being kerned.
– egreg
37 mins 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
21 mins ago
@user49915 I don't know what subscripts you want to use next tosigma. You probably should kern less than -3mu generally.
– egreg
4 mins ago
Initially: all the digits, i, j, i+1, n.
– user49915
36 secs 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
43 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
43 mins ago
@user49915 I'm not sure what could be the difference. One can quite easily exclude some symbols from being kerned.
– egreg
37 mins ago
@user49915 I'm not sure what could be the difference. One can quite easily exclude some symbols from being kerned.
– egreg
37 mins 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
21 mins 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
21 mins ago
@user49915 I don't know what subscripts you want to use next to
sigma. You probably should kern less than -3mu generally.– egreg
4 mins ago
@user49915 I don't know what subscripts you want to use next to
sigma. You probably should kern less than -3mu generally.– egreg
4 mins ago
Initially: all the digits, i, j, i+1, n.
– user49915
36 secs ago
Initially: all the digits, i, j, i+1, n.
– user49915
36 secs ago
add a comment |
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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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

Do you want to change the behaviour for
sigma_<any single number>, or forsigma_<any single character>, orsigma_<anything>, or somthing else?– Phelype Oleinik
2 hours ago
@PhelypeOleinik Question updated.
– user49915
1 hour ago