Kerning for subscripts of sigma? Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)Subscript kerning for specific letters in XeLaTeXMargin kerning in Xe(La)TeX for TeXlive 2010: how to enable?Fix math mode kerning of “C”Kerning of subscriptsPair kerning strategies in (pdf)LaTeXKerning and long subscripts or superscriptsKerning super- and subscripts “semantically”Subscript kerning for specific letters in XeLaTeXMicrotype kerning won't work with quotationmarksKerning of HyphensIs there a LuaLaTeX solution to adjust superscript kerning on large delimiters?
Using et al. for a last / senior author rather than for a first author
Did Xerox really develop the first LAN?
Check which numbers satisfy the condition [A*B*C = A! + B! + C!]
If a contract sometimes uses the wrong name, is it still valid?
What are the motives behind Cersei's orders given to Bronn?
How to find all the available tools in macOS terminal?
Why did the IBM 650 use bi-quinary?
Is it ethical to give a final exam after the professor has quit before teaching the remaining chapters of the course?
What is the longest distance a 13th-level monk can jump while attacking on the same turn?
How can I fade player when goes inside or outside of the area?
How to bypass password on Windows XP account?
Do I really need recursive chmod to restrict access to a folder?
How does a Death Domain cleric's Touch of Death feature work with Touch-range spells delivered by familiars?
ListPlot join points by nearest neighbor rather than order
Why don't the Weasley twins use magic outside of school if the Trace can only find the location of spells cast?
Dominant seventh chord in the major scale contains diminished triad of the seventh?
Do you forfeit tax refunds/credits if you aren't required to and don't file by April 15?
What do you call a plan that's an alternative plan in case your initial plan fails?
What does '1 unit of lemon juice' mean in a grandma's drink recipe?
The logistics of corpse disposal
Output the ŋarâþ crîþ alphabet song without using (m)any letters
Diagram with tikz
Is there a concise way to say "all of the X, one of each"?
Should I call the interviewer directly, if HR aren't responding?
Kerning for subscripts of sigma?
Announcing the arrival of Valued Associate #679: Cesar Manara
Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)Subscript kerning for specific letters in XeLaTeXMargin kerning in Xe(La)TeX for TeXlive 2010: how to enable?Fix math mode kerning of “C”Kerning of subscriptsPair kerning strategies in (pdf)LaTeXKerning and long subscripts or superscriptsKerning super- and subscripts “semantically”Subscript kerning for specific letters in XeLaTeXMicrotype kerning won't work with quotationmarksKerning of HyphensIs there a LuaLaTeX solution to adjust superscript kerning on large delimiters?
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:
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
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:
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:
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
Do you want to change the behaviour forsigma_<any single number>
, or forsigma_<any single character>
, orsigma_<anything>
, or somthing else?
– Phelype Oleinik
Apr 11 at 20:37
@PhelypeOleinik Question updated.
– user49915
Apr 11 at 21:05
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:
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:
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
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:
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
xetex microtype kerning
edited Apr 11 at 23:58
user49915
asked Apr 11 at 20:25
user49915user49915
829122
829122
Do you want to change the behaviour forsigma_<any single number>
, or forsigma_<any single character>
, orsigma_<anything>
, or somthing else?
– Phelype Oleinik
Apr 11 at 20:37
@PhelypeOleinik Question updated.
– user49915
Apr 11 at 21:05
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
Apr 11 at 20:37
@PhelypeOleinik Question updated.
– user49915
Apr 11 at 21:05
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
Apr 11 at 20:37
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
Apr 11 at 20:37
@PhelypeOleinik Question updated.
– user49915
Apr 11 at 21:05
@PhelypeOleinik Question updated.
– user49915
Apr 11 at 21:05
add a comment |
2 Answers
2
active
oldest
votes
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):
Notice that the order of subscript and superscript does not matter (anymore, thanks to far too many lines of code) and notice also that the character is kerned only after the AddtoKernList
instruction. To add temporarily a token to this list, do the assignment in a group.
Code:
documentclass[varwidth]standalone
usepackagelua-visual-debug
usepackageluatexbase
usepackageunravel
usepackagefontspec
usepackage[american,british,french,norsk,german,ngerman]babel
usepackagemathtools
mathtoolssetmathic=true %%% See http://tex.stackexchange.com/a/3496/
usepackageamssymb
usepackageunicode-math
setmainfont[Ligatures=TeX]TeX Gyre Termes
setsansfontTeX Gyre Heros[Scale=0.88]
setmonofontTeX Gyre Cursor
setmathfont[Ligatures=TeX]TeX Gyre Termes Math
setmathfont[Ligatures=TeX,range=setminus]Asana Math
setmathfont[Ligatures=TeX,Extension=.otf,range="2A3E,BoldFont=XITSMath-Bold]XITSMath-Regular%%% The fat semicolon
usepackage[babel=true,verbose=errors]microtype
ExplSyntaxOn
tl_new:N l__userxlixk_kern_case_tl
AtBeginDocument
cs_new_eq:NN __userxlixk_actual_sigma: sigma
RenewDocumentCommandsigma
__userxlixk_sigma:
NewDocumentCommandAddtoKernListmm
tl_put_right:Nn l__userxlixk_kern_case_tl
#1 tex_mskip:D #2 scan_stop: #1
cs_new_protected:Npn __userxlixk_sigma:
peek_catcode_remove:NTF c_math_subscript_token
__userxlixk_sigma_check_group:n
__userxlixk_sigma_check_superscript:
cs_new_protected:Npn __userxlixk_sigma_check_group:n #1
exp_args:NNf
__userxlixk_actual_sigma: c_math_subscript_token
__userxlixk_check_kern_list_use:n #1
cs_new_protected:Npn __userxlixk_sigma_check_superscript:
peek_catcode_remove:NTF c_math_superscript_token
__userxlixk_sigma_check_sub_after_sup:n
__userxlixk_actual_sigma:
cs_new_protected:Npn __userxlixk_sigma_check_sub_after_sup:n #1
peek_catcode_remove:NTF c_math_subscript_token
__userxlixk_sigma_sub_after_sup:nn #1
__userxlixk_actual_sigma: c_math_superscript_token #1
cs_new_protected:Npn __userxlixk_sigma_sub_after_sup:nn #1 #2
exp_args:NNf
__userxlixk_actual_sigma: c_math_subscript_token
__userxlixk_check_kern_list_use:n #2
c_math_superscript_token #1
cs_new:Npn __userxlixk_check_kern_list_use:n #1
__userxlixk_check_kern_list_use:Nw #1 q_stop
cs_new:Npn __userxlixk_check_kern_list_use:Nw #1 #2 q_stop
exp_args:NNo
tl_case:NnF #1
l__userxlixk_kern_case_tl
#1
#2
ExplSyntaxOff
begindocument
$sigma_abc sigma^a_0 sigma_0^b sigma^c_T$
AddtoKernList0-thinmuskip
$sigma_abc sigma_0^a sigma^b_0 sigma^c_T$
AddtoKernListT-1mu
$sigma_abc sigma_0^a sigma^b_0 sigma^c_T$
enddocument
If you prefer the e
-type argument you can add my lookup list to egreg's answer:
AtBeginDocument%
letstandardsigmasigma
letsigmakernedsigma
ExplSyntaxOn
tl_new:N l__userxlixk_kern_case_tl
NewDocumentCommandAddtoKernListmm
tl_put_right:Nn l__userxlixk_kern_case_tl
#1 tex_mskip:D #2 scan_stop: #1
cs_new:Npn __userxlixk_check_kern_list_use:n #1
__userxlixk_check_kern_list_use:Nw #1 q_stop
cs_new:Npn __userxlixk_check_kern_list_use:Nw #1 #2 q_stop
exp_args:NNo
tl_case:NnF #1
l__userxlixk_kern_case_tl
#1
#2
cs_new_eq:NN CheckKernListUse __userxlixk_check_kern_list_use:n
ExplSyntaxOff
NewDocumentCommandkernedsigmae_^%
csname exp_args:NNfendcsname
standardsigma_
IfValueT#1CheckKernListUse#1%
IfValueT#2^#2%
To make it work for bothsigma_a^b
andsigma^b_a
you could use ane
-type argument (“embellishments”).
– Henri Menke
Apr 11 at 21:57
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
Apr 11 at 22:06
@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
Apr 11 at 23:33
1
@user49915 Not easily, sorry. The lookup table thingy relies onexpl3
'stl_case:NnF
whose first argument is anN
type (if you don't knowexpl3
, anN
type is a single token argument). For a token list I'd need atl_case:nnF
(with a lowercasen
), which doesn't exist inexpl3
. I know how to build thistl_case:nnF
, but unfortunately I don't have the time right now, and it will be a very slow code. I suggest you to dodefmathrmkmathrmk
and then use thismathrmk
for the time being. Once I have the time I'll make it for you.
– Phelype Oleinik
Apr 12 at 13:21
1
@user49915 Oops, my bad, I forgot it there. Yes, certainly remove it!
– Phelype Oleinik
Apr 12 at 15:20
|
show 7 more comments
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
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
Apr 11 at 22:17
@user49915 I'm not sure what could be the difference. One can quite easily exclude some symbols from being kerned.
– egreg
Apr 11 at 22:23
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
Apr 11 at 22:39
@user49915 I don't know what subscripts you want to use next tosigma
. You probably should kern less than -3mu generally.
– egreg
Apr 11 at 22:56
Initially: all the digits, i, j, k, k, n, i + 1, i - 1.
– user49915
Apr 11 at 23:00
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
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):
Notice that the order of subscript and superscript does not matter (anymore, thanks to far too many lines of code) and notice also that the character is kerned only after the AddtoKernList
instruction. To add temporarily a token to this list, do the assignment in a group.
Code:
documentclass[varwidth]standalone
usepackagelua-visual-debug
usepackageluatexbase
usepackageunravel
usepackagefontspec
usepackage[american,british,french,norsk,german,ngerman]babel
usepackagemathtools
mathtoolssetmathic=true %%% See http://tex.stackexchange.com/a/3496/
usepackageamssymb
usepackageunicode-math
setmainfont[Ligatures=TeX]TeX Gyre Termes
setsansfontTeX Gyre Heros[Scale=0.88]
setmonofontTeX Gyre Cursor
setmathfont[Ligatures=TeX]TeX Gyre Termes Math
setmathfont[Ligatures=TeX,range=setminus]Asana Math
setmathfont[Ligatures=TeX,Extension=.otf,range="2A3E,BoldFont=XITSMath-Bold]XITSMath-Regular%%% The fat semicolon
usepackage[babel=true,verbose=errors]microtype
ExplSyntaxOn
tl_new:N l__userxlixk_kern_case_tl
AtBeginDocument
cs_new_eq:NN __userxlixk_actual_sigma: sigma
RenewDocumentCommandsigma
__userxlixk_sigma:
NewDocumentCommandAddtoKernListmm
tl_put_right:Nn l__userxlixk_kern_case_tl
#1 tex_mskip:D #2 scan_stop: #1
cs_new_protected:Npn __userxlixk_sigma:
peek_catcode_remove:NTF c_math_subscript_token
__userxlixk_sigma_check_group:n
__userxlixk_sigma_check_superscript:
cs_new_protected:Npn __userxlixk_sigma_check_group:n #1
exp_args:NNf
__userxlixk_actual_sigma: c_math_subscript_token
__userxlixk_check_kern_list_use:n #1
cs_new_protected:Npn __userxlixk_sigma_check_superscript:
peek_catcode_remove:NTF c_math_superscript_token
__userxlixk_sigma_check_sub_after_sup:n
__userxlixk_actual_sigma:
cs_new_protected:Npn __userxlixk_sigma_check_sub_after_sup:n #1
peek_catcode_remove:NTF c_math_subscript_token
__userxlixk_sigma_sub_after_sup:nn #1
__userxlixk_actual_sigma: c_math_superscript_token #1
cs_new_protected:Npn __userxlixk_sigma_sub_after_sup:nn #1 #2
exp_args:NNf
__userxlixk_actual_sigma: c_math_subscript_token
__userxlixk_check_kern_list_use:n #2
c_math_superscript_token #1
cs_new:Npn __userxlixk_check_kern_list_use:n #1
__userxlixk_check_kern_list_use:Nw #1 q_stop
cs_new:Npn __userxlixk_check_kern_list_use:Nw #1 #2 q_stop
exp_args:NNo
tl_case:NnF #1
l__userxlixk_kern_case_tl
#1
#2
ExplSyntaxOff
begindocument
$sigma_abc sigma^a_0 sigma_0^b sigma^c_T$
AddtoKernList0-thinmuskip
$sigma_abc sigma_0^a sigma^b_0 sigma^c_T$
AddtoKernListT-1mu
$sigma_abc sigma_0^a sigma^b_0 sigma^c_T$
enddocument
If you prefer the e
-type argument you can add my lookup list to egreg's answer:
AtBeginDocument%
letstandardsigmasigma
letsigmakernedsigma
ExplSyntaxOn
tl_new:N l__userxlixk_kern_case_tl
NewDocumentCommandAddtoKernListmm
tl_put_right:Nn l__userxlixk_kern_case_tl
#1 tex_mskip:D #2 scan_stop: #1
cs_new:Npn __userxlixk_check_kern_list_use:n #1
__userxlixk_check_kern_list_use:Nw #1 q_stop
cs_new:Npn __userxlixk_check_kern_list_use:Nw #1 #2 q_stop
exp_args:NNo
tl_case:NnF #1
l__userxlixk_kern_case_tl
#1
#2
cs_new_eq:NN CheckKernListUse __userxlixk_check_kern_list_use:n
ExplSyntaxOff
NewDocumentCommandkernedsigmae_^%
csname exp_args:NNfendcsname
standardsigma_
IfValueT#1CheckKernListUse#1%
IfValueT#2^#2%
To make it work for bothsigma_a^b
andsigma^b_a
you could use ane
-type argument (“embellishments”).
– Henri Menke
Apr 11 at 21:57
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
Apr 11 at 22:06
@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
Apr 11 at 23:33
1
@user49915 Not easily, sorry. The lookup table thingy relies onexpl3
'stl_case:NnF
whose first argument is anN
type (if you don't knowexpl3
, anN
type is a single token argument). For a token list I'd need atl_case:nnF
(with a lowercasen
), which doesn't exist inexpl3
. I know how to build thistl_case:nnF
, but unfortunately I don't have the time right now, and it will be a very slow code. I suggest you to dodefmathrmkmathrmk
and then use thismathrmk
for the time being. Once I have the time I'll make it for you.
– Phelype Oleinik
Apr 12 at 13:21
1
@user49915 Oops, my bad, I forgot it there. Yes, certainly remove it!
– Phelype Oleinik
Apr 12 at 15:20
|
show 7 more comments
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):
Notice that the order of subscript and superscript does not matter (anymore, thanks to far too many lines of code) and notice also that the character is kerned only after the AddtoKernList
instruction. To add temporarily a token to this list, do the assignment in a group.
Code:
documentclass[varwidth]standalone
usepackagelua-visual-debug
usepackageluatexbase
usepackageunravel
usepackagefontspec
usepackage[american,british,french,norsk,german,ngerman]babel
usepackagemathtools
mathtoolssetmathic=true %%% See http://tex.stackexchange.com/a/3496/
usepackageamssymb
usepackageunicode-math
setmainfont[Ligatures=TeX]TeX Gyre Termes
setsansfontTeX Gyre Heros[Scale=0.88]
setmonofontTeX Gyre Cursor
setmathfont[Ligatures=TeX]TeX Gyre Termes Math
setmathfont[Ligatures=TeX,range=setminus]Asana Math
setmathfont[Ligatures=TeX,Extension=.otf,range="2A3E,BoldFont=XITSMath-Bold]XITSMath-Regular%%% The fat semicolon
usepackage[babel=true,verbose=errors]microtype
ExplSyntaxOn
tl_new:N l__userxlixk_kern_case_tl
AtBeginDocument
cs_new_eq:NN __userxlixk_actual_sigma: sigma
RenewDocumentCommandsigma
__userxlixk_sigma:
NewDocumentCommandAddtoKernListmm
tl_put_right:Nn l__userxlixk_kern_case_tl
#1 tex_mskip:D #2 scan_stop: #1
cs_new_protected:Npn __userxlixk_sigma:
peek_catcode_remove:NTF c_math_subscript_token
__userxlixk_sigma_check_group:n
__userxlixk_sigma_check_superscript:
cs_new_protected:Npn __userxlixk_sigma_check_group:n #1
exp_args:NNf
__userxlixk_actual_sigma: c_math_subscript_token
__userxlixk_check_kern_list_use:n #1
cs_new_protected:Npn __userxlixk_sigma_check_superscript:
peek_catcode_remove:NTF c_math_superscript_token
__userxlixk_sigma_check_sub_after_sup:n
__userxlixk_actual_sigma:
cs_new_protected:Npn __userxlixk_sigma_check_sub_after_sup:n #1
peek_catcode_remove:NTF c_math_subscript_token
__userxlixk_sigma_sub_after_sup:nn #1
__userxlixk_actual_sigma: c_math_superscript_token #1
cs_new_protected:Npn __userxlixk_sigma_sub_after_sup:nn #1 #2
exp_args:NNf
__userxlixk_actual_sigma: c_math_subscript_token
__userxlixk_check_kern_list_use:n #2
c_math_superscript_token #1
cs_new:Npn __userxlixk_check_kern_list_use:n #1
__userxlixk_check_kern_list_use:Nw #1 q_stop
cs_new:Npn __userxlixk_check_kern_list_use:Nw #1 #2 q_stop
exp_args:NNo
tl_case:NnF #1
l__userxlixk_kern_case_tl
#1
#2
ExplSyntaxOff
begindocument
$sigma_abc sigma^a_0 sigma_0^b sigma^c_T$
AddtoKernList0-thinmuskip
$sigma_abc sigma_0^a sigma^b_0 sigma^c_T$
AddtoKernListT-1mu
$sigma_abc sigma_0^a sigma^b_0 sigma^c_T$
enddocument
If you prefer the e
-type argument you can add my lookup list to egreg's answer:
AtBeginDocument%
letstandardsigmasigma
letsigmakernedsigma
ExplSyntaxOn
tl_new:N l__userxlixk_kern_case_tl
NewDocumentCommandAddtoKernListmm
tl_put_right:Nn l__userxlixk_kern_case_tl
#1 tex_mskip:D #2 scan_stop: #1
cs_new:Npn __userxlixk_check_kern_list_use:n #1
__userxlixk_check_kern_list_use:Nw #1 q_stop
cs_new:Npn __userxlixk_check_kern_list_use:Nw #1 #2 q_stop
exp_args:NNo
tl_case:NnF #1
l__userxlixk_kern_case_tl
#1
#2
cs_new_eq:NN CheckKernListUse __userxlixk_check_kern_list_use:n
ExplSyntaxOff
NewDocumentCommandkernedsigmae_^%
csname exp_args:NNfendcsname
standardsigma_
IfValueT#1CheckKernListUse#1%
IfValueT#2^#2%
To make it work for bothsigma_a^b
andsigma^b_a
you could use ane
-type argument (“embellishments”).
– Henri Menke
Apr 11 at 21:57
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
Apr 11 at 22:06
@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
Apr 11 at 23:33
1
@user49915 Not easily, sorry. The lookup table thingy relies onexpl3
'stl_case:NnF
whose first argument is anN
type (if you don't knowexpl3
, anN
type is a single token argument). For a token list I'd need atl_case:nnF
(with a lowercasen
), which doesn't exist inexpl3
. I know how to build thistl_case:nnF
, but unfortunately I don't have the time right now, and it will be a very slow code. I suggest you to dodefmathrmkmathrmk
and then use thismathrmk
for the time being. Once I have the time I'll make it for you.
– Phelype Oleinik
Apr 12 at 13:21
1
@user49915 Oops, my bad, I forgot it there. Yes, certainly remove it!
– Phelype Oleinik
Apr 12 at 15:20
|
show 7 more comments
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):
Notice that the order of subscript and superscript does not matter (anymore, thanks to far too many lines of code) and notice also that the character is kerned only after the AddtoKernList
instruction. To add temporarily a token to this list, do the assignment in a group.
Code:
documentclass[varwidth]standalone
usepackagelua-visual-debug
usepackageluatexbase
usepackageunravel
usepackagefontspec
usepackage[american,british,french,norsk,german,ngerman]babel
usepackagemathtools
mathtoolssetmathic=true %%% See http://tex.stackexchange.com/a/3496/
usepackageamssymb
usepackageunicode-math
setmainfont[Ligatures=TeX]TeX Gyre Termes
setsansfontTeX Gyre Heros[Scale=0.88]
setmonofontTeX Gyre Cursor
setmathfont[Ligatures=TeX]TeX Gyre Termes Math
setmathfont[Ligatures=TeX,range=setminus]Asana Math
setmathfont[Ligatures=TeX,Extension=.otf,range="2A3E,BoldFont=XITSMath-Bold]XITSMath-Regular%%% The fat semicolon
usepackage[babel=true,verbose=errors]microtype
ExplSyntaxOn
tl_new:N l__userxlixk_kern_case_tl
AtBeginDocument
cs_new_eq:NN __userxlixk_actual_sigma: sigma
RenewDocumentCommandsigma
__userxlixk_sigma:
NewDocumentCommandAddtoKernListmm
tl_put_right:Nn l__userxlixk_kern_case_tl
#1 tex_mskip:D #2 scan_stop: #1
cs_new_protected:Npn __userxlixk_sigma:
peek_catcode_remove:NTF c_math_subscript_token
__userxlixk_sigma_check_group:n
__userxlixk_sigma_check_superscript:
cs_new_protected:Npn __userxlixk_sigma_check_group:n #1
exp_args:NNf
__userxlixk_actual_sigma: c_math_subscript_token
__userxlixk_check_kern_list_use:n #1
cs_new_protected:Npn __userxlixk_sigma_check_superscript:
peek_catcode_remove:NTF c_math_superscript_token
__userxlixk_sigma_check_sub_after_sup:n
__userxlixk_actual_sigma:
cs_new_protected:Npn __userxlixk_sigma_check_sub_after_sup:n #1
peek_catcode_remove:NTF c_math_subscript_token
__userxlixk_sigma_sub_after_sup:nn #1
__userxlixk_actual_sigma: c_math_superscript_token #1
cs_new_protected:Npn __userxlixk_sigma_sub_after_sup:nn #1 #2
exp_args:NNf
__userxlixk_actual_sigma: c_math_subscript_token
__userxlixk_check_kern_list_use:n #2
c_math_superscript_token #1
cs_new:Npn __userxlixk_check_kern_list_use:n #1
__userxlixk_check_kern_list_use:Nw #1 q_stop
cs_new:Npn __userxlixk_check_kern_list_use:Nw #1 #2 q_stop
exp_args:NNo
tl_case:NnF #1
l__userxlixk_kern_case_tl
#1
#2
ExplSyntaxOff
begindocument
$sigma_abc sigma^a_0 sigma_0^b sigma^c_T$
AddtoKernList0-thinmuskip
$sigma_abc sigma_0^a sigma^b_0 sigma^c_T$
AddtoKernListT-1mu
$sigma_abc sigma_0^a sigma^b_0 sigma^c_T$
enddocument
If you prefer the e
-type argument you can add my lookup list to egreg's answer:
AtBeginDocument%
letstandardsigmasigma
letsigmakernedsigma
ExplSyntaxOn
tl_new:N l__userxlixk_kern_case_tl
NewDocumentCommandAddtoKernListmm
tl_put_right:Nn l__userxlixk_kern_case_tl
#1 tex_mskip:D #2 scan_stop: #1
cs_new:Npn __userxlixk_check_kern_list_use:n #1
__userxlixk_check_kern_list_use:Nw #1 q_stop
cs_new:Npn __userxlixk_check_kern_list_use:Nw #1 #2 q_stop
exp_args:NNo
tl_case:NnF #1
l__userxlixk_kern_case_tl
#1
#2
cs_new_eq:NN CheckKernListUse __userxlixk_check_kern_list_use:n
ExplSyntaxOff
NewDocumentCommandkernedsigmae_^%
csname exp_args:NNfendcsname
standardsigma_
IfValueT#1CheckKernListUse#1%
IfValueT#2^#2%
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):
Notice that the order of subscript and superscript does not matter (anymore, thanks to far too many lines of code) and notice also that the character is kerned only after the AddtoKernList
instruction. To add temporarily a token to this list, do the assignment in a group.
Code:
documentclass[varwidth]standalone
usepackagelua-visual-debug
usepackageluatexbase
usepackageunravel
usepackagefontspec
usepackage[american,british,french,norsk,german,ngerman]babel
usepackagemathtools
mathtoolssetmathic=true %%% See http://tex.stackexchange.com/a/3496/
usepackageamssymb
usepackageunicode-math
setmainfont[Ligatures=TeX]TeX Gyre Termes
setsansfontTeX Gyre Heros[Scale=0.88]
setmonofontTeX Gyre Cursor
setmathfont[Ligatures=TeX]TeX Gyre Termes Math
setmathfont[Ligatures=TeX,range=setminus]Asana Math
setmathfont[Ligatures=TeX,Extension=.otf,range="2A3E,BoldFont=XITSMath-Bold]XITSMath-Regular%%% The fat semicolon
usepackage[babel=true,verbose=errors]microtype
ExplSyntaxOn
tl_new:N l__userxlixk_kern_case_tl
AtBeginDocument
cs_new_eq:NN __userxlixk_actual_sigma: sigma
RenewDocumentCommandsigma
__userxlixk_sigma:
NewDocumentCommandAddtoKernListmm
tl_put_right:Nn l__userxlixk_kern_case_tl
#1 tex_mskip:D #2 scan_stop: #1
cs_new_protected:Npn __userxlixk_sigma:
peek_catcode_remove:NTF c_math_subscript_token
__userxlixk_sigma_check_group:n
__userxlixk_sigma_check_superscript:
cs_new_protected:Npn __userxlixk_sigma_check_group:n #1
exp_args:NNf
__userxlixk_actual_sigma: c_math_subscript_token
__userxlixk_check_kern_list_use:n #1
cs_new_protected:Npn __userxlixk_sigma_check_superscript:
peek_catcode_remove:NTF c_math_superscript_token
__userxlixk_sigma_check_sub_after_sup:n
__userxlixk_actual_sigma:
cs_new_protected:Npn __userxlixk_sigma_check_sub_after_sup:n #1
peek_catcode_remove:NTF c_math_subscript_token
__userxlixk_sigma_sub_after_sup:nn #1
__userxlixk_actual_sigma: c_math_superscript_token #1
cs_new_protected:Npn __userxlixk_sigma_sub_after_sup:nn #1 #2
exp_args:NNf
__userxlixk_actual_sigma: c_math_subscript_token
__userxlixk_check_kern_list_use:n #2
c_math_superscript_token #1
cs_new:Npn __userxlixk_check_kern_list_use:n #1
__userxlixk_check_kern_list_use:Nw #1 q_stop
cs_new:Npn __userxlixk_check_kern_list_use:Nw #1 #2 q_stop
exp_args:NNo
tl_case:NnF #1
l__userxlixk_kern_case_tl
#1
#2
ExplSyntaxOff
begindocument
$sigma_abc sigma^a_0 sigma_0^b sigma^c_T$
AddtoKernList0-thinmuskip
$sigma_abc sigma_0^a sigma^b_0 sigma^c_T$
AddtoKernListT-1mu
$sigma_abc sigma_0^a sigma^b_0 sigma^c_T$
enddocument
If you prefer the e
-type argument you can add my lookup list to egreg's answer:
AtBeginDocument%
letstandardsigmasigma
letsigmakernedsigma
ExplSyntaxOn
tl_new:N l__userxlixk_kern_case_tl
NewDocumentCommandAddtoKernListmm
tl_put_right:Nn l__userxlixk_kern_case_tl
#1 tex_mskip:D #2 scan_stop: #1
cs_new:Npn __userxlixk_check_kern_list_use:n #1
__userxlixk_check_kern_list_use:Nw #1 q_stop
cs_new:Npn __userxlixk_check_kern_list_use:Nw #1 #2 q_stop
exp_args:NNo
tl_case:NnF #1
l__userxlixk_kern_case_tl
#1
#2
cs_new_eq:NN CheckKernListUse __userxlixk_check_kern_list_use:n
ExplSyntaxOff
NewDocumentCommandkernedsigmae_^%
csname exp_args:NNfendcsname
standardsigma_
IfValueT#1CheckKernListUse#1%
IfValueT#2^#2%
edited Apr 12 at 15:20
answered Apr 11 at 21:55
Phelype OleinikPhelype Oleinik
25.4k54690
25.4k54690
To make it work for bothsigma_a^b
andsigma^b_a
you could use ane
-type argument (“embellishments”).
– Henri Menke
Apr 11 at 21:57
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
Apr 11 at 22:06
@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
Apr 11 at 23:33
1
@user49915 Not easily, sorry. The lookup table thingy relies onexpl3
'stl_case:NnF
whose first argument is anN
type (if you don't knowexpl3
, anN
type is a single token argument). For a token list I'd need atl_case:nnF
(with a lowercasen
), which doesn't exist inexpl3
. I know how to build thistl_case:nnF
, but unfortunately I don't have the time right now, and it will be a very slow code. I suggest you to dodefmathrmkmathrmk
and then use thismathrmk
for the time being. Once I have the time I'll make it for you.
– Phelype Oleinik
Apr 12 at 13:21
1
@user49915 Oops, my bad, I forgot it there. Yes, certainly remove it!
– Phelype Oleinik
Apr 12 at 15:20
|
show 7 more comments
To make it work for bothsigma_a^b
andsigma^b_a
you could use ane
-type argument (“embellishments”).
– Henri Menke
Apr 11 at 21:57
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
Apr 11 at 22:06
@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
Apr 11 at 23:33
1
@user49915 Not easily, sorry. The lookup table thingy relies onexpl3
'stl_case:NnF
whose first argument is anN
type (if you don't knowexpl3
, anN
type is a single token argument). For a token list I'd need atl_case:nnF
(with a lowercasen
), which doesn't exist inexpl3
. I know how to build thistl_case:nnF
, but unfortunately I don't have the time right now, and it will be a very slow code. I suggest you to dodefmathrmkmathrmk
and then use thismathrmk
for the time being. Once I have the time I'll make it for you.
– Phelype Oleinik
Apr 12 at 13:21
1
@user49915 Oops, my bad, I forgot it there. Yes, certainly remove it!
– Phelype Oleinik
Apr 12 at 15:20
To make it work for both
sigma_a^b
and sigma^b_a
you could use an e
-type argument (“embellishments”).– Henri Menke
Apr 11 at 21:57
To make it work for both
sigma_a^b
and sigma^b_a
you could use an e
-type argument (“embellishments”).– Henri Menke
Apr 11 at 21:57
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
Apr 11 at 22:06
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
Apr 11 at 22:06
@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
Apr 11 at 23:33
@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
Apr 11 at 23:33
1
1
@user49915 Not easily, sorry. The lookup table thingy relies on
expl3
's tl_case:NnF
whose first argument is an N
type (if you don't know expl3
, an N
type is a single token argument). For a token list I'd need a tl_case:nnF
(with a lowercase n
), which doesn't exist in expl3
. I know how to build this tl_case:nnF
, but unfortunately I don't have the time right now, and it will be a very slow code. I suggest you to do defmathrmkmathrmk
and then use this mathrmk
for the time being. Once I have the time I'll make it for you.– Phelype Oleinik
Apr 12 at 13:21
@user49915 Not easily, sorry. The lookup table thingy relies on
expl3
's tl_case:NnF
whose first argument is an N
type (if you don't know expl3
, an N
type is a single token argument). For a token list I'd need a tl_case:nnF
(with a lowercase n
), which doesn't exist in expl3
. I know how to build this tl_case:nnF
, but unfortunately I don't have the time right now, and it will be a very slow code. I suggest you to do defmathrmkmathrmk
and then use this mathrmk
for the time being. Once I have the time I'll make it for you.– Phelype Oleinik
Apr 12 at 13:21
1
1
@user49915 Oops, my bad, I forgot it there. Yes, certainly remove it!
– Phelype Oleinik
Apr 12 at 15:20
@user49915 Oops, my bad, I forgot it there. Yes, certainly remove it!
– Phelype Oleinik
Apr 12 at 15:20
|
show 7 more comments
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
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
Apr 11 at 22:17
@user49915 I'm not sure what could be the difference. One can quite easily exclude some symbols from being kerned.
– egreg
Apr 11 at 22:23
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
Apr 11 at 22:39
@user49915 I don't know what subscripts you want to use next tosigma
. You probably should kern less than -3mu generally.
– egreg
Apr 11 at 22:56
Initially: all the digits, i, j, k, k, n, i + 1, i - 1.
– user49915
Apr 11 at 23:00
add a comment |
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
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
Apr 11 at 22:17
@user49915 I'm not sure what could be the difference. One can quite easily exclude some symbols from being kerned.
– egreg
Apr 11 at 22:23
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
Apr 11 at 22:39
@user49915 I don't know what subscripts you want to use next tosigma
. You probably should kern less than -3mu generally.
– egreg
Apr 11 at 22:56
Initially: all the digits, i, j, k, k, n, i + 1, i - 1.
– user49915
Apr 11 at 23:00
add a comment |
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
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
answered Apr 11 at 22:12
egregegreg
734k8919333257
734k8919333257
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
Apr 11 at 22:17
@user49915 I'm not sure what could be the difference. One can quite easily exclude some symbols from being kerned.
– egreg
Apr 11 at 22:23
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
Apr 11 at 22:39
@user49915 I don't know what subscripts you want to use next tosigma
. You probably should kern less than -3mu generally.
– egreg
Apr 11 at 22:56
Initially: all the digits, i, j, k, k, n, i + 1, i - 1.
– user49915
Apr 11 at 23:00
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
Apr 11 at 22:17
@user49915 I'm not sure what could be the difference. One can quite easily exclude some symbols from being kerned.
– egreg
Apr 11 at 22:23
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
Apr 11 at 22:39
@user49915 I don't know what subscripts you want to use next tosigma
. You probably should kern less than -3mu generally.
– egreg
Apr 11 at 22:56
Initially: all the digits, i, j, k, k, n, i + 1, i - 1.
– user49915
Apr 11 at 23:00
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
Apr 11 at 22:17
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
Apr 11 at 22:17
@user49915 I'm not sure what could be the difference. One can quite easily exclude some symbols from being kerned.
– egreg
Apr 11 at 22:23
@user49915 I'm not sure what could be the difference. One can quite easily exclude some symbols from being kerned.
– egreg
Apr 11 at 22:23
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
Apr 11 at 22:39
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
Apr 11 at 22:39
@user49915 I don't know what subscripts you want to use next to
sigma
. You probably should kern less than -3mu generally.– egreg
Apr 11 at 22:56
@user49915 I don't know what subscripts you want to use next to
sigma
. You probably should kern less than -3mu generally.– egreg
Apr 11 at 22:56
Initially: all the digits, i, j, k, k, n, i + 1, i - 1.
– user49915
Apr 11 at 23:00
Initially: all the digits, i, j, k, k, n, i + 1, i - 1.
– user49915
Apr 11 at 23:00
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
Apr 11 at 20:37
@PhelypeOleinik Question updated.
– user49915
Apr 11 at 21:05