From 76b970f64a7bdeaab9327dc4a94f6d28bbc37a2e Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Thu, 30 Jul 2015 22:03:56 +0000 Subject: unicode-math (30jul15) git-svn-id: svn://tug.org/texlive/trunk@38008 c570f23f-e606-0410-a88d-b1316a301751 --- .../tex/latex/unicode-math/unicode-math-luatex.sty | 3314 +++++++------------ .../tex/latex/unicode-math/unicode-math-table.tex | 146 +- .../tex/latex/unicode-math/unicode-math-xetex.sty | 3335 +++++++------------- .../tex/latex/unicode-math/unicode-math.sty | 1562 +++++++-- 4 files changed, 3812 insertions(+), 4545 deletions(-) (limited to 'Master/texmf-dist/tex/latex/unicode-math') diff --git a/Master/texmf-dist/tex/latex/unicode-math/unicode-math-luatex.sty b/Master/texmf-dist/tex/latex/unicode-math/unicode-math-luatex.sty index e0588b9875c..8755025b92f 100644 --- a/Master/texmf-dist/tex/latex/unicode-math/unicode-math-luatex.sty +++ b/Master/texmf-dist/tex/latex/unicode-math/unicode-math-luatex.sty @@ -5,9 +5,10 @@ %% The original source files were: %% %% unicode-math.dtx (with options: `package,LU') -%% Copyright 2006-2013 Will Robertson +%% unicode-math-compat.dtx (with options: `compat,LU') +%% Copyright 2006-2015 Will Robertson %% Copyright 2010-2013 Philipp Stephani -%% Copyright 2012-2013 Khaled Hosny +%% Copyright 2012-2015 Khaled Hosny %% %% This package is free software and may be redistributed and/or modified under %% the conditions of the LaTeX Project Public License, version 1.3c or higher @@ -17,245 +18,10 @@ \ExplSyntaxOn \RequirePackage{luaotfload} [2014/05/18] \RequirePackage{lualatex-math}[2011/08/07] -\cs_new:Nn \usv_set:nnn - { - \tl_set:cn { \um_to_usv:nn {#1}{#2} } {#3} - } -\cs_new:Nn \um_to_usv:nn { g_um_#1_#2_usv } -\usv_set:nnn {up} {num} {48} -\usv_set:nnn {up} {Latin}{65} -\usv_set:nnn {up} {latin}{97} -\usv_set:nnn {up} {Greek}{"391} -\usv_set:nnn {up} {greek}{"3B1} -\usv_set:nnn {it} {Latin}{"1D434} -\usv_set:nnn {it} {latin}{"1D44E} -\usv_set:nnn {it} {Greek}{"1D6E2} -\usv_set:nnn {it} {greek}{"1D6FC} -\usv_set:nnn {bb} {num} {"1D7D8} -\usv_set:nnn {bb} {Latin}{"1D538} -\usv_set:nnn {bb} {latin}{"1D552} -\usv_set:nnn {scr} {Latin}{"1D49C} -\usv_set:nnn {cal} {Latin}{"1D49C} -\usv_set:nnn {scr} {latin}{"1D4B6} -\usv_set:nnn {frak}{Latin}{"1D504} -\usv_set:nnn {frak}{latin}{"1D51E} -\usv_set:nnn {sf} {num} {"1D7E2} -\usv_set:nnn {sfup}{num} {"1D7E2} -\usv_set:nnn {sfit}{num} {"1D7E2} -\usv_set:nnn {sfup}{Latin}{"1D5A0} -\usv_set:nnn {sf} {Latin}{"1D5A0} -\usv_set:nnn {sfup}{latin}{"1D5BA} -\usv_set:nnn {sf} {latin}{"1D5BA} -\usv_set:nnn {sfit}{Latin}{"1D608} -\usv_set:nnn {sfit}{latin}{"1D622} -\usv_set:nnn {tt} {num} {"1D7F6} -\usv_set:nnn {tt} {Latin}{"1D670} -\usv_set:nnn {tt} {latin}{"1D68A} -\usv_set:nnn {bf} {num} {"1D7CE} -\usv_set:nnn {bfup} {num} {"1D7CE} -\usv_set:nnn {bfit} {num} {"1D7CE} -\usv_set:nnn {bfup} {Latin}{"1D400} -\usv_set:nnn {bfup} {latin}{"1D41A} -\usv_set:nnn {bfup} {Greek}{"1D6A8} -\usv_set:nnn {bfup} {greek}{"1D6C2} -\usv_set:nnn {bfit} {Latin}{"1D468} -\usv_set:nnn {bfit} {latin}{"1D482} -\usv_set:nnn {bfit} {Greek}{"1D71C} -\usv_set:nnn {bfit} {greek}{"1D736} -\usv_set:nnn {bffrak}{Latin}{"1D56C} -\usv_set:nnn {bffrak}{latin}{"1D586} -\usv_set:nnn {bfscr} {Latin}{"1D4D0} -\usv_set:nnn {bfcal} {Latin}{"1D4D0} -\usv_set:nnn {bfscr} {latin}{"1D4EA} -\usv_set:nnn {bfsf} {num} {"1D7EC} -\usv_set:nnn {bfsfup}{num} {"1D7EC} -\usv_set:nnn {bfsfit}{num} {"1D7EC} -\usv_set:nnn {bfsfup}{Latin}{"1D5D4} -\usv_set:nnn {bfsfup}{latin}{"1D5EE} -\usv_set:nnn {bfsfup}{Greek}{"1D756} -\usv_set:nnn {bfsfup}{greek}{"1D770} -\usv_set:nnn {bfsfit}{Latin}{"1D63C} -\usv_set:nnn {bfsfit}{latin}{"1D656} -\usv_set:nnn {bfsfit}{Greek}{"1D790} -\usv_set:nnn {bfsfit}{greek}{"1D7AA} -\usv_set:nnn {bfsf}{Latin}{ \bool_if:NTF \g_um_upLatin_bool \g_um_bfsfup_Latin_usv \g_um_bfsfit_Latin_usv } -\usv_set:nnn {bfsf}{latin}{ \bool_if:NTF \g_um_uplatin_bool \g_um_bfsfup_latin_usv \g_um_bfsfit_latin_usv } -\usv_set:nnn {bfsf}{Greek}{ \bool_if:NTF \g_um_upGreek_bool \g_um_bfsfup_Greek_usv \g_um_bfsfit_Greek_usv } -\usv_set:nnn {bfsf}{greek}{ \bool_if:NTF \g_um_upgreek_bool \g_um_bfsfup_greek_usv \g_um_bfsfit_greek_usv } -\usv_set:nnn {bf} {Latin}{ \bool_if:NTF \g_um_bfupLatin_bool \g_um_bfup_Latin_usv \g_um_bfit_Latin_usv } -\usv_set:nnn {bf} {latin}{ \bool_if:NTF \g_um_bfuplatin_bool \g_um_bfup_latin_usv \g_um_bfit_latin_usv } -\usv_set:nnn {bf} {Greek}{ \bool_if:NTF \g_um_bfupGreek_bool \g_um_bfup_Greek_usv \g_um_bfit_Greek_usv } -\usv_set:nnn {bf} {greek}{ \bool_if:NTF \g_um_bfupgreek_bool \g_um_bfup_greek_usv \g_um_bfit_greek_usv } -\usv_set:nnn {up}{varTheta} {"3F4} -\usv_set:nnn {up}{Digamma} {"3DC} -\usv_set:nnn {up}{varepsilon}{"3F5} -\usv_set:nnn {up}{vartheta} {"3D1} -\usv_set:nnn {up}{varkappa} {"3F0} -\usv_set:nnn {up}{varphi} {"3D5} -\usv_set:nnn {up}{varrho} {"3F1} -\usv_set:nnn {up}{varpi} {"3D6} -\usv_set:nnn {up}{digamma} {"3DD} -\usv_set:nnn {bfup}{varTheta} {"1D6B9} -\usv_set:nnn {bfup}{Digamma} {"1D7CA} -\usv_set:nnn {bfup}{varepsilon}{"1D6DC} -\usv_set:nnn {bfup}{vartheta} {"1D6DD} -\usv_set:nnn {bfup}{varkappa} {"1D6DE} -\usv_set:nnn {bfup}{varphi} {"1D6DF} -\usv_set:nnn {bfup}{varrho} {"1D6E0} -\usv_set:nnn {bfup}{varpi} {"1D6E1} -\usv_set:nnn {bfup}{digamma} {"1D7CB} -\usv_set:nnn {it}{varTheta} {"1D6F3} -\usv_set:nnn {it}{varepsilon}{"1D716} -\usv_set:nnn {it}{vartheta} {"1D717} -\usv_set:nnn {it}{varkappa} {"1D718} -\usv_set:nnn {it}{varphi} {"1D719} -\usv_set:nnn {it}{varrho} {"1D71A} -\usv_set:nnn {it}{varpi} {"1D71B} -\usv_set:nnn {bfit}{varTheta} {"1D72D} -\usv_set:nnn {bfit}{varepsilon}{"1D750} -\usv_set:nnn {bfit}{vartheta} {"1D751} -\usv_set:nnn {bfit}{varkappa} {"1D752} -\usv_set:nnn {bfit}{varphi} {"1D753} -\usv_set:nnn {bfit}{varrho} {"1D754} -\usv_set:nnn {bfit}{varpi} {"1D755} -\usv_set:nnn {bfsfup}{varTheta} {"1D767} -\usv_set:nnn {bfsfup}{varepsilon}{"1D78A} -\usv_set:nnn {bfsfup}{vartheta} {"1D78B} -\usv_set:nnn {bfsfup}{varkappa} {"1D78C} -\usv_set:nnn {bfsfup}{varphi} {"1D78D} -\usv_set:nnn {bfsfup}{varrho} {"1D78E} -\usv_set:nnn {bfsfup}{varpi} {"1D78F} -\usv_set:nnn {bfsfit}{varTheta} {"1D7A1} -\usv_set:nnn {bfsfit}{varepsilon}{"1D7C4} -\usv_set:nnn {bfsfit}{vartheta} {"1D7C5} -\usv_set:nnn {bfsfit}{varkappa} {"1D7C6} -\usv_set:nnn {bfsfit}{varphi} {"1D7C7} -\usv_set:nnn {bfsfit}{varrho} {"1D7C8} -\usv_set:nnn {bfsfit}{varpi} {"1D7C9} -\usv_set:nnn {up} {Nabla}{"02207} -\usv_set:nnn {it} {Nabla}{"1D6FB} -\usv_set:nnn {bfup} {Nabla}{"1D6C1} -\usv_set:nnn {bfit} {Nabla}{"1D735} -\usv_set:nnn {bfsfup}{Nabla}{"1D76F} -\usv_set:nnn {bfsfit}{Nabla}{"1D7A9} -\usv_set:nnn {up} {partial}{"02202} -\usv_set:nnn {it} {partial}{"1D715} -\usv_set:nnn {bfup} {partial}{"1D6DB} -\usv_set:nnn {bfit} {partial}{"1D74F} -\usv_set:nnn {bfsfup}{partial}{"1D789} -\usv_set:nnn {bfsfit}{partial}{"1D7C3} -\usv_set:nnn {up}{B}{`\B} -\usv_set:nnn {up}{C}{`\C} -\usv_set:nnn {up}{D}{`\D} -\usv_set:nnn {up}{E}{`\E} -\usv_set:nnn {up}{F}{`\F} -\usv_set:nnn {up}{H}{`\H} -\usv_set:nnn {up}{I}{`\I} -\usv_set:nnn {up}{L}{`\L} -\usv_set:nnn {up}{M}{`\M} -\usv_set:nnn {up}{N}{`\N} -\usv_set:nnn {up}{P}{`\P} -\usv_set:nnn {up}{Q}{`\Q} -\usv_set:nnn {up}{R}{`\R} -\usv_set:nnn {up}{Z}{`\Z} -\usv_set:nnn {it}{B}{"1D435} -\usv_set:nnn {it}{C}{"1D436} -\usv_set:nnn {it}{D}{"1D437} -\usv_set:nnn {it}{E}{"1D438} -\usv_set:nnn {it}{F}{"1D439} -\usv_set:nnn {it}{H}{"1D43B} -\usv_set:nnn {it}{I}{"1D43C} -\usv_set:nnn {it}{L}{"1D43F} -\usv_set:nnn {it}{M}{"1D440} -\usv_set:nnn {it}{N}{"1D441} -\usv_set:nnn {it}{P}{"1D443} -\usv_set:nnn {it}{Q}{"1D444} -\usv_set:nnn {it}{R}{"1D445} -\usv_set:nnn {it}{Z}{"1D44D} -\usv_set:nnn {up}{d}{`\d} -\usv_set:nnn {up}{e}{`\e} -\usv_set:nnn {up}{g}{`\g} -\usv_set:nnn {up}{h}{`\h} -\usv_set:nnn {up}{i}{`\i} -\usv_set:nnn {up}{j}{`\j} -\usv_set:nnn {up}{o}{`\o} -\usv_set:nnn {it}{d}{"1D451} -\usv_set:nnn {it}{e}{"1D452} -\usv_set:nnn {it}{g}{"1D454} -\usv_set:nnn {it}{h}{"0210E} -\usv_set:nnn {it}{i}{"1D456} -\usv_set:nnn {it}{j}{"1D457} -\usv_set:nnn {it}{o}{"1D45C} -\usv_set:nnn {bb} {h}{"1D559} -\usv_set:nnn {tt} {h}{"1D691} -\usv_set:nnn {scr} {h}{"1D4BD} -\usv_set:nnn {frak} {h}{"1D525} -\usv_set:nnn {bfup} {h}{"1D421} -\usv_set:nnn {bfit} {h}{"1D489} -\usv_set:nnn {sfup} {h}{"1D5C1} -\usv_set:nnn {sfit} {h}{"1D629} -\usv_set:nnn {bffrak}{h}{"1D58D} -\usv_set:nnn {bfscr} {h}{"1D4F1} -\usv_set:nnn {bfsfup}{h}{"1D5F5} -\usv_set:nnn {bfsfit}{h}{"1D65D} -\usv_set:nnn {up}{dotlessi}{"00131} -\usv_set:nnn {up}{dotlessj}{"00237} -\usv_set:nnn {it}{dotlessi}{"1D6A4} -\usv_set:nnn {it}{dotlessj}{"1D6A5} -\usv_set:nnn {bb}{C}{"2102} -\usv_set:nnn {bb}{H}{"210D} -\usv_set:nnn {bb}{N}{"2115} -\usv_set:nnn {bb}{P}{"2119} -\usv_set:nnn {bb}{Q}{"211A} -\usv_set:nnn {bb}{R}{"211D} -\usv_set:nnn {bb}{Z}{"2124} -\usv_set:nnn {up}{Pi} {"003A0} -\usv_set:nnn {up}{pi} {"003C0} -\usv_set:nnn {up}{Gamma} {"00393} -\usv_set:nnn {up}{gamma} {"003B3} -\usv_set:nnn {up}{summation}{"02211} -\usv_set:nnn {it}{Pi} {"1D6F1} -\usv_set:nnn {it}{pi} {"1D70B} -\usv_set:nnn {it}{Gamma} {"1D6E4} -\usv_set:nnn {it}{gamma} {"1D6FE} -\usv_set:nnn {bb}{Pi} {"0213F} -\usv_set:nnn {bb}{pi} {"0213C} -\usv_set:nnn {bb}{Gamma} {"0213E} -\usv_set:nnn {bb}{gamma} {"0213D} -\usv_set:nnn {bb}{summation}{"02140} -\usv_set:nnn {bbit}{D}{"2145} -\usv_set:nnn {bbit}{d}{"2146} -\usv_set:nnn {bbit}{e}{"2147} -\usv_set:nnn {bbit}{i}{"2148} -\usv_set:nnn {bbit}{j}{"2149} -\usv_set:nnn {scr}{B}{"212C} -\usv_set:nnn {scr}{E}{"2130} -\usv_set:nnn {scr}{F}{"2131} -\usv_set:nnn {scr}{H}{"210B} -\usv_set:nnn {scr}{I}{"2110} -\usv_set:nnn {scr}{L}{"2112} -\usv_set:nnn {scr}{M}{"2133} -\usv_set:nnn {scr}{R}{"211B} -\usv_set:nnn {scr}{e}{"212F} -\usv_set:nnn {scr}{g}{"210A} -\usv_set:nnn {scr}{o}{"2134} -\usv_set:nnn {cal}{B}{"212C} -\usv_set:nnn {cal}{E}{"2130} -\usv_set:nnn {cal}{F}{"2131} -\usv_set:nnn {cal}{H}{"210B} -\usv_set:nnn {cal}{I}{"2110} -\usv_set:nnn {cal}{L}{"2112} -\usv_set:nnn {cal}{M}{"2133} -\usv_set:nnn {cal}{R}{"211B} -\usv_set:nnn {frak}{C}{"212D} -\usv_set:nnn {frak}{H}{"210C} -\usv_set:nnn {frak}{I}{"2111} -\usv_set:nnn {frak}{R}{"211C} -\usv_set:nnn {frak}{Z}{"2128} \tl_map_inline:nn { \new@mathgroup\cdp@list\cdp@elt\DeclareMathSizes - \@DeclareMathSizes\newmathalphabet\newmathalphabet@@\newmathalphabet@@@ + \@DeclareMathSizes\newmathalphabet\newmathalphabet__um\newmathalphabet__um@ \DeclareMathVersion\define@mathalphabet\define@mathgroup\addtoversion \version@list\version@elt\alpha@list\alpha@elt \restore@mathversion\init@restore@version\dorestore@version\process@table @@ -265,221 +31,355 @@ \DeclareMathAccent\set@mathaccent\DeclareMathSymbol\set@mathchar \set@mathsymbol\DeclareMathDelimiter\@xxDeclareMathDelimiter \@DeclareMathDelimiter\@xDeclareMathDelimiter\set@mathdelimiter - \set@@mathdelimiter\DeclareMathRadical\mathchar@type + \set__ummathdelimiter\DeclareMathRadical\mathchar@type \DeclareSymbolFontAlphabet\DeclareSymbolFontAlphabet@ } { \tl_remove_once:Nn \@preamblecmds {\do#1} } -\cs_set:Nn \um_set_mathsymbol:nNNn +\cs_set:Nn \__um_set_mathsymbol:nNNn { - \tl_case:Nnn #3 { - \mathop { \um_set_big_operator:nnn {#1} {#2} {#4} } - \mathopen { \um_set_math_open:nnn {#1} {#2} {#4} } - \mathclose { \um_set_math_close:nnn {#1} {#2} {#4} } - \mathfence { \um_set_math_fence:nnnn {#1} {#2} {#3} {#4} } + \int_compare:nT { \char_value_catcode:n {#4} == 11 } + { \char_set_catcode_other:n {#4} } + + \tl_case:Nn #3 + { + \mathord { \__um_set_mathcode:nnn {#4} {#3} {#1} } + \mathalpha { \__um_set_mathcode:nnn {#4} {#3} {#1} } + \mathbin { \__um_set_mathcode:nnn {#4} {#3} {#1} } + \mathrel { \__um_set_mathcode:nnn {#4} {#3} {#1} } + \mathpunct { \__um_set_mathcode:nnn {#4} {#3} {#1} } + \mathop { \__um_set_big_operator:nnn {#1} {#2} {#4} } + \mathopen { \__um_set_math_open:nnn {#1} {#2} {#4} } + \mathclose { \__um_set_math_close:nnn {#1} {#2} {#4} } + \mathfence { \__um_set_math_fence:nnnn {#1} {#2} {#3} {#4} } \mathaccent - { \cs_gset_protected_nopar:Npx #2 { \um_accent:nnn {fixed} {#1} {#4} } } + { \__um_set_math_accent:Nnnn #2 {fixed} {#1} {#4} } \mathbotaccent - { \cs_gset_protected_nopar:Npx #2 { \um_accent:nnn {bottom~ fixed} {#1} {#4} } } + { \__um_set_math_accent:Nnnn #2 {bottom~ fixed} {#1} {#4} } + \mathaccentwide + { \__um_set_math_accent:Nnnn #2 {} {#1} {#4} } + \mathbotaccentwide + { \__um_set_math_accent:Nnnn #2 {bottom} {#1} {#4} } \mathover - { - \cs_set_protected_nopar:Npx #2 ##1 - { \mathop { \um_accent:nnn {} {#1} {#4} {##1} } \limits } - } + { \__um_set_math_overunder:Nnnn #2 {} {#1} {#4} } \mathunder - { - \cs_set_protected_nopar:Npx #2 ##1 - { \mathop { \um_accent:nnn {bottom} {#1} {#4} {##1} } \limits } - } - }{ - \um_set_mathcode:nnn {#4} {#3} {#1} - } + { \__um_set_math_overunder:Nnnn #2 {bottom} {#1} {#4} } + } } \edef\mathfence{\string\mathfence} \edef\mathover{\string\mathover} \edef\mathunder{\string\mathunder} \edef\mathbotaccent{\string\mathbotaccent} -\cs_new:Nn \um_set_big_operator:nnn +\edef\mathaccentwide{\string\mathaccentwide} +\edef\mathbotaccentwide{\string\mathbotaccentwide} +\cs_new:Nn \__um_set_big_operator:nnn { \group_begin: \char_set_catcode_active:n {#3} - \char_gmake_mathactive:n {#3} - \um_active_char_set:wc #3 \q_nil { \cs_to_str:N #2 _sym } + \__um_char_gmake_mathactive:n {#3} + \__um_active_char_set:wc #3 \q_nil { \cs_to_str:N #2 _sym } \group_end: - \um_set_mathchar:cNnn {\cs_to_str:N #2 op} \mathop {#1} {#3} + + \__um_set_mathchar:cNnn {\cs_to_str:N #2 op} \mathop {#1} {#3} + \cs_gset:cpx { \cs_to_str:N #2 _sym } { \exp_not:c { \cs_to_str:N #2 op } - \exp_not:n { \tl_if_in:NnT \l_um_nolimits_tl {#2} \nolimits } + \exp_not:n { \tl_if_in:NnT \l__um_nolimits_tl {#2} \nolimits } } } -\cs_new:Nn \um_set_math_open:nnn +\cs_new:Nn \__um_set_math_open:nnn { - \tl_if_in:NnTF \l_um_radicals_tl {#2} + \tl_if_in:NnTF \l__um_radicals_tl {#2} { \cs_gset_protected_nopar:cpx {\cs_to_str:N #2 sign} - { \um_radical:nn {#1} {#3} } - \tl_set:cn {l_um_radical_\cs_to_str:N #2_tl} {\use:c{sym #1}~ #3} + { \__um_radical:nn {#1} {#3} } + \tl_set:cn {l__um_radical_\cs_to_str:N #2_tl} {\use:c{sym #1}~ #3} } { - \um_set_delcode:nnn {#1} {#3} {#3} - \um_set_mathcode:nnn {#3} \mathopen {#1} + \__um_set_delcode:nnn {#1} {#3} {#3} + \__um_set_mathcode:nnn {#3} \mathopen {#1} \cs_gset_protected_nopar:Npx #2 - { \um_delimiter:Nnn \mathopen {#1} {#3} } + { \__um_delimiter:Nnn \mathopen {#1} {#3} } } } -\cs_new:Nn \um_set_math_close:nnn +\cs_new:Nn \__um_set_math_close:nnn { - \um_set_delcode:nnn {#1} {#3} {#3} - \um_set_mathcode:nnn {#3} \mathclose {#1} + \__um_set_delcode:nnn {#1} {#3} {#3} + \__um_set_mathcode:nnn {#3} \mathclose {#1} \cs_gset_protected_nopar:Npx #2 - { \um_delimiter:Nnn \mathclose {#1} {#3} } + { \__um_delimiter:Nnn \mathclose {#1} {#3} } } -\cs_new:Nn \um_set_math_fence:nnnn +\cs_new:Nn \__um_set_math_fence:nnnn { - \um_set_mathcode:nnn {#4} {#3} {#1} - \um_set_delcode:nnn {#1} {#4} {#4} + \__um_set_mathcode:nnn {#4} {#3} {#1} + \__um_set_delcode:nnn {#1} {#4} {#4} \cs_gset_protected_nopar:cpx {l \cs_to_str:N #2} - { \um_delimiter:Nnn \mathopen {#1} {#4} } + { \__um_delimiter:Nnn \mathopen {#1} {#4} } \cs_gset_protected_nopar:cpx {r \cs_to_str:N #2} - { \um_delimiter:Nnn \mathclose {#1} {#4} } + { \__um_delimiter:Nnn \mathclose {#1} {#4} } + } +\cs_new:Nn \__um_set_math_accent:Nnnn + { + \cs_gset_protected_nopar:Npx #1 + { \__um_accent:nnn {#2} {#3} {#4} } + } +\cs_new:Nn \__um_set_math_overunder:Nnnn + { + \cs_gset_protected_nopar:Npx #1 ##1 + { + \mathop + { \__um_accent:nnn {#2} {#3} {#4} {##1} } + \limits + } + } +\keys_define:nn {__um_mathface} + { + version .code:n = + { \tl_set:Nn \l__um_mversion_tl {#1} } + } + +\DeclareDocumentCommand \setmathfontface { m O{} m O{} } + { + \tl_clear:N \l__um_mversion_tl + + \keys_set_known:nnN {__um_mathface} {#2,#4} \l__um_keyval_clist + \exp_args:Nnx \fontspec_set_family:Nxn \l__um_tmpa_tl + { ItalicFont={}, BoldFont={}, \exp_not:V \l__um_keyval_clist } {#3} + + \tl_if_empty:NT \l__um_mversion_tl + { + \tl_set:Nn \l__um_mversion_tl {normal} + \DeclareMathAlphabet #1 {\g_fontspec_encoding_tl} {\l__um_tmpa_tl} {\mddefault} {\updefault} + } + \SetMathAlphabet #1 {\l__um_mversion_tl} {\g_fontspec_encoding_tl} {\l__um_tmpa_tl} {\mddefault} {\updefault} + + % integrate with fontspec's \setmathrm etc: + \tl_case:Nn #1 + { + \mathrm { \cs_set_eq:NN \g__fontspec_mathrm_tl \l__um_tmpa_tl } + \mathsf { \cs_set_eq:NN \g__fontspec_mathsf_tl \l__um_tmpa_tl } + \mathtt { \cs_set_eq:NN \g__fontspec_mathtt_tl \l__um_tmpa_tl } + } + } + +\@onlypreamble \setmathfontface +\DeclareDocumentCommand \setoperatorfont {m} + { \tl_set:Nn \g__um_operator_mathfont_tl {#1} } +\setoperatorfont{\mathrm} +\cs_generate_variant:Nn \tl_if_eq:nnT {o} +\cs_set:Nn \__fontspec_setmainfont:nn + { + \fontspec_set_family:Nnn \rmdefault {#1}{#2} + \tl_if_eq:onT {\g__fontspec_mathrm_tl} {\rmdefault} + { + \fontspec_set_family:Nnn \g__fontspec_mathrm_tl {Renderer=Basic,#1} {#2} + \SetMathAlphabet\mathrm{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\mddefault\updefault + \SetMathAlphabet\mathit{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\mddefault\itdefault + \SetMathAlphabet\mathbf{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\bfdefault\updefault + } + \normalfont + \ignorespaces + } + +\cs_set:Nn \__fontspec_setsansfont:nn + { + \fontspec_set_family:Nnn \sfdefault {#1}{#2} + \tl_if_eq:onT {\g__fontspec_mathsf_tl} {\sfdefault} + { + \fontspec_set_family:Nnn \g__fontspec_mathsf_tl {Renderer=Basic,#1} {#2} + \SetMathAlphabet\mathsf{normal}\g_fontspec_encoding_tl\g__fontspec_mathsf_tl\mddefault\updefault + \SetMathAlphabet\mathsf{bold} \g_fontspec_encoding_tl\g__fontspec_mathsf_tl\bfdefault\updefault + } + \normalfont + \ignorespaces + } + +\cs_set:Nn \__fontspec_setmonofont:nn + { + \fontspec_set_family:Nnn \ttdefault {#1}{#2} + \tl_if_eq:onT {\g__fontspec_mathtt_tl} {\ttdefault} + { + \fontspec_set_family:Nnn \g__fontspec_mathtt_tl {Renderer=Basic,#1} {#2} + \SetMathAlphabet\mathtt{normal}\g_fontspec_encoding_tl\g__fontspec_mathtt_tl\mddefault\updefault + \SetMathAlphabet\mathtt{bold} \g_fontspec_encoding_tl\g__fontspec_mathtt_tl\bfdefault\updefault + } + \normalfont + \ignorespaces + } +\cs_set:Nn \__fontspec_setmathrm:nn + { + \fontspec_set_family:Nnn \g__fontspec_mathrm_tl {Renderer=Basic,#1} {#2} + \SetMathAlphabet\mathrm{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\mddefault\updefault + \SetMathAlphabet\mathit{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\mddefault\itdefault + \SetMathAlphabet\mathbf{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\bfdefault\updefault + } +\cs_set:Nn \__fontspec_setboldmathrm:nn + { + \fontspec_set_family:Nnn \g__fontspec_bfmathrm_tl {Renderer=Basic,#1} {#2} + \SetMathAlphabet\mathrm{bold}\g_fontspec_encoding_tl\g__fontspec_bfmathrm_tl\mddefault\updefault + \SetMathAlphabet\mathbf{bold}\g_fontspec_encoding_tl\g__fontspec_bfmathrm_tl\bfdefault\updefault + \SetMathAlphabet\mathit{bold}\g_fontspec_encoding_tl\g__fontspec_bfmathrm_tl\mddefault\itdefault + } +\cs_set:Nn \__fontspec_setmathsf:nn + { + \fontspec_set_family:Nnn \g__fontspec_mathsf_tl {Renderer=Basic,#1} {#2} + \SetMathAlphabet\mathsf{normal}\g_fontspec_encoding_tl\g__fontspec_mathsf_tl\mddefault\updefault + \SetMathAlphabet\mathsf{bold} \g_fontspec_encoding_tl\g__fontspec_mathsf_tl\bfdefault\updefault } -\DeclareDocumentCommand \setmathfont { O{} m } { - \tl_set:Nn \l_um_fontname_tl {#2} - \um_init: +\cs_set:Nn \__fontspec_setmathtt:nn + { + \fontspec_set_family:Nnn \g__fontspec_mathtt_tl {Renderer=Basic,#1} {#2} + \SetMathAlphabet\mathtt{normal}\g_fontspec_encoding_tl\g__fontspec_mathtt_tl\mddefault\updefault + \SetMathAlphabet\mathtt{bold} \g_fontspec_encoding_tl\g__fontspec_mathtt_tl\bfdefault\updefault + } +\DeclareDocumentCommand \setmathfont { O{} m O{} } + { + \tl_set:Nn \l__um_fontname_tl {#2} + \__um_init: \cs_if_exist:cF { S@ \f@size } { \calculate@math@sizes } \csname S@\f@size\endcsname - \keys_set_known:nnN {unicode-math} {#1} \l_um_unknown_keys_clist - \bool_if:NT \l_um_init_bool { \um_log:n {default-math-font} } - \um_fontspec_select_font: - \cs_if_exist:cF { sym \um_symfont_tl } + \keys_set_known:nnN {unicode-math} {#1,#3} \l__um_unknown_keys_clist + \bool_if:NT \l__um_init_bool { \__um_log:n {default-math-font} } + + \csname TIC\endcsname + \__um_fontspec_select_font: + \csname TOC\endcsname + \bool_if:nT { \l__um_ot_math_bool && !\g__um_mainfont_already_set_bool } + { + \__um_declare_math_sizes: + \__um_fontspec_select_font: + } + \cs_if_exist:cF { sym \__um_symfont_tl } { - \DeclareSymbolFont{\um_symfont_tl} - {\encodingdefault}{\l_um_family_tl}{\mddefault}{\updefault} + \DeclareSymbolFont{\__um_symfont_tl} + {\encodingdefault}{\l__um_family_tl}{\mddefault}{\updefault} } - \SetSymbolFont{\um_symfont_tl}{\l_um_mversion_tl} - {\encodingdefault}{\l_um_family_tl}{\mddefault}{\updefault} - \tl_set:Nn \l_um_tmpa_tl {normal} - \tl_if_eq:NNT \l_um_mversion_tl \l_um_tmpa_tl + \SetSymbolFont{\__um_symfont_tl}{\l__um_mversion_tl} + {\encodingdefault}{\l__um_family_tl}{\mddefault}{\updefault} + \tl_set:Nn \l__um_tmpa_tl {normal} + \tl_if_eq:NNT \l__um_mversion_tl \l__um_tmpa_tl { - \SetSymbolFont{\um_symfont_tl}{bold} - {\encodingdefault}{\l_um_family_tl}{\bfdefault}{\updefault} + \SetSymbolFont{\__um_symfont_tl}{bold} + {\encodingdefault}{\l__um_family_tl}{\bfdefault}{\updefault} } - \bool_if:nT { \l_um_ot_math_bool && !\g_um_mainfont_already_set_bool } - { - \bool_set_true:N \g_um_mainfont_already_set_bool - \um_declare_math_sizes: - \um_setup_legacy_fam_two: - \um_setup_legacy_fam_three: - } - \um_input_math_symbol_table: - \um_remap_symbols: - \um_setup_mathactives: - \um_setup_accents: - \um_setup_delcodes: - \um_setup_alphabets: - \um_setup_negations: + \bool_if:nT { \l__um_ot_math_bool && !\g__um_mainfont_already_set_bool } + { + \bool_set_true:N \g__um_mainfont_already_set_bool + \__um_setup_legacy_fam_two: + \__um_setup_legacy_fam_three: + } + \csname TIC\endcsname + \__um_input_math_symbol_table: + \csname TOC\endcsname + \__um_remap_symbols: + \__um_setup_mathactives: + \__um_setup_delcodes: + \csname TIC\endcsname + \__um_setup_alphabets: + \csname TOC\endcsname + \__um_setup_negations: \ignorespaces -} + } \cs_set_eq:NN \resetmathfont \setmathfont -\cs_new:Nn \um_init: +\cs_new:Nn \__um_init: { - \bool_set_true:N \l_um_ot_math_bool + \bool_set_true:N \l__um_ot_math_bool \cs_set_eq:NN \glb@currsize \scan_stop: - \bool_set_true:N \l_um_init_bool - \seq_clear:N \l_um_char_range_seq - \clist_clear:N \l_um_char_num_range_clist - \seq_clear:N \l_um_mathalph_seq - \seq_clear:N \l_um_missing_alph_seq - \tl_set:Nn \l_um_mversion_tl {normal} - \tl_set:Nn \um_symfont_tl {operators} - \cs_set_eq:NN \_um_sym:nnn \um_process_symbol_noparse:nnn - \cs_set_eq:NN \um_set_mathalphabet_char:Nnn \um_mathmap_noparse:Nnn - \cs_set_eq:NN \um_remap_symbol:nnn \um_remap_symbol_noparse:nnn - \cs_set_eq:NN \um_maybe_init_alphabet:n \um_init_alphabet:n - \cs_set_eq:NN \um_map_char_single:nn \um_map_char_noparse:nn - \cs_set_eq:NN \um_assign_delcode:nn \um_assign_delcode_noparse:nn - \cs_set_eq:NN \um_make_mathactive:nNN \um_make_mathactive_noparse:nNN - \tl_set:Nn \l_um_script_features_tl {Style=MathScript} - \tl_set:Nn \l_um_sscript_features_tl {Style=MathScriptScript} - \tl_set_eq:NN \l_um_script_font_tl \l_um_fontname_tl - \tl_set_eq:NN \l_um_sscript_font_tl \l_um_fontname_tl - } -\cs_new:Nn \um_declare_math_sizes: + \bool_set_true:N \l__um_init_bool + \seq_clear:N \l__um_char_range_seq + \clist_clear:N \l__um_char_nrange_clist + \seq_clear:N \l__um_mathalph_seq + \seq_clear:N \l__um_missing_alph_seq + \tl_set:Nn \l__um_mversion_tl {normal} + \tl_set:Nn \__um_symfont_tl {operators} + \cs_set_eq:NN \__um_sym:nnn \__um_process_symbol_noparse:nnn + \cs_set_eq:NN \__um_set_mathalphabet_char:nnn \__um_mathmap_noparse:nnn + \cs_set_eq:NN \__um_remap_symbol:nnn \__um_remap_symbol_noparse:nnn + \cs_set_eq:NN \__um_maybe_init_alphabet:n \__um_init_alphabet:n + \cs_set_eq:NN \__um_map_char_single:nn \__um_map_char_noparse:nn + \cs_set_eq:NN \__um_assign_delcode:nn \__um_assign_delcode_noparse:nn + \cs_set_eq:NN \__um_make_mathactive:nNN \__um_make_mathactive_noparse:nNN + \tl_set:Nn \l__um_script_features_tl {Style=MathScript} + \tl_set:Nn \l__um_sscript_features_tl {Style=MathScriptScript} + \tl_set_eq:NN \l__um_script_font_tl \l__um_fontname_tl + \tl_set_eq:NN \l__um_sscript_font_tl \l__um_fontname_tl + } +\cs_new:Nn \__um_declare_math_sizes: { - \dim_compare:nF { \fontdimen 10 \l_um_font == 0pt } + \dim_compare:nF { \fontdimen 10 \l__um_font == 0pt } { \DeclareMathSizes { \f@size } { \f@size } - { \um_fontdimen_to_scale:nn {10} {\l_um_font} } - { \um_fontdimen_to_scale:nn {11} {\l_um_font} } + { \__um_fontdimen_to_scale:nn {10} {\l__um_font} } + { \__um_fontdimen_to_scale:nn {11} {\l__um_font} } } } -\cs_new:Nn \um_setup_legacy_fam_two: +\cs_new:Nn \__um_setup_legacy_fam_two: { - \fontspec_set_family:Nxn \l_um_family_tl + \fontspec_set_family:Nxn \l__um_family_tl { - \l_um_font_keyval_tl, + \l__um_font_keyval_tl, Scale=1.00001, FontAdjustment = { - \fontdimen8\font= \um_get_fontparam:nn {43} {FractionNumeratorDisplayStyleShiftUp}\relax - \fontdimen9\font= \um_get_fontparam:nn {42} {FractionNumeratorShiftUp}\relax - \fontdimen10\font=\um_get_fontparam:nn {32} {StackTopShiftUp}\relax - \fontdimen11\font=\um_get_fontparam:nn {45} {FractionDenominatorDisplayStyleShiftDown}\relax - \fontdimen12\font=\um_get_fontparam:nn {44} {FractionDenominatorShiftDown}\relax - \fontdimen13\font=\um_get_fontparam:nn {21} {SuperscriptShiftUp}\relax - \fontdimen14\font=\um_get_fontparam:nn {21} {SuperscriptShiftUp}\relax - \fontdimen15\font=\um_get_fontparam:nn {22} {SuperscriptShiftUpCramped}\relax - \fontdimen16\font=\um_get_fontparam:nn {18} {SubscriptShiftDown}\relax - \fontdimen17\font=\um_get_fontparam:nn {18} {SubscriptShiftDownWithSuperscript}\relax - \fontdimen18\font=\um_get_fontparam:nn {24} {SuperscriptBaselineDropMax}\relax - \fontdimen19\font=\um_get_fontparam:nn {20} {SubscriptBaselineDropMin}\relax + \fontdimen8\font= \__um_get_fontparam:nn {43} {FractionNumeratorDisplayStyleShiftUp}\relax + \fontdimen9\font= \__um_get_fontparam:nn {42} {FractionNumeratorShiftUp}\relax + \fontdimen10\font=\__um_get_fontparam:nn {32} {StackTopShiftUp}\relax + \fontdimen11\font=\__um_get_fontparam:nn {45} {FractionDenominatorDisplayStyleShiftDown}\relax + \fontdimen12\font=\__um_get_fontparam:nn {44} {FractionDenominatorShiftDown}\relax + \fontdimen13\font=\__um_get_fontparam:nn {21} {SuperscriptShiftUp}\relax + \fontdimen14\font=\__um_get_fontparam:nn {21} {SuperscriptShiftUp}\relax + \fontdimen15\font=\__um_get_fontparam:nn {22} {SuperscriptShiftUpCramped}\relax + \fontdimen16\font=\__um_get_fontparam:nn {18} {SubscriptShiftDown}\relax + \fontdimen17\font=\__um_get_fontparam:nn {18} {SubscriptShiftDownWithSuperscript}\relax + \fontdimen18\font=\__um_get_fontparam:nn {24} {SuperscriptBaselineDropMax}\relax + \fontdimen19\font=\__um_get_fontparam:nn {20} {SubscriptBaselineDropMin}\relax \fontdimen20\font=0pt\relax % delim1 = FractionDelimiterDisplaySize \fontdimen21\font=0pt\relax % delim2 = FractionDelimiterSize - \fontdimen22\font=\um_get_fontparam:nn {15} {AxisHeight}\relax + \fontdimen22\font=\__um_get_fontparam:nn {15} {AxisHeight}\relax } - } {\l_um_fontname_tl} - \SetSymbolFont{symbols}{\l_um_mversion_tl} - {\encodingdefault}{\l_um_family_tl}{\mddefault}{\updefault} + } {\l__um_fontname_tl} + \SetSymbolFont{symbols}{\l__um_mversion_tl} + {\encodingdefault}{\l__um_family_tl}{\mddefault}{\updefault} - \tl_set:Nn \l_um_tmpa_tl {normal} - \tl_if_eq:NNT \l_um_mversion_tl \l_um_tmpa_tl + \tl_set:Nn \l__um_tmpa_tl {normal} + \tl_if_eq:NNT \l__um_mversion_tl \l__um_tmpa_tl { \SetSymbolFont{symbols}{bold} - {\encodingdefault}{\l_um_family_tl}{\bfdefault}{\updefault} + {\encodingdefault}{\l__um_family_tl}{\bfdefault}{\updefault} } } -\cs_new:Nn \um_setup_legacy_fam_three: +\cs_new:Nn \__um_setup_legacy_fam_three: { - \fontspec_set_family:Nxn \l_um_family_tl + \fontspec_set_family:Nxn \l__um_family_tl { - \l_um_font_keyval_tl, + \l__um_font_keyval_tl, Scale=0.99999, FontAdjustment={ - \fontdimen8\font= \um_get_fontparam:nn {48} {FractionRuleThickness}\relax - \fontdimen9\font= \um_get_fontparam:nn {28} {UpperLimitGapMin}\relax - \fontdimen10\font=\um_get_fontparam:nn {30} {LowerLimitGapMin}\relax - \fontdimen11\font=\um_get_fontparam:nn {29} {UpperLimitBaselineRiseMin}\relax - \fontdimen12\font=\um_get_fontparam:nn {31} {LowerLimitBaselineDropMin}\relax + \fontdimen8\font= \__um_get_fontparam:nn {48} {FractionRuleThickness}\relax + \fontdimen9\font= \__um_get_fontparam:nn {28} {UpperLimitGapMin}\relax + \fontdimen10\font=\__um_get_fontparam:nn {30} {LowerLimitGapMin}\relax + \fontdimen11\font=\__um_get_fontparam:nn {29} {UpperLimitBaselineRiseMin}\relax + \fontdimen12\font=\__um_get_fontparam:nn {31} {LowerLimitBaselineDropMin}\relax \fontdimen13\font=0pt\relax } - } {\l_um_fontname_tl} - \SetSymbolFont{largesymbols}{\l_um_mversion_tl} - {\encodingdefault}{\l_um_family_tl}{\mddefault}{\updefault} + } {\l__um_fontname_tl} + \SetSymbolFont{largesymbols}{\l__um_mversion_tl} + {\encodingdefault}{\l__um_family_tl}{\mddefault}{\updefault} - \tl_set:Nn \l_um_tmpa_tl {normal} - \tl_if_eq:NNT \l_um_mversion_tl \l_um_tmpa_tl + \tl_set:Nn \l__um_tmpa_tl {normal} + \tl_if_eq:NNT \l__um_mversion_tl \l__um_tmpa_tl { \SetSymbolFont{largesymbols}{bold} - {\encodingdefault}{\l_um_family_tl}{\bfdefault}{\updefault} + {\encodingdefault}{\l__um_family_tl}{\bfdefault}{\updefault} } } -\cs_new:Nn \um_get_fontparam:nn - { \directlua{fontspec.mathfontdimen("l_um_font","#2")} } -\cs_new:Nn \um_fontspec_select_font: +\cs_new:Nn \__um_get_fontparam:nn + { \directlua{fontspec.mathfontdimen("l__um_font","#2")} } +\cs_new:Nn \__um_fontspec_select_font: { - \tl_set:Nx \l_um_font_keyval_tl { + \tl_set:Nx \l__um_font_keyval_tl { Renderer = Basic, BoldItalicFont = {}, ItalicFont = {}, Script = Math, @@ -490,131 +390,130 @@ } , { Size = \sf@size-\tf@size , - Font = \l_um_script_font_tl , - \l_um_script_features_tl + Font = \l__um_script_font_tl , + \l__um_script_features_tl } , { Size = -\sf@size , - Font = \l_um_sscript_font_tl , - \l_um_sscript_features_tl + Font = \l__um_sscript_font_tl , + \l__um_sscript_features_tl } } , - \l_um_unknown_keys_clist + \l__um_unknown_keys_clist } - \fontspec_set_fontface:NNxn \l_um_font \l_um_family_tl - {\l_um_font_keyval_tl} {\l_um_fontname_tl} + \fontspec_set_fontface:NNxn \l__um_font \l__um_family_tl + {\l__um_font_keyval_tl} {\l__um_fontname_tl} \group_begin: - \fontfamily{\l_um_family_tl}\selectfont - \fontspec_if_script:nF {math} {\bool_gset_false:N \l_um_ot_math_bool} + \fontfamily{\l__um_family_tl}\selectfont + \fontspec_if_script:nF {math} {\bool_gset_false:N \l__um_ot_math_bool} \group_end: } -\cs_set:Nn \um_process_symbol_noparse:nnn +\cs_set:Nn \__um_process_symbol_noparse:nnn { - \um_set_mathsymbol:nNNn {\um_symfont_tl} #2#3{#1} + \__um_set_mathsymbol:nNNn {\__um_symfont_tl} #2 #3 {#1} } -\cs_set:Nn \um_process_symbol_parse:nnn +\cs_set:Nn \__um_process_symbol_parse:nnn { - \um_if_char_spec:nNNT{#1}{#2}{#3} + \__um_if_char_spec:nNNT {#1} {#2} {#3} { - \um_process_symbol_noparse:nnn {#1}{#2}{#3} + \__um_process_symbol_noparse:nnn {#1} {#2} {#3} } } -\cs_new:Npn \um_remap_symbols: +\cs_new:Npn \__um_remap_symbols: { - \um_remap_symbol:nnn{`\-}{\mathbin}{"02212}% hyphen to minus - \um_remap_symbol:nnn{`\*}{\mathbin}{"02217}% text asterisk to "centred asterisk" - \bool_if:NF \g_um_literal_colon_bool + \__um_remap_symbol:nnn{`\-}{\mathbin}{"02212}% hyphen to minus + \__um_remap_symbol:nnn{`\*}{\mathbin}{"02217}% text asterisk to "centred asterisk" + \bool_if:NF \g__um_literal_colon_bool { - \um_remap_symbol:nnn{`\:}{\mathrel}{"02236}% colon to ratio (i.e., punct to rel) + \__um_remap_symbol:nnn{`\:}{\mathrel}{"02236}% colon to ratio (i.e., punct to rel) } } -\cs_new:Nn \um_remap_symbol_parse:nnn +\cs_new:Nn \__um_remap_symbol_parse:nnn { - \um_if_char_spec:nNNT {#3} {\@nil} {#2} - { - \um_remap_symbol_noparse:nnn {#1} {#2} {#3} - } + \__um_if_char_spec:nNNT {#3} {\@nil} {#2} + { \__um_remap_symbol_noparse:nnn {#1} {#2} {#3} } } -\cs_new:Nn \um_remap_symbol_noparse:nnn +\cs_new:Nn \__um_remap_symbol_noparse:nnn { \clist_map_inline:nn {#1} - { - \um_set_mathcode:nnnn {##1} {#2} {\um_symfont_tl} {#3} - } + { \__um_set_mathcode:nnnn {##1} {#2} {\__um_symfont_tl} {#3} } } -\cs_new:Npn \um_setup_mathactives: +\cs_new:Npn \__um_setup_mathactives: { - \um_make_mathactive:nNN {"2032} \um_prime_single_mchar \mathord - \um_make_mathactive:nNN {"2033} \um_prime_double_mchar \mathord - \um_make_mathactive:nNN {"2034} \um_prime_triple_mchar \mathord - \um_make_mathactive:nNN {"2057} \um_prime_quad_mchar \mathord - \um_make_mathactive:nNN {"2035} \um_backprime_single_mchar \mathord - \um_make_mathactive:nNN {"2036} \um_backprime_double_mchar \mathord - \um_make_mathactive:nNN {"2037} \um_backprime_triple_mchar \mathord - \um_make_mathactive:nNN {`\'} \mathstraightquote \mathord - \um_make_mathactive:nNN {`\`} \mathbacktick \mathord + \__um_make_mathactive:nNN {"2032} \__um_prime_single_mchar \mathord + \__um_make_mathactive:nNN {"2033} \__um_prime_double_mchar \mathord + \__um_make_mathactive:nNN {"2034} \__um_prime_triple_mchar \mathord + \__um_make_mathactive:nNN {"2057} \__um_prime_quad_mchar \mathord + \__um_make_mathactive:nNN {"2035} \__um_backprime_single_mchar \mathord + \__um_make_mathactive:nNN {"2036} \__um_backprime_double_mchar \mathord + \__um_make_mathactive:nNN {"2037} \__um_backprime_triple_mchar \mathord + \__um_make_mathactive:nNN {`\'} \mathstraightquote \mathord + \__um_make_mathactive:nNN {`\`} \mathbacktick \mathord } -\cs_new:Nn \um_make_mathactive_parse:nNN +\cs_new:Nn \__um_make_mathactive_parse:nNN { - \um_if_char_spec:nNNT {#1} #2 #3 - { \um_make_mathactive_noparse:nNN {#1} #2 #3 } + \__um_if_char_spec:nNNT {#1} #2 #3 + { \__um_make_mathactive_noparse:nNN {#1} #2 #3 } } -\cs_new:Nn \um_make_mathactive_noparse:nNN +\cs_new:Nn \__um_make_mathactive_noparse:nNN { - \um_set_mathchar:NNnn #2 #3 {\um_symfont_tl} {#1} - \char_gmake_mathactive:n {#1} + \__um_set_mathchar:NNnn #2 #3 {\__um_symfont_tl} {#1} + \__um_char_gmake_mathactive:n {#1} } -\cs_new:Nn \um_assign_delcode_noparse:nn - { - \um_set_delcode:nnn \um_symfont_tl {#1} {#2} - } -\cs_new:Nn \um_assign_delcode_parse:nn - { - \um_if_char_spec:nNNT {#2} {\@nil} {\@nil} - { - \um_assign_delcode_noparse:nn {#1} {#2} - } - } -\cs_new:Nn \um_assign_delcode:n { \um_assign_delcode:nn {#1} {#1} } -\cs_new:Npn \um_setup_delcodes: - { - \um_assign_delcode:nn {`\.} {\c_zero} % ensure \left. and \right. work - \um_assign_delcode:nn {`\/} {\g_um_slash_delimiter_usv} - \um_assign_delcode:nn {"2044} {\g_um_slash_delimiter_usv} % fracslash - \um_assign_delcode:nn {"2215} {\g_um_slash_delimiter_usv} % divslash - \um_assign_delcode:n {"005C} % backslash - \um_assign_delcode:nn {`\<} {"27E8} % angle brackets with ascii notation - \um_assign_delcode:nn {`\>} {"27E9} % angle brackets with ascii notation - \um_assign_delcode:n {"2191} % up arrow - \um_assign_delcode:n {"2193} % down arrow - \um_assign_delcode:n {"2195} % updown arrow - \um_assign_delcode:n {"219F} % up arrow twohead - \um_assign_delcode:n {"21A1} % down arrow twohead - \um_assign_delcode:n {"21A5} % up arrow from bar - \um_assign_delcode:n {"21A7} % down arrow from bar - \um_assign_delcode:n {"21A8} % updown arrow from bar - \um_assign_delcode:n {"21BE} % up harpoon right - \um_assign_delcode:n {"21BF} % up harpoon left - \um_assign_delcode:n {"21C2} % down harpoon right - \um_assign_delcode:n {"21C3} % down harpoon left - \um_assign_delcode:n {"21C5} % arrows up down - \um_assign_delcode:n {"21F5} % arrows down up - \um_assign_delcode:n {"21C8} % arrows up up - \um_assign_delcode:n {"21CA} % arrows down down - \um_assign_delcode:n {"21D1} % double up arrow - \um_assign_delcode:n {"21D3} % double down arrow - \um_assign_delcode:n {"21D5} % double updown arrow - \um_assign_delcode:n {"21DE} % up arrow double stroke - \um_assign_delcode:n {"21DF} % down arrow double stroke - \um_assign_delcode:n {"21E1} % up arrow dashed - \um_assign_delcode:n {"21E3} % down arrow dashed - \um_assign_delcode:n {"21E7} % up white arrow - \um_assign_delcode:n {"21E9} % down white arrow - \um_assign_delcode:n {"21EA} % up white arrow from bar - \um_assign_delcode:n {"21F3} % updown white arrow - } -\tl_new:N \l_um_nolimits_tl -\tl_set:Nn \l_um_nolimits_tl +\cs_new:Nn \__um_assign_delcode_noparse:nn + { + \__um_set_delcode:nnn \__um_symfont_tl {#1} {#2} + } +\cs_new:Nn \__um_assign_delcode_parse:nn + { + \__um_if_char_spec:nNNT {#2} {\@nil} {\@nil} + { + \__um_assign_delcode_noparse:nn {#1} {#2} + } + } +\cs_new:Nn \__um_assign_delcode:n { \__um_assign_delcode:nn {#1} {#1} } +\cs_new:Npn \__um_setup_delcodes: + { + % ensure \left. and \right. work: + \__um_set_delcode:nnn \__um_symfont_tl {`\.} {\c_zero} + % this is forcefully done to fix a bug -- indicates a larger problem! + + \__um_assign_delcode:nn {`\/} {\g__um_slash_delimiter_usv} + \__um_assign_delcode:nn {"2044} {\g__um_slash_delimiter_usv} % fracslash + \__um_assign_delcode:nn {"2215} {\g__um_slash_delimiter_usv} % divslash + \__um_assign_delcode:n {"005C} % backslash + \__um_assign_delcode:nn {`\<} {"27E8} % angle brackets with ascii notation + \__um_assign_delcode:nn {`\>} {"27E9} % angle brackets with ascii notation + \__um_assign_delcode:n {"2191} % up arrow + \__um_assign_delcode:n {"2193} % down arrow + \__um_assign_delcode:n {"2195} % updown arrow + \__um_assign_delcode:n {"219F} % up arrow twohead + \__um_assign_delcode:n {"21A1} % down arrow twohead + \__um_assign_delcode:n {"21A5} % up arrow from bar + \__um_assign_delcode:n {"21A7} % down arrow from bar + \__um_assign_delcode:n {"21A8} % updown arrow from bar + \__um_assign_delcode:n {"21BE} % up harpoon right + \__um_assign_delcode:n {"21BF} % up harpoon left + \__um_assign_delcode:n {"21C2} % down harpoon right + \__um_assign_delcode:n {"21C3} % down harpoon left + \__um_assign_delcode:n {"21C5} % arrows up down + \__um_assign_delcode:n {"21F5} % arrows down up + \__um_assign_delcode:n {"21C8} % arrows up up + \__um_assign_delcode:n {"21CA} % arrows down down + \__um_assign_delcode:n {"21D1} % double up arrow + \__um_assign_delcode:n {"21D3} % double down arrow + \__um_assign_delcode:n {"21D5} % double updown arrow + \__um_assign_delcode:n {"21DE} % up arrow double stroke + \__um_assign_delcode:n {"21DF} % down arrow double stroke + \__um_assign_delcode:n {"21E1} % up arrow dashed + \__um_assign_delcode:n {"21E3} % down arrow dashed + \__um_assign_delcode:n {"21E7} % up white arrow + \__um_assign_delcode:n {"21E9} % down white arrow + \__um_assign_delcode:n {"21EA} % up white arrow from bar + \__um_assign_delcode:n {"21F3} % updown white arrow + } +\tl_new:N \l__um_nolimits_tl +\tl_set:Nn \l__um_nolimits_tl { \int\iint\iiint\iiiint\oint\oiint\oiiint \intclockwise\varointclockwise\ointctrclockwise\sumint @@ -624,38 +523,38 @@ } \DeclareDocumentCommand \addnolimits {m} { - \tl_put_right:Nn \l_um_nolimits_tl {#1} + \tl_put_right:Nn \l__um_nolimits_tl {#1} } \DeclareDocumentCommand \removenolimits {m} { - \tl_remove_all:Nn \l_um_nolimits_tl {#1} + \tl_remove_all:Nn \l__um_nolimits_tl {#1} } -\tl_new:N \l_um_radicals_tl -\tl_set:Nn \l_um_radicals_tl {\sqrt \longdivision} -\cs_new_protected_nopar:Nn \um_new_cramped_style:N +\tl_new:N \l__um_radicals_tl +\tl_set:Nn \l__um_radicals_tl {\sqrt \longdivision} +\cs_new_protected_nopar:Nn \__um_new_cramped_style:N { \cs_new_eq:Nc #1 { luatex \cs_to_str:N #1 } } -\um_new_cramped_style:N \crampeddisplaystyle -\um_new_cramped_style:N \crampedtextstyle -\um_new_cramped_style:N \crampedscriptstyle -\um_new_cramped_style:N \crampedscriptscriptstyle -\cs_new_protected_nopar:Nn \um_font_param:nnnnn +\__um_new_cramped_style:N \crampeddisplaystyle +\__um_new_cramped_style:N \crampedtextstyle +\__um_new_cramped_style:N \crampedscriptstyle +\__um_new_cramped_style:N \crampedscriptscriptstyle +\cs_new_protected_nopar:Nn \__um_font_param:nnnnn { - \tl_set:Nn \l_um_tmpa_tl { #1 } - \tl_remove_all:Nn \l_um_tmpa_tl { _ } - \um_font_param_aux:ccc { um_ #1 :N } { um_set_ #1 :N } - { luatexUmath \l_um_tmpa_tl } + \tl_set:Nn \l__um_tmpa_tl { #1 } + \tl_remove_all:Nn \l__um_tmpa_tl { _ } + \__um_font_param_aux:ccc { __um_ #1 :N } { __um_set_ #1 :Nn } + { luatexUmath \l__um_tmpa_tl } } -\cs_new_protected_nopar:Nn \um_font_param:nnn +\cs_new_protected_nopar:Nn \__um_font_param:nnn { - \um_font_param:nnnnn { #1 } { #2 } { #2 } { #3 } { #3 } + \__um_font_param:nnnnn { #1 } { #2 } { #2 } { #3 } { #3 } } -\cs_new_protected_nopar:Nn \um_font_param:nn +\cs_new_protected_nopar:Nn \__um_font_param:nn { - \um_font_param:nnnnn { #1 } { #2 } { #2 } { #2 } { #2 } + \__um_font_param:nnnnn { #1 } { #2 } { #2 } { #2 } { #2 } } -\cs_new_protected_nopar:Nn \um_font_param:n - { \um_font_param:nnnnn { #1 } { 0 } { 0 } { 0 } { 0 } } -\cs_new_protected_nopar:Nn \um_font_param_aux:NNN +\cs_new_protected_nopar:Nn \__um_font_param:n + { \__um_font_param:nnnnn { #1 } { 0 } { 0 } { 0 } { 0 } } +\cs_new_protected_nopar:Nn \__um_font_param_aux:NNN { \cs_new_nopar:Npn #1 ##1 { @@ -666,202 +565,171 @@ #3 ##1 \dim_eval:n { ##2 } } } -\cs_generate_variant:Nn \um_font_param_aux:NNN { ccc } -\um_font_param:nn { axis } { 15 } -\um_font_param:nn { operator_size } { 13 } -\um_font_param:n { fraction_del_size } -\um_font_param:nnn { fraction_denom_down } { 45 } { 44 } -\um_font_param:nnn { fraction_denom_vgap } { 50 } { 49 } -\um_font_param:nnn { fraction_num_up } { 43 } { 42 } -\um_font_param:nnn { fraction_num_vgap } { 47 } { 46 } -\um_font_param:nn { fraction_rule } { 48 } -\um_font_param:nn { limit_above_bgap } { 29 } -\um_font_param:n { limit_above_kern } -\um_font_param:nn { limit_above_vgap } { 28 } -\um_font_param:nn { limit_below_bgap } { 31 } -\um_font_param:n { limit_below_kern } -\um_font_param:nn { limit_below_vgap } { 30 } -\um_font_param:nn { over_delimiter_vgap } { 41 } -\um_font_param:nn { over_delimiter_bgap } { 38 } -\um_font_param:nn { under_delimiter_vgap } { 40 } -\um_font_param:nn { under_delimiter_bgap } { 39 } -\um_font_param:nn { overbar_kern } { 55 } -\um_font_param:nn { overbar_rule } { 54 } -\um_font_param:nn { overbar_vgap } { 53 } -\um_font_param:n { quad } -\um_font_param:nn { radical_kern } { 62 } -\um_font_param:nn { radical_rule } { 61 } -\um_font_param:nnn { radical_vgap } { 60 } { 59 } -\um_font_param:nn { radical_degree_before } { 63 } -\um_font_param:nn { radical_degree_after } { 64 } -\um_font_param:nn { radical_degree_raise } { 65 } -\um_font_param:nn { space_after_script } { 27 } -\um_font_param:nnn { stack_denom_down } { 35 } { 34 } -\um_font_param:nnn { stack_num_up } { 33 } { 32 } -\um_font_param:nnn { stack_vgap } { 37 } { 36 } -\um_font_param:nn { sub_shift_down } { 18 } -\um_font_param:nn { sub_shift_drop } { 20 } -\um_font_param:n { subsup_shift_down } -\um_font_param:nn { sub_top_max } { 19 } -\um_font_param:nn { subsup_vgap } { 25 } -\um_font_param:nn { sup_bottom_min } { 23 } -\um_font_param:nn { sup_shift_drop } { 24 } -\um_font_param:nnnnn { sup_shift_up } { 21 } { 22 } { 21 } { 22 } -\um_font_param:nn { supsub_bottom_max } { 26 } -\um_font_param:nn { underbar_kern } { 58 } -\um_font_param:nn { underbar_rule } { 57 } -\um_font_param:nn { underbar_vgap } { 56 } -\um_font_param:n { connector_overlap_min } -\def\new@mathversion#1{% - \expandafter\in@\expandafter#1\expandafter{\version@list}% - \ifin@ - \@font@info{Redeclaring math version - `\expandafter\@gobblefour\string#1'}% - \else - \expandafter\newcount\csname c@\expandafter - \@gobble\string#1\endcsname - \def\version@elt{\noexpand\version@elt\noexpand}% - \edef\version@list{\version@list\version@elt#1}% - \fi - \toks@{}% - \count@\z@ - \def\group@elt##1##2{% - \advance\count@\@ne - \addto@hook\toks@{\getanddefine@fonts##1##2}% - }% - \group@list - \global\csname c@\expandafter\@gobble\string#1\endcsname\count@ - \def\alpha@elt##1##2##3{% - \ifx##2\no@alphabet@error - \toks@\expandafter{\the\toks@\install@mathalphabet##1% - {\no@alphabet@error##1}}% - \else - \toks@\expandafter{\the\toks@\install@mathalphabet##1% - {\select@group##1##2##3}}% - \fi - }% - \alpha@list - \xdef#1{\the\toks@}% -} +\cs_generate_variant:Nn \__um_font_param_aux:NNN { ccc } +\__um_font_param:nn { axis } { 15 } +\__um_font_param:nn { operator_size } { 13 } +\__um_font_param:n { fraction_del_size } +\__um_font_param:nnn { fraction_denom_down } { 45 } { 44 } +\__um_font_param:nnn { fraction_denom_vgap } { 50 } { 49 } +\__um_font_param:nnn { fraction_num_up } { 43 } { 42 } +\__um_font_param:nnn { fraction_num_vgap } { 47 } { 46 } +\__um_font_param:nn { fraction_rule } { 48 } +\__um_font_param:nn { limit_above_bgap } { 29 } +\__um_font_param:n { limit_above_kern } +\__um_font_param:nn { limit_above_vgap } { 28 } +\__um_font_param:nn { limit_below_bgap } { 31 } +\__um_font_param:n { limit_below_kern } +\__um_font_param:nn { limit_below_vgap } { 30 } +\__um_font_param:nn { over_delimiter_vgap } { 41 } +\__um_font_param:nn { over_delimiter_bgap } { 38 } +\__um_font_param:nn { under_delimiter_vgap } { 40 } +\__um_font_param:nn { under_delimiter_bgap } { 39 } +\__um_font_param:nn { overbar_kern } { 55 } +\__um_font_param:nn { overbar_rule } { 54 } +\__um_font_param:nn { overbar_vgap } { 53 } +\__um_font_param:n { quad } +\__um_font_param:nn { radical_kern } { 62 } +\__um_font_param:nn { radical_rule } { 61 } +\__um_font_param:nnn { radical_vgap } { 60 } { 59 } +\__um_font_param:nn { radical_degree_before } { 63 } +\__um_font_param:nn { radical_degree_after } { 64 } +\__um_font_param:nn { radical_degree_raise } { 65 } +\__um_font_param:nn { space_after_script } { 27 } +\__um_font_param:nnn { stack_denom_down } { 35 } { 34 } +\__um_font_param:nnn { stack_num_up } { 33 } { 32 } +\__um_font_param:nnn { stack_vgap } { 37 } { 36 } +\__um_font_param:nn { sub_shift_down } { 18 } +\__um_font_param:nn { sub_shift_drop } { 20 } +\__um_font_param:n { subsup_shift_down } +\__um_font_param:nn { sub_top_max } { 19 } +\__um_font_param:nn { subsup_vgap } { 25 } +\__um_font_param:nn { sup_bottom_min } { 23 } +\__um_font_param:nn { sup_shift_drop } { 24 } +\__um_font_param:nnnnn { sup_shift_up } { 21 } { 22 } { 21 } { 22 } +\__um_font_param:nn { supsub_bottom_max } { 26 } +\__um_font_param:nn { underbar_kern } { 58 } +\__um_font_param:nn { underbar_rule } { 57 } +\__um_font_param:nn { underbar_vgap } { 56 } +\__um_font_param:n { connector_overlap_min } \keys_define:nn {unicode-math} { version .code:n = { - \tl_set:Nn \l_um_mversion_tl {#1} - \DeclareMathVersion{\l_um_mversion_tl} + \tl_set:Nn \l__um_mversion_tl {#1} + \DeclareMathVersion {\l__um_mversion_tl} } } \keys_define:nn {unicode-math} { - script-features .tl_set:N = \l_um_script_features_tl , - sscript-features .tl_set:N = \l_um_sscript_features_tl , - script-font .tl_set:N = \l_um_script_font_tl , - sscript-font .tl_set:N = \l_um_sscript_font_tl , + script-features .tl_set:N = \l__um_script_features_tl , + sscript-features .tl_set:N = \l__um_sscript_features_tl , + script-font .tl_set:N = \l__um_script_font_tl , + sscript-font .tl_set:N = \l__um_sscript_font_tl , } -\seq_new:N \l_um_mathalph_seq -\seq_new:N \l_um_char_range_seq -\seq_new:N \l_um_mclass_range_seq -\seq_new:N \l_um_cmd_range_seq \keys_define:nn {unicode-math} { - range .code:n = { - \bool_set_false:N \l_um_init_bool - \int_incr:N \g_um_fam_int - \tl_set:Nx \um_symfont_tl {um_fam\int_use:N\g_um_fam_int} - \cs_set_eq:NN \_um_sym:nnn \um_process_symbol_parse:nnn - \cs_set_eq:NN \um_set_mathalphabet_char:Nnn \um_mathmap_parse:Nnn - \cs_set_eq:NN \um_remap_symbol:nnn \um_remap_symbol_parse:nnn - \cs_set_eq:NN \um_maybe_init_alphabet:n \use_none:n - \cs_set_eq:NN \um_map_char_single:nn \um_map_char_parse:nn - \cs_set_eq:NN \um_assign_delcode:nn \um_assign_delcode_parse:nn - \cs_set_eq:NN \um_make_mathactive:nNN \um_make_mathactive_parse:nNN - \seq_clear:N \l_um_char_range_seq - \seq_clear:N \l_um_mclass_range_seq - \seq_clear:N \l_um_cmd_range_seq - \seq_clear:N \l_um_mathalph_seq - \clist_map_inline:nn {#1} { - \um_if_mathalph_decl:nTF {##1} { - \seq_put_right:Nx \l_um_mathalph_seq { - { \exp_not:V \l_um_tmpa_tl } - { \exp_not:V \l_um_tmpb_tl } - { \exp_not:V \l_um_tmpc_tl } - } - }{ - \seq_if_in:NnTF \g_um_mathclasses_seq {##1} - { \seq_put_right:Nn \l_um_mclass_range_seq {##1} } + range .code:n = + { + \bool_set_false:N \l__um_init_bool + \int_incr:N \g__um_fam_int + \tl_set:Nx \__um_symfont_tl {__um_fam\int_use:N\g__um_fam_int} + \cs_set_eq:NN \__um_sym:nnn \__um_process_symbol_parse:nnn + \cs_set_eq:NN \__um_set_mathalphabet_char:Nnn \__um_mathmap_parse:Nnn + \cs_set_eq:NN \__um_remap_symbol:nnn \__um_remap_symbol_parse:nnn + \cs_set_eq:NN \__um_maybe_init_alphabet:n \use_none:n + \cs_set_eq:NN \__um_map_char_single:nn \__um_map_char_parse:nn + \cs_set_eq:NN \__um_assign_delcode:nn \__um_assign_delcode_parse:nn + \cs_set_eq:NN \__um_make_mathactive:nNN \__um_make_mathactive_parse:nNN + \seq_clear:N \l__um_char_range_seq + \seq_clear:N \l__um_mclass_range_seq + \seq_clear:N \l__um_cmd_range_seq + \seq_clear:N \l__um_mathalph_seq + + \clist_map_inline:nn {#1} + { + \__um_if_mathalph_decl:nTF {##1} + { + \seq_put_right:Nx \l__um_mathalph_seq + { + { \exp_not:V \l__um_tmpa_tl } + { \exp_not:V \l__um_tmpb_tl } + { \exp_not:V \l__um_tmpc_tl } + } + } + { + \seq_if_in:NnTF \g__um_mathclasses_seq {##1} + { \seq_put_right:Nn \l__um_mclass_range_seq {##1} } { \bool_if:nTF { \tl_if_single_p:n {##1} && \token_if_cs_p:N ##1 } - { \seq_put_right:Nn \l_um_cmd_range_seq {##1} } - { \seq_put_right:Nn \l_um_char_range_seq {##1} } + { \seq_put_right:Nn \l__um_cmd_range_seq {##1} } + { \seq_put_right:Nn \l__um_char_range_seq {##1} } } - } - } - } + } + } + } } -\seq_new:N \g_um_mathclasses_seq -\seq_set_from_clist:Nn \g_um_mathclasses_seq - { - \mathord,\mathalpha,\mathop,\mathbin,\mathrel, - \mathopen,\mathclose,\mathpunct,\mathaccent, - \mathfence,\mathover,\mathunder,\mathbotaccent - } -\prg_new_conditional:Nnn \um_if_mathalph_decl:n {TF} { - \tl_set:Nx \l_um_tmpa_tl { \tl_trim_spaces:n {#1} } - \tl_clear:N \l_um_tmpb_tl - \tl_clear:N \l_um_tmpc_tl - \tl_if_in:NnT \l_um_tmpa_tl {->} { - \exp_after:wN \um_split_arrow:w \l_um_tmpa_tl \q_nil - } - \tl_if_in:NnT \l_um_tmpa_tl {/} { - \exp_after:wN \um_split_slash:w \l_um_tmpa_tl \q_nil - } - \tl_if_empty:NT \l_um_tmpc_tl { \tl_set_eq:NN \l_um_tmpc_tl \l_um_tmpa_tl } - \seq_if_in:NVTF \g_um_mathstyles_seq \l_um_tmpa_tl { - \prg_return_true: - }{ - \prg_return_false: - } -} -\cs_set:Npn \um_split_arrow:w #1->#2 \q_nil { - \tl_set:Nn \l_um_tmpa_tl {#1} - \tl_if_single:nTF {#2} - { \tl_set:Nn \l_um_tmpc_tl {#2} } - { \exp_args:NNc \tl_set:Nn \l_um_tmpc_tl {math#2} } -} -\cs_set:Npn \um_split_slash:w #1/#2 \q_nil { - \tl_set:Nn \l_um_tmpa_tl {#1} - \tl_set:Nn \l_um_tmpb_tl {#2} -} -\cs_new:Nn \um_if_char_spec:nNNT - { +\prg_new_conditional:Nnn \__um_if_mathalph_decl:n {TF} + { + \tl_set:Nn \l__um_tmpa_tl {#1} + \tl_clear:N \l__um_tmpb_tl + \tl_clear:N \l__um_tmpc_tl + + \tl_if_in:NnT \l__um_tmpa_tl {->} + { \exp_after:wN \__um_split_arrow:w \l__um_tmpa_tl \q_nil } + \tl_if_in:NnT \l__um_tmpa_tl {/} + { \exp_after:wN \__um_split_slash:w \l__um_tmpa_tl \q_nil } + + \tl_set:Nx \l__um_tmpa_tl { \tl_to_str:N \l__um_tmpa_tl } + \exp_args:NNx \tl_remove_all:Nn \l__um_tmpa_tl { \token_to_str:N \math } + \exp_args:NNx \tl_remove_all:Nn \l__um_tmpa_tl { \token_to_str:N \sym } + \tl_trim_spaces:N \l__um_tmpa_tl + + \tl_if_empty:NT \l__um_tmpc_tl + { \tl_set_eq:NN \l__um_tmpc_tl \l__um_tmpa_tl } + + \seq_if_in:NVTF \g__um_named_ranges_seq \l__um_tmpa_tl + { \prg_return_true: } { \prg_return_false: } + } +\cs_set:Npn \__um_split_arrow:w #1->#2 \q_nil + { + \tl_set:Nx \l__um_tmpa_tl { \tl_trim_spaces:n {#1} } + \tl_set:Nx \l__um_tmpc_tl { \tl_trim_spaces:n {#2} } + } +\cs_set:Npn \__um_split_slash:w #1/#2 \q_nil + { + \tl_set:Nx \l__um_tmpa_tl { \tl_trim_spaces:n {#1} } + \tl_set:Nx \l__um_tmpb_tl { \tl_trim_spaces:n {#2} } + } +\cs_new:Nn \__um_if_char_spec:nNNT + { % math class: - \seq_if_in:NnT \l_um_mclass_range_seq {#3} + \seq_if_in:NnT \l__um_mclass_range_seq {#3} { \use_none_delimit_by_q_nil:w } % command name: - \seq_if_in:NnT \l_um_cmd_range_seq {#2} + \seq_if_in:NnT \l__um_cmd_range_seq {#2} { \use_none_delimit_by_q_nil:w } % character slot: - \seq_map_inline:Nn \l_um_char_range_seq + \seq_map_inline:Nn \l__um_char_range_seq { - \um_int_if_slot_in_range:nnT {#1} {##1} + \__um_int_if_slot_in_range:nnT {#1} {##1} { \seq_map_break:n { \use_none_delimit_by_q_nil:w } } } - % this executes if no match was found: + % the following expands to nil if no match was found: \use_none:nnn \q_nil \use:n { - \clist_put_right:Nx \l_um_char_num_range_clist { \int_eval:n {#1} } + \clist_put_right:Nx \l__um_char_nrange_clist { \int_eval:n {#1} } #4 } } -\cs_new:Nn \um_int_if_slot_in_range:nnT - { \um_numrange_parse:nwT {#1} #2 - \q_nil - \q_stop {#3} } -\cs_set:Npn \um_numrange_parse:nwT #1 #2 - #3 - #4 \q_stop #5 +\cs_new:Nn \__um_int_if_slot_in_range:nnT + { \__um_numrange_parse:nwT {#1} #2 - \q_nil - \q_stop {#3} } +\cs_set:Npn \__um_numrange_parse:nwT #1 #2 - #3 - #4 \q_stop #5 { \tl_if_empty:nTF {#4} { \int_compare:nT {#1=#2} {#5} } { @@ -872,1185 +740,427 @@ \int_compare:nT {#1>=#2} { \int_compare:nT {#1<=#3} {#5} } } } } } -\AtBeginDocument{\um_resolve_greek:} -\cs_new:Npn \um_resolve_greek: { - \clist_map_inline:nn { +\AtBeginDocument{\__um_resolve_greek:} +\cs_new:Npn \__um_resolve_greek: + { + \clist_map_inline:nn + { Alpha,Beta,Gamma,Delta,Epsilon,Zeta,Eta,Theta,Iota,Kappa,Lambda, alpha,beta,gamma,delta, zeta,eta,theta,iota,kappa,lambda, Mu,Nu,Xi,Omicron,Pi,Rho,Sigma,Tau,Upsilon,Phi,Chi,Psi,Omega, mu,nu,xi,omicron,pi,rho,sigma,tau,upsilon, chi,psi,omega, varTheta, varsigma,vartheta,varkappa,varrho,varpi - }{ + } + { \tl_set:cx {##1} { \exp_not:c { mit ##1 } } - } - \tl_set:Nn \epsilon { - \bool_if:NTF \g_um_texgreek_bool \mitvarepsilon \mitepsilon - } - \tl_set:Nn \phi { - \bool_if:NTF \g_um_texgreek_bool \mitvarphi \mitphi - } - \tl_set:Nn \varepsilon { - \bool_if:NTF \g_um_texgreek_bool \mitepsilon \mitvarepsilon - } - \tl_set:Nn \varphi { - \bool_if:NTF \g_um_texgreek_bool \mitphi \mitvarphi - } -} -\cs_new:Nn \um_new_mathstyle:N - { - \um_prepare_mathstyle:f {\exp_after:wN \use_none:nnnnn \token_to_str:N #1} - \seq_put_right:Nn \g_um_mathstyles_seq {#1} - } -\seq_new:N \g_um_default_mathalph_seq -\seq_new:N \g_um_mathstyles_seq -\AtEndOfPackage - { -\clist_map_inline:nn - { - {\mathup } {latin,Latin,greek,Greek,num,misc} {\mathup } , - {\mathit } {latin,Latin,greek,Greek,misc} {\mathit } , - {\mathbb } {latin,Latin,num,misc} {\mathbb } , - {\mathbbit } {misc} {\mathbbit } , - {\mathscr } {latin,Latin} {\mathscr } , - {\mathcal } {Latin} {\mathscr } , - {\mathbfcal } {Latin} {\mathbfscr } , - {\mathfrak } {latin,Latin} {\mathfrak } , - {\mathtt } {latin,Latin,num} {\mathtt } , - {\mathsfup } {latin,Latin,num} {\mathsfup } , - {\mathsfit } {latin,Latin} {\mathsfit } , - {\mathbfup } {latin,Latin,greek,Greek,num,misc} {\mathbfup } , - {\mathbfit } {latin,Latin,greek,Greek,misc} {\mathbfit } , - {\mathbfscr } {latin,Latin} {\mathbfscr } , - {\mathbffrak} {latin,Latin} {\mathbffrak} , - {\mathbfsfup} {latin,Latin,greek,Greek,num,misc} {\mathbfsfup} , - {\mathbfsfit} {latin,Latin,greek,Greek,misc} {\mathbfsfit} - } - { - \seq_put_right:Nn \g_um_default_mathalph_seq {#1} - \exp_after:wN \um_new_mathstyle:N \use_i:nnn #1 - } - \um_new_mathstyle:N \mathsf - \um_new_mathstyle:N \mathbf - \um_new_mathstyle:N \mathbfsf + \tl_set:cx {up ##1} { \exp_not:N \symup \exp_not:c { ##1 } } + \tl_set:cx {it ##1} { \exp_not:N \symit \exp_not:c { ##1 } } + } + \tl_set:Nn \epsilon + { \bool_if:NTF \g__um_texgreek_bool \mitvarepsilon \mitepsilon } + \tl_set:Nn \phi + { \bool_if:NTF \g__um_texgreek_bool \mitvarphi \mitphi } + \tl_set:Nn \varepsilon + { \bool_if:NTF \g__um_texgreek_bool \mitepsilon \mitvarepsilon } + \tl_set:Nn \varphi + { \bool_if:NTF \g__um_texgreek_bool \mitphi \mitvarphi } } -\cs_new:Nn \um_prepare_mathstyle:n +\cs_set:Npn \use@mathgroup #1 #2 { - \um_init_alphabet:x {#1} - \cs_set:cpn {_um_math#1_aux:n} ##1 + \mode_if_math:T % <- not sure if this is really necessary since we've just checked for mmode and raised an error if not! { - \use:c {um_switchto_math#1:} ##1 \egroup + \math@bgroup + \cs_if_eq:cNF {M@\f@encoding} #1 {#1} + \__um_switchto_literal: + \mathgroup #2 \relax + \math@egroup } - \cs_set_protected:cpx {math#1} + } +\cs_new:Nn \__um_prepare_mathstyle:n + { + \seq_put_right:Nn \g__um_mathstyles_seq {#1} + \__um_init_alphabet:n {#1} + \cs_set:cpn {__um_sym_#1_aux:n} + { \use:c {__um_switchto_#1:} \math@egroup } + \cs_set_protected:cpx {sym#1} { \exp_not:n { - \bgroup + \math@bgroup \mode_if_math:F { \egroup\expandafter - \non@alpherr\expandafter{\csname math#1\endcsname\space} + \non@alpherr\expandafter{\csname sym#1\endcsname\space} } - \tl_set:Nn \l_um_mathstyle_tl {#1} - } - \exp_not:c {_um_math#1_aux:n} - } - } -\tl_new:N \l_um_mathstyle_tl -\cs_generate_variant:Nn \um_prepare_mathstyle:n {f} -\cs_set:Nn \um_init_alphabet:n - { - \um_log:nx {alph-initialise} {#1} - \cs_set_eq:cN {um_switchto_math#1:} \prg_do_nothing: - } -\cs_generate_variant:Nn \um_init_alphabet:n {x} -\cs_new:Npn \um_maybe_init_alphabet:V - { - \exp_args:NV \um_maybe_init_alphabet:n - } -\seq_new:N \l_um_missing_alph_seq -\cs_new:Npn \um_setup_alphabets: - { - \seq_if_empty:NTF \l_um_mathalph_seq { - \um_log:n {setup-implicit} - \seq_set_eq:NN \l_um_mathalph_seq \g_um_default_mathalph_seq - \bool_set_true:N \l_um_implicit_alph_bool - \um_maybe_init_alphabet:n {sf} - \um_maybe_init_alphabet:n {bf} - \um_maybe_init_alphabet:n {bfsf} - } - { - \um_log:n {setup-explicit} - \bool_set_false:N \l_um_implicit_alph_bool - \cs_set_eq:NN \um_set_mathalphabet_char:Nnn \um_mathmap_noparse:Nnn - \cs_set_eq:NN \um_map_char_single:nn \um_map_char_noparse:nn - } - \seq_map_inline:Nn \l_um_mathalph_seq { - \tl_set:No \l_um_tmpa_tl { \use_i:nnn ##1 } - \tl_set:No \l_um_tmpb_tl { \use_ii:nnn ##1 } - \tl_set:No \l_um_remap_style_tl { \use_iii:nnn ##1 } - \tl_set:Nx \l_um_remap_style_tl { - \exp_after:wN \exp_after:wN \exp_after:wN \use_none:nnnnn - \exp_after:wN \token_to_str:N \l_um_remap_style_tl - } - \tl_if_empty:NT \l_um_tmpb_tl { - \cs_set_eq:NN \um_maybe_init_alphabet:n \um_init_alphabet:n - \tl_set:Nn \l_um_tmpb_tl { latin,Latin,greek,Greek,num,misc } - } - \um_setup_math_alphabet:VVV - \l_um_tmpa_tl \l_um_tmpb_tl \l_um_remap_style_tl - } - \seq_if_empty:NF \l_um_missing_alph_seq { \um_log:n { missing-alphabets } } - } -\cs_new:Nn \um_setup_math_alphabet:Nnn - { - \tl_set:Nx \l_um_style_tl - { - \exp_after:wN \use_none:nnnnn \token_to_str:N #1 - } - \clist_map_inline:nn {#2} - { - \tl_set:Nx \l_um_tmpa_tl { \tl_trim_spaces:n {##1} } - \cs_if_exist:cT {um_config_ \l_um_style_tl _\l_um_tmpa_tl :n} - { - \str_if_eq_x:nnTF {\l_um_tmpa_tl}{misc} - { - \um_maybe_init_alphabet:V \l_um_style_tl - \clist_map_break: - } - { - \um_glyph_if_exist:cT { \um_to_usv:nn {#3}{\l_um_tmpa_tl} } - { - \um_maybe_init_alphabet:V \l_um_style_tl - \clist_map_break: - } - } - } - } - \clist_map_inline:nn {#2} - { - \tl_set:Nx \l_um_tmpa_tl { \tl_trim_spaces:n {##1} } - \cs_if_exist:cT {um_config_ \l_um_style_tl _ \l_um_tmpa_tl :n} - { - \str_if_eq_x:nnTF {\l_um_tmpa_tl}{misc} - { - \um_log:nx {setup-alph} {math \l_um_style_tl~(\l_um_tmpa_tl)} - \use:c {um_config_ \l_um_style_tl _ \l_um_tmpa_tl :n} {#3} - } - { - \um_glyph_if_exist:cTF { \um_to_usv:nn {#3}{\l_um_tmpa_tl} } - { - \um_log:nx {setup-alph} {math \l_um_style_tl~(\l_um_tmpa_tl)} - \use:c {um_config_ \l_um_style_tl _ \l_um_tmpa_tl :n} {#3} - } - { - \bool_if:NTF \l_um_implicit_alph_bool - { - \seq_put_right:Nx \l_um_missing_alph_seq - { - \@backslashchar math \l_um_style_tl \space - (\tl_use:c{c_um_math_alphabet_name_ \l_um_tmpa_tl _tl}) - } - } - { - \use:c {um_config_ \l_um_style_tl _ \l_um_tmpa_tl :n} {up} - } - } - } - } - } - } -\cs_generate_variant:Nn \um_setup_math_alphabet:Nnn {VVV} -\cs_new:Npn \um_map_char_single:cc { \exp_args:Ncc \um_map_char_single:nn } -\cs_new:Nn \um_map_char_noparse:nn - { - \um_set_mathcode:nnnn {#1}{\mathalpha}{\um_symfont_tl}{#2} - } -\cs_new:Nn \um_map_char_parse:nn - { - \um_if_char_spec:nNNT {#1} {\@nil} {\mathalpha} - { - \um_map_char_noparse:nn {#1}{#2} - } - } -\cs_new:Nn \um_map_char_single:nnn - { - \um_map_char_single:cc { \um_to_usv:nn {#1}{#3} } - { \um_to_usv:nn {#2}{#3} } - } -\cs_set:Nn \um_map_single:nnn - { - \cs_if_exist:cT { \um_to_usv:nn {#3} {#1} } - { - \clist_map_inline:nn {#2} - { - \um_map_char_single:nnn {##1} {#3} {#1} - } - } - } -\cs_set:Nn \um_map_chars_range:nnn - { - \int_step_inline:nnnn {0}{1}{#1-1} { - \um_map_char_single:nn {#2+##1}{#3+##1} - } - } -\cs_generate_variant:Nn \um_map_chars_range:nnn {ncc} -\cs_new:Nn \um_map_chars_range:nnnn - { - \um_map_chars_range:ncc {#1} { \um_to_usv:nn {#2}{#4} } - { \um_to_usv:nn {#3}{#4} } - } -\cs_new:Nn \um_map_chars_Latin:nn - { - \clist_map_inline:nn {#1} - { - \um_map_chars_range:nnnn {26} {##1} {#2} {Latin} - } - } -\cs_new:Nn \um_map_chars_latin:nn - { - \clist_map_inline:nn {#1} - { - \um_map_chars_range:nnnn {26} {##1} {#2} {latin} - } - } -\cs_new:Nn \um_map_chars_greek:nn - { - \clist_map_inline:nn {#1} - { - \um_map_chars_range:nnnn {25} {##1} {#2} {greek} - \um_map_char_single:nnn {##1} {#2} {varepsilon} - \um_map_char_single:nnn {##1} {#2} {vartheta} - \um_map_char_single:nnn {##1} {#2} {varkappa} - \um_map_char_single:nnn {##1} {#2} {varphi} - \um_map_char_single:nnn {##1} {#2} {varrho} - \um_map_char_single:nnn {##1} {#2} {varpi} - } - } -\cs_new:Nn \um_map_chars_Greek:nn - { - \clist_map_inline:nn {#1} - { - \um_map_chars_range:nnnn {25} {##1} {#2} {Greek} - \um_map_char_single:nnn {##1} {#2} {varTheta} - } - } -\cs_new:Nn \um_map_chars_numbers:nn - { - \um_map_chars_range:nnnn {10} {#1} {#2} {num} - } -\cs_new:Npn \um_set_mathalphabet_char:Ncc - { - \exp_args:NNcc \um_set_mathalphabet_char:Nnn - } -\cs_new:Nn \um_mathmap_noparse:Nnn - { - \clist_map_inline:nn {#2} - { - \tl_put_right:cx {um_switchto_\cs_to_str:N #1:} - { - \um_set_mathcode:nnnn{##1}{\mathalpha}{\um_symfont_tl}{#3} - } - } - } -\cs_new:Nn \um_mathmap_parse:Nnn - { - \clist_if_in:NnT \l_um_char_num_range_clist {#3} - { - \um_mathmap_noparse:Nnn {#1}{#2}{#3} - } - } -\cs_new:Nn \um_set_mathalphabet_char:Nnnn - { - \um_set_mathalphabet_char:Ncc #1 { \um_to_usv:nn {#2} {#4} } - { \um_to_usv:nn {#3} {#4} } - } -\cs_new:Nn \um_set_mathalph_range:nNnn - { - \int_step_inline:nnnn {0}{1}{#1-1} - { \um_set_mathalphabet_char:Nnn {#2} { ##1 + #3 } { ##1 + #4 } } - } -\cs_generate_variant:Nn \um_set_mathalph_range:nNnn {nNcc} -\cs_new:Nn \um_set_mathalph_range:nNnnn - { - \um_set_mathalph_range:nNcc {#1} #2 { \um_to_usv:nn {#3} {#5} } - { \um_to_usv:nn {#4} {#5} } - } -\cs_new:Nn \um_set_mathalphabet_pos:Nnnn - { - \cs_if_exist:cT { \um_to_usv:nn {#4}{#2} } - { - \clist_map_inline:nn {#3} - { \um_set_mathalphabet_char:Nnnn #1 {##1} {#4} {#2} } - } - } -\cs_new:Nn \um_set_mathalphabet_numbers:Nnn - { - \clist_map_inline:nn {#2} - { \um_set_mathalph_range:nNnnn {10} #1 {##1} {#3} {num} } - } -\cs_new:Nn \um_set_mathalphabet_Latin:Nnn - { - \clist_map_inline:nn {#2} - { \um_set_mathalph_range:nNnnn {26} #1 {##1} {#3} {Latin} } - } -\cs_new:Nn \um_set_mathalphabet_latin:Nnn - { - \clist_map_inline:nn {#2} - { - \um_set_mathalph_range:nNnnn {26} #1 {##1} {#3} {latin} - \um_set_mathalphabet_char:Nnnn #1 {##1} {#3} {h} - } - } -\cs_new:Nn \um_set_mathalphabet_Greek:Nnn - { - \clist_map_inline:nn {#2} - { - \um_set_mathalph_range:nNnnn {25} #1 {##1} {#3} {Greek} - \um_set_mathalphabet_char:Nnnn #1 {##1} {#3} {varTheta} - } - } -\cs_new:Nn \um_set_mathalphabet_greek:Nnn - { - \clist_map_inline:nn {#2} - { - \um_set_mathalph_range:nNnnn {25} #1 {##1} {#3} {greek} - \um_set_mathalphabet_char:Nnnn #1 {##1} {#3} {varepsilon} - \um_set_mathalphabet_char:Nnnn #1 {##1} {#3} {vartheta} - \um_set_mathalphabet_char:Nnnn #1 {##1} {#3} {varkappa} - \um_set_mathalphabet_char:Nnnn #1 {##1} {#3} {varphi} - \um_set_mathalphabet_char:Nnnn #1 {##1} {#3} {varrho} - \um_set_mathalphabet_char:Nnnn #1 {##1} {#3} {varpi} - } - } -\cs_new:Nn \um_config_up_num:n - { - \um_map_chars_numbers:nn {up}{#1} - \um_set_mathalphabet_numbers:Nnn \mathup {up}{#1} - } - -\cs_new:Nn \um_config_up_Latin:n - { - \bool_if:NTF \g_um_literal_bool { \um_map_chars_Latin:nn {up} {#1} } - { - \bool_if:NT \g_um_upLatin_bool { \um_map_chars_Latin:nn {up,it} {#1} } - } - \um_set_mathalphabet_Latin:Nnn \mathup {up,it} {#1} - } - -\cs_new:Nn \um_config_up_latin:n - { - \bool_if:NTF \g_um_literal_bool { \um_map_chars_latin:nn {up} {#1} } - { - \bool_if:NT \g_um_uplatin_bool - { - \um_map_chars_latin:nn {up,it} {#1} - \um_map_single:nnn {h} {up,it} {#1} - \um_map_single:nnn {dotlessi} {up,it} {#1} - \um_map_single:nnn {dotlessj} {up,it} {#1} - } - } - \um_set_mathalphabet_latin:Nnn \mathup {up,it}{#1} - } - -\cs_new:Nn \um_config_up_Greek:n - { - \bool_if:NTF \g_um_literal_bool { \um_map_chars_Greek:nn {up}{#1} } - { - \bool_if:NT \g_um_upGreek_bool { \um_map_chars_Greek:nn {up,it}{#1} } - } - \um_set_mathalphabet_Greek:Nnn \mathup {up,it}{#1} - } - -\cs_new:Nn \um_config_up_greek:n - { - \bool_if:NTF \g_um_literal_bool { \um_map_chars_greek:nn {up} {#1} } - { - \bool_if:NT \g_um_upgreek_bool - { - \um_map_chars_greek:nn {up,it} {#1} - } - } - \um_set_mathalphabet_greek:Nnn \mathup {up,it} {#1} - } - -\cs_new:Nn \um_config_up_misc:n - { - \bool_if:NTF \g_um_literal_Nabla_bool - { - \um_map_single:nnn {Nabla}{up}{up} - } - { - \bool_if:NT \g_um_upNabla_bool - { - \um_map_single:nnn {Nabla}{up,it}{up} - } - } - \bool_if:NTF \g_um_literal_partial_bool - { - \um_map_single:nnn {partial}{up}{up} - } - { - \bool_if:NT \g_um_uppartial_bool - { - \um_map_single:nnn {partial}{up,it}{up} - } - } - \um_set_mathalphabet_pos:Nnnn \mathup {partial} {up,it} {#1} - \um_set_mathalphabet_pos:Nnnn \mathup {Nabla} {up,it} {#1} - \um_set_mathalphabet_pos:Nnnn \mathup {dotlessi} {up,it} {#1} - \um_set_mathalphabet_pos:Nnnn \mathup {dotlessj} {up,it} {#1} - } -\cs_new:Nn \um_config_it_Latin:n - { - \bool_if:NTF \g_um_literal_bool { \um_map_chars_Latin:nn {it} {#1} } - { - \bool_if:NF \g_um_upLatin_bool { \um_map_chars_Latin:nn {up,it} {#1} } - } - \um_set_mathalphabet_Latin:Nnn \mathit {up,it}{#1} - } - -\cs_new:Nn \um_config_it_latin:n - { - \bool_if:NTF \g_um_literal_bool - { - \um_map_chars_latin:nn {it} {#1} - \um_map_single:nnn {h}{it}{#1} - } - { - \bool_if:NF \g_um_uplatin_bool - { - \um_map_chars_latin:nn {up,it} {#1} - \um_map_single:nnn {h}{up,it}{#1} - \um_map_single:nnn {dotlessi}{up,it}{#1} - \um_map_single:nnn {dotlessj}{up,it}{#1} - } - } - \um_set_mathalphabet_latin:Nnn \mathit {up,it} {#1} - \um_set_mathalphabet_pos:Nnnn \mathit {dotlessi} {up,it} {#1} - \um_set_mathalphabet_pos:Nnnn \mathit {dotlessj} {up,it} {#1} - } - -\cs_new:Nn \um_config_it_Greek:n - { - \bool_if:NTF \g_um_literal_bool - { - \um_map_chars_Greek:nn {it}{#1} - } - { - \bool_if:NF \g_um_upGreek_bool { \um_map_chars_Greek:nn {up,it}{#1} } - } - \um_set_mathalphabet_Greek:Nnn \mathit {up,it}{#1} - } - -\cs_new:Nn \um_config_it_greek:n - { - \bool_if:NTF \g_um_literal_bool - { - \um_map_chars_greek:nn {it} {#1} - } - { - \bool_if:NF \g_um_upgreek_bool { \um_map_chars_greek:nn {it,up} {#1} } - } - \um_set_mathalphabet_greek:Nnn \mathit {up,it} {#1} - } - -\cs_new:Nn \um_config_it_misc:n - { - \bool_if:NTF \g_um_literal_Nabla_bool - { - \um_map_single:nnn {Nabla}{it}{it} - } - { - \bool_if:NF \g_um_upNabla_bool - { - \um_map_single:nnn {Nabla}{up,it}{it} - } - } - \bool_if:NTF \g_um_literal_partial_bool - { - \um_map_single:nnn {partial}{it}{it} - } - { - \bool_if:NF \g_um_uppartial_bool - { - \um_map_single:nnn {partial}{up,it}{it} - } - } - \um_set_mathalphabet_pos:Nnnn \mathit {partial} {up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathit {Nabla} {up,it}{#1} - } -\cs_new:Nn \um_config_bb_latin:n - { - \um_set_mathalphabet_latin:Nnn \mathbb {up,it}{#1} - } - -\cs_new:Nn \um_config_bb_Latin:n - { - \um_set_mathalphabet_Latin:Nnn \mathbb {up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathbb {C} {up,it} {#1} - \um_set_mathalphabet_pos:Nnnn \mathbb {H} {up,it} {#1} - \um_set_mathalphabet_pos:Nnnn \mathbb {N} {up,it} {#1} - \um_set_mathalphabet_pos:Nnnn \mathbb {P} {up,it} {#1} - \um_set_mathalphabet_pos:Nnnn \mathbb {Q} {up,it} {#1} - \um_set_mathalphabet_pos:Nnnn \mathbb {R} {up,it} {#1} - \um_set_mathalphabet_pos:Nnnn \mathbb {Z} {up,it} {#1} - } - -\cs_new:Nn \um_config_bb_num:n - { - \um_set_mathalphabet_numbers:Nnn \mathbb {up}{#1} - } - -\cs_new:Nn \um_config_bb_misc:n - { - \um_set_mathalphabet_pos:Nnnn \mathbb {Pi} {up,it} {#1} - \um_set_mathalphabet_pos:Nnnn \mathbb {pi} {up,it} {#1} - \um_set_mathalphabet_pos:Nnnn \mathbb {Gamma} {up,it} {#1} - \um_set_mathalphabet_pos:Nnnn \mathbb {gamma} {up,it} {#1} - \um_set_mathalphabet_pos:Nnnn \mathbb {summation} {up} {#1} - } - -\cs_new:Nn \um_config_bbit_misc:n - { - \um_set_mathalphabet_pos:Nnnn \mathbbit {D} {up,it} {#1} - \um_set_mathalphabet_pos:Nnnn \mathbbit {d} {up,it} {#1} - \um_set_mathalphabet_pos:Nnnn \mathbbit {e} {up,it} {#1} - \um_set_mathalphabet_pos:Nnnn \mathbbit {i} {up,it} {#1} - \um_set_mathalphabet_pos:Nnnn \mathbbit {j} {up,it} {#1} - } -\cs_new:Nn \um_config_scr_Latin:n - { - \um_set_mathalphabet_Latin:Nnn \mathscr {up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathscr {B}{up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathscr {E}{up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathscr {F}{up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathscr {H}{up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathscr {I}{up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathscr {L}{up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathscr {M}{up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathscr {R}{up,it}{#1} - } - -\cs_new:Nn \um_config_scr_latin:n - { - \um_set_mathalphabet_latin:Nnn \mathscr {up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathscr {e}{up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathscr {g}{up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathscr {o}{up,it}{#1} - } -\cs_new:Nn \um_config_cal_Latin:n - { - \um_set_mathalphabet_Latin:Nnn \mathcal {up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathcal {B}{up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathcal {E}{up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathcal {F}{up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathcal {H}{up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathcal {I}{up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathcal {L}{up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathcal {M}{up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathcal {R}{up,it}{#1} - } -\cs_new:Nn \um_config_frak_Latin:n - { - \um_set_mathalphabet_Latin:Nnn \mathfrak {up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathfrak {C}{up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathfrak {H}{up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathfrak {I}{up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathfrak {R}{up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathfrak {Z}{up,it}{#1} - } -\cs_new:Nn \um_config_frak_latin:n - { - \um_set_mathalphabet_latin:Nnn \mathfrak {up,it}{#1} - } -\cs_new:Nn \um_config_sfup_num:n - { - \um_set_mathalphabet_numbers:Nnn \mathsf {up}{#1} - \um_set_mathalphabet_numbers:Nnn \mathsfup {up}{#1} - } -\cs_new:Nn \um_config_sfup_Latin:n - { - \bool_if:NTF \g_um_sfliteral_bool - { - \um_map_chars_Latin:nn {sfup} {#1} - \um_set_mathalphabet_Latin:Nnn \mathsf {up}{#1} - } - { - \bool_if:NT \g_um_upsans_bool - { - \um_map_chars_Latin:nn {sfup,sfit} {#1} - \um_set_mathalphabet_Latin:Nnn \mathsf {up,it}{#1} - } - } - \um_set_mathalphabet_Latin:Nnn \mathsfup {up,it}{#1} - } -\cs_new:Nn \um_config_sfup_latin:n - { - \bool_if:NTF \g_um_sfliteral_bool - { - \um_map_chars_latin:nn {sfup} {#1} - \um_set_mathalphabet_latin:Nnn \mathsf {up}{#1} - } - { - \bool_if:NT \g_um_upsans_bool - { - \um_map_chars_latin:nn {sfup,sfit} {#1} - \um_set_mathalphabet_latin:Nnn \mathsf {up,it}{#1} - } - } - \um_set_mathalphabet_latin:Nnn \mathsfup {up,it}{#1} - } -\cs_new:Nn \um_config_sfit_Latin:n - { - \bool_if:NTF \g_um_sfliteral_bool - { - \um_map_chars_Latin:nn {sfit} {#1} - \um_set_mathalphabet_Latin:Nnn \mathsf {it}{#1} - } - { - \bool_if:NF \g_um_upsans_bool - { - \um_map_chars_Latin:nn {sfup,sfit} {#1} - \um_set_mathalphabet_Latin:Nnn \mathsf {up,it}{#1} - } - } - \um_set_mathalphabet_Latin:Nnn \mathsfit {up,it}{#1} - } -\cs_new:Nn \um_config_sfit_latin:n - { - \bool_if:NTF \g_um_sfliteral_bool - { - \um_map_chars_latin:nn {sfit} {#1} - \um_set_mathalphabet_latin:Nnn \mathsf {it}{#1} - } - { - \bool_if:NF \g_um_upsans_bool - { - \um_map_chars_latin:nn {sfup,sfit} {#1} - \um_set_mathalphabet_latin:Nnn \mathsf {up,it}{#1} - } - } - \um_set_mathalphabet_latin:Nnn \mathsfit {up,it}{#1} - } -\cs_new:Nn \um_config_tt_num:n - { - \um_set_mathalphabet_numbers:Nnn \mathtt {up}{#1} - } -\cs_new:Nn \um_config_tt_Latin:n - { - \um_set_mathalphabet_Latin:Nnn \mathtt {up,it}{#1} - } -\cs_new:Nn \um_config_tt_latin:n - { - \um_set_mathalphabet_latin:Nnn \mathtt {up,it}{#1} - } -\cs_new:Nn \um_config_bfit_Latin:n - { - \bool_if:NF \g_um_bfupLatin_bool - { - \um_map_chars_Latin:nn {bfup,bfit} {#1} - } - \um_set_mathalphabet_Latin:Nnn \mathbfit {up,it}{#1} - \bool_if:NTF \g_um_bfliteral_bool - { - \um_map_chars_Latin:nn {bfit} {#1} - \um_set_mathalphabet_Latin:Nnn \mathbf {it}{#1} - } - { - \bool_if:NF \g_um_bfupLatin_bool - { - \um_map_chars_Latin:nn {bfup,bfit} {#1} - \um_set_mathalphabet_Latin:Nnn \mathbf {up,it}{#1} - } - } - } - -\cs_new:Nn \um_config_bfit_latin:n - { - \bool_if:NF \g_um_bfuplatin_bool - { - \um_map_chars_latin:nn {bfup,bfit} {#1} - } - \um_set_mathalphabet_latin:Nnn \mathbfit {up,it}{#1} - \bool_if:NTF \g_um_bfliteral_bool - { - \um_map_chars_latin:nn {bfit} {#1} - \um_set_mathalphabet_latin:Nnn \mathbf {it}{#1} - } - { - \bool_if:NF \g_um_bfuplatin_bool - { - \um_map_chars_latin:nn {bfup,bfit} {#1} - \um_set_mathalphabet_latin:Nnn \mathbf {up,it}{#1} - } - } - } - -\cs_new:Nn \um_config_bfit_Greek:n - { - \um_set_mathalphabet_Greek:Nnn \mathbfit {up,it}{#1} - \bool_if:NTF \g_um_bfliteral_bool - { - \um_map_chars_Greek:nn {bfit}{#1} - \um_set_mathalphabet_Greek:Nnn \mathbf {it}{#1} - } - { - \bool_if:NF \g_um_bfupGreek_bool - { - \um_map_chars_Greek:nn {bfup,bfit}{#1} - \um_set_mathalphabet_Greek:Nnn \mathbf {up,it}{#1} - } - } - } - -\cs_new:Nn \um_config_bfit_greek:n - { - \um_set_mathalphabet_greek:Nnn \mathbfit {up,it} {#1} - \bool_if:NTF \g_um_bfliteral_bool - { - \um_map_chars_greek:nn {bfit} {#1} - \um_set_mathalphabet_greek:Nnn \mathbf {it} {#1} - } - { - \bool_if:NF \g_um_bfupgreek_bool - { - \um_map_chars_greek:nn {bfit,bfup} {#1} - \um_set_mathalphabet_greek:Nnn \mathbf {up,it} {#1} - } - } - } - -\cs_new:Nn \um_config_bfit_misc:n - { - \bool_if:NTF \g_um_literal_Nabla_bool - { \um_map_single:nnn {Nabla}{bfit}{#1} } - { - \bool_if:NF \g_um_upNabla_bool - { \um_map_single:nnn {Nabla}{bfup,bfit}{#1} } - } - \bool_if:NTF \g_um_literal_partial_bool - { \um_map_single:nnn {partial}{bfit}{#1} } - { - \bool_if:NF \g_um_uppartial_bool - { \um_map_single:nnn {partial}{bfup,bfit}{#1} } - } - \um_set_mathalphabet_pos:Nnnn \mathbfit {partial} {up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathbfit {Nabla} {up,it}{#1} - \bool_if:NTF \g_um_literal_partial_bool - { - \um_set_mathalphabet_pos:Nnnn \mathbf {partial} {it}{#1} - } - { - \bool_if:NF \g_um_uppartial_bool - { - \um_set_mathalphabet_pos:Nnnn \mathbf {partial} {up,it}{#1} - } - } - \bool_if:NTF \g_um_literal_Nabla_bool - { - \um_set_mathalphabet_pos:Nnnn \mathbf {Nabla} {it}{#1} - } - { - \bool_if:NF \g_um_upNabla_bool - { - \um_set_mathalphabet_pos:Nnnn \mathbf {Nabla} {up,it}{#1} - } - } - } -\cs_new:Nn \um_config_bfup_num:n - { - \um_set_mathalphabet_numbers:Nnn \mathbf {up}{#1} - \um_set_mathalphabet_numbers:Nnn \mathbfup {up}{#1} - } - -\cs_new:Nn \um_config_bfup_Latin:n - { - \bool_if:NT \g_um_bfupLatin_bool - { - \um_map_chars_Latin:nn {bfup,bfit} {#1} - } - \um_set_mathalphabet_Latin:Nnn \mathbfup {up,it}{#1} - \bool_if:NTF \g_um_bfliteral_bool - { - \um_map_chars_Latin:nn {bfup} {#1} - \um_set_mathalphabet_Latin:Nnn \mathbf {up}{#1} - } - { - \bool_if:NT \g_um_bfupLatin_bool - { - \um_map_chars_Latin:nn {bfup,bfit} {#1} - \um_set_mathalphabet_Latin:Nnn \mathbf {up,it}{#1} - } - } - } - -\cs_new:Nn \um_config_bfup_latin:n - { - \bool_if:NT \g_um_bfuplatin_bool - { - \um_map_chars_latin:nn {bfup,bfit} {#1} - } - \um_set_mathalphabet_latin:Nnn \mathbfup {up,it}{#1} - \bool_if:NTF \g_um_bfliteral_bool - { - \um_map_chars_latin:nn {bfup} {#1} - \um_set_mathalphabet_latin:Nnn \mathbf {up}{#1} - } - { - \bool_if:NT \g_um_bfuplatin_bool - { - \um_map_chars_latin:nn {bfup,bfit} {#1} - \um_set_mathalphabet_latin:Nnn \mathbf {up,it}{#1} - } - } - } -\cs_new:Nn \um_config_bfup_Greek:n - { - \um_set_mathalphabet_Greek:Nnn \mathbfup {up,it}{#1} - \bool_if:NTF \g_um_bfliteral_bool - { - \um_map_chars_Greek:nn {bfup}{#1} - \um_set_mathalphabet_Greek:Nnn \mathbf {up}{#1} - } - { - \bool_if:NT \g_um_bfupGreek_bool - { - \um_map_chars_Greek:nn {bfup,bfit}{#1} - \um_set_mathalphabet_Greek:Nnn \mathbf {up,it}{#1} - } - } - } - -\cs_new:Nn \um_config_bfup_greek:n - { - \um_set_mathalphabet_greek:Nnn \mathbfup {up,it} {#1} - \bool_if:NTF \g_um_bfliteral_bool - { - \um_map_chars_greek:nn {bfup} {#1} - \um_set_mathalphabet_greek:Nnn \mathbf {up} {#1} - } - { - \bool_if:NT \g_um_bfupgreek_bool - { - \um_map_chars_greek:nn {bfup,bfit} {#1} - \um_set_mathalphabet_greek:Nnn \mathbf {up,it} {#1} - } - } - } - -\cs_new:Nn \um_config_bfup_misc:n - { - \bool_if:NTF \g_um_literal_Nabla_bool - { - \um_map_single:nnn {Nabla}{bfup}{#1} - } - { - \bool_if:NT \g_um_upNabla_bool - { - \um_map_single:nnn {Nabla}{bfup,bfit}{#1} - } - } - \bool_if:NTF \g_um_literal_partial_bool - { - \um_map_single:nnn {partial}{bfup}{#1} - } - { - \bool_if:NT \g_um_uppartial_bool - { - \um_map_single:nnn {partial}{bfup,bfit}{#1} - } - } - \um_set_mathalphabet_pos:Nnnn \mathbfup {partial} {up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathbfup {Nabla} {up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathbfup {digamma} {up}{#1} - \um_set_mathalphabet_pos:Nnnn \mathbfup {Digamma} {up}{#1} - \um_set_mathalphabet_pos:Nnnn \mathbf {digamma} {up}{#1} - \um_set_mathalphabet_pos:Nnnn \mathbf {Digamma} {up}{#1} - \bool_if:NTF \g_um_literal_partial_bool - { - \um_set_mathalphabet_pos:Nnnn \mathbf {partial} {up}{#1} - } - { - \bool_if:NT \g_um_uppartial_bool - { - \um_set_mathalphabet_pos:Nnnn \mathbf {partial} {up,it}{#1} - } - } - \bool_if:NTF \g_um_literal_Nabla_bool - { - \um_set_mathalphabet_pos:Nnnn \mathbf {Nabla} {up}{#1} - } - { - \bool_if:NT \g_um_upNabla_bool - { - \um_set_mathalphabet_pos:Nnnn \mathbf {Nabla} {up,it}{#1} + \tl_set:Nn \l__um_mathstyle_tl {#1} } + \exp_not:c {__um_sym_#1_aux:n} } } -\cs_new:Nn \um_config_bffrak_Latin:n +\cs_set:Nn \__um_init_alphabet:n { - \um_set_mathalphabet_Latin:Nnn \mathbffrak {up,it}{#1} + \__um_log:nx {alph-initialise} {#1} + \cs_set_eq:cN {__um_switchto_#1:} \prg_do_nothing: } - -\cs_new:Nn \um_config_bffrak_latin:n +\cs_new:Nn \__um_new_named_range:n { - \um_set_mathalphabet_latin:Nnn \mathbffrak {up,it}{#1} + \prop_new:c {g__um_named_range_#1_prop} } -\cs_new:Nn \um_config_bfscr_Latin:n +\clist_set:Nn \g__um_named_ranges_clist { - \um_set_mathalphabet_Latin:Nnn \mathbfscr {up,it}{#1} + up, it, tt, bfup, bfit, bb , bbit, scr, bfscr, cal, bfcal, + frak, bffrak, sfup, sfit, bfsfup, bfsfit, bfsf } -\cs_new:Nn \um_config_bfscr_latin:n +\clist_map_inline:Nn \g__um_named_ranges_clist + { \__um_new_named_range:n {#1} } +\clist_new:N \g__um_alphabets_seq +\clist_set:Nn \g__um_alphabets_seq { latin, Latin, greek, Greek, num } +\cs_new:Nn \__um_new_alphabet_config:nnn { - \um_set_mathalphabet_latin:Nnn \mathbfscr {up,it}{#1} - } -\cs_new:Nn \um_config_bfcal_Latin:n + \prop_if_exist:cF {g__um_named_range_#1_prop} + { \__um_warning:nnn {no-named-range} {#1} {#2} } + + \prop_gput:cnn {g__um_named_range_#1_prop} { alpha_tl } + { + \prop_item:cn {g__um_named_range_#1_prop} { alpha_tl } + {#2} + } + % Q: do I need to bother removing duplicates? + + \cs_new:cn { __um_config_#1_#2:n } {#3} + } +\cs_new:Nn \__um_alphabet_config:nnn { \use:c {__um_config_#1_#2:n} {#3} } +\prg_new_conditional:Nnn \__um_if_alphabet_exists:nn {T,TF} + { + \cs_if_exist:cTF {__um_config_#1_#2:n} + \prg_return_true: \prg_return_false: + } +\cs_new:Nn \__um_default_mathalph:nnn + { + \seq_put_right:Nx \g__um_named_ranges_seq { \tl_to_str:n {#1} } + \seq_put_right:Nn \g__um_default_mathalph_seq {{#1}{#2}{#3}} + } +\__um_default_mathalph:nnn {up } {latin,Latin,greek,Greek,num,misc} {up } +\__um_default_mathalph:nnn {it } {latin,Latin,greek,Greek,misc} {it } +\__um_default_mathalph:nnn {bb } {latin,Latin,num,misc} {bb } +\__um_default_mathalph:nnn {bbit } {misc} {bbit } +\__um_default_mathalph:nnn {scr } {latin,Latin} {scr } +\__um_default_mathalph:nnn {cal } {Latin} {scr } +\__um_default_mathalph:nnn {bfcal } {Latin} {bfscr } +\__um_default_mathalph:nnn {frak } {latin,Latin} {frak } +\__um_default_mathalph:nnn {tt } {latin,Latin,num} {tt } +\__um_default_mathalph:nnn {sfup } {latin,Latin,num} {sfup } +\__um_default_mathalph:nnn {sfit } {latin,Latin} {sfit } +\__um_default_mathalph:nnn {bfup } {latin,Latin,greek,Greek,num,misc} {bfup } +\__um_default_mathalph:nnn {bfit } {latin,Latin,greek,Greek,misc} {bfit } +\__um_default_mathalph:nnn {bfscr } {latin,Latin} {bfscr } +\__um_default_mathalph:nnn {bffrak} {latin,Latin} {bffrak} +\__um_default_mathalph:nnn {bfsfup} {latin,Latin,greek,Greek,num,misc} {bfsfup} +\__um_default_mathalph:nnn {bfsfit} {latin,Latin,greek,Greek,misc} {bfsfit} +\clist_map_inline:nn { - \um_set_mathalphabet_Latin:Nnn \mathbfcal {up,it}{#1} + up, it, bfup, bfit, sfup, sfit, bfsfup, bfsfit, bfsf, + tt, bb, bbit, scr, bfscr, cal, bfcal, frak, bffrak, + normal, literal, sf, bf, } -\cs_new:Nn \um_config_bfsfup_num:n + { \__um_prepare_mathstyle:n {#1} } +\clist_map_inline:nn + { rm, it, bf, sf, tt } + { \cs_set_eq:cc { mathtext #1 } { math #1 } } +\clist_map_inline:nn { - \um_set_mathalphabet_numbers:Nnn \mathbfsf {up}{#1} - \um_set_mathalphabet_numbers:Nnn \mathbfsfup {up}{#1} + normal, bb , bbit, scr, bfscr, cal, bfcal, frak, bffrak, tt, + bfup, bfit, sfup, sfit, bfsfup, bfsfit, bfsf } -\cs_new:Nn \um_config_bfsfup_Latin:n { - \bool_if:NTF \g_um_sfliteral_bool - { - \um_map_chars_Latin:nn {bfsfup} {#1} - \um_set_mathalphabet_Latin:Nnn \mathbfsf {up}{#1} - } - { - \bool_if:NT \g_um_upsans_bool - { - \um_map_chars_Latin:nn {bfsfup,bfsfit} {#1} - \um_set_mathalphabet_Latin:Nnn \mathbfsf {up,it}{#1} - } - } - \um_set_mathalphabet_Latin:Nnn \mathbfsfup {up,it}{#1} + \cs_set:cpx { math #1 } { \exp_not:c { sym #1 } } } - -\cs_new:Nn \um_config_bfsfup_latin:n +\AtBeginDocument{ +\clist_map_inline:nn + { rm, it, bf, sf, tt } { - \bool_if:NTF \g_um_sfliteral_bool - { - \um_map_chars_latin:nn {bfsfup} {#1} - \um_set_mathalphabet_latin:Nnn \mathbfsf {up}{#1} - } + \cs_set_protected:cpx { math #1 } { - \bool_if:NT \g_um_upsans_bool - { - \um_map_chars_latin:nn {bfsfup,bfsfit} {#1} - \um_set_mathalphabet_latin:Nnn \mathbfsf {up,it}{#1} - } + \exp_not:n { \bool_if:NTF } \exp_not:c { g__um_ math #1 _text_bool} + { \exp_not:c { mathtext #1 } } + { \exp_not:c { sym #1 } } } - \um_set_mathalphabet_latin:Nnn \mathbfsfup {up,it}{#1} + }} +\cs_set_protected:Npn \mathup { \mathrm } +\cs_set_protected:Npn \symrm { \symup } +\cs_set:Npn \operator@font + { + \__um_switchto_literal: + \@fontswitch {} { \g__um_operator_mathfont_tl } } - -\cs_new:Nn \um_config_bfsfup_Greek:n +\cs_new:Npn \__um_setup_alphabets: { - \bool_if:NTF \g_um_sfliteral_bool - { - \um_map_chars_Greek:nn {bfsfup}{#1} - \um_set_mathalphabet_Greek:Nnn \mathbfsf {up}{#1} - } + \seq_if_empty:NTF \l__um_mathalph_seq { - \bool_if:NT \g_um_upsans_bool - { - \um_map_chars_Greek:nn {bfsfup,bfsfit}{#1} - \um_set_mathalphabet_Greek:Nnn \mathbfsf {up,it}{#1} - } + \__um_log:n {setup-implicit} + \seq_set_eq:NN \l__um_mathalph_seq \g__um_default_mathalph_seq + \bool_set_true:N \l__um_implicit_alph_bool + \__um_maybe_init_alphabet:n {sf} + \__um_maybe_init_alphabet:n {bf} + \__um_maybe_init_alphabet:n {bfsf} } - \um_set_mathalphabet_Greek:Nnn \mathbfsfup {up,it}{#1} - } - -\cs_new:Nn \um_config_bfsfup_greek:n - { - \bool_if:NTF \g_um_sfliteral_bool { - \um_map_chars_greek:nn {bfsfup} {#1} - \um_set_mathalphabet_greek:Nnn \mathbfsf {up} {#1} + \__um_log:n {setup-explicit} + \bool_set_false:N \l__um_implicit_alph_bool + \cs_set_eq:NN \__um_set_mathalphabet_char:nnn \__um_mathmap_noparse:nnn + \cs_set_eq:NN \__um_map_char_single:nn \__um_map_char_noparse:nn } + \seq_map_inline:Nn \l__um_mathalph_seq { - \bool_if:NT \g_um_upsans_bool + \tl_set:No \l__um_style_tl { \use_i:nnn ##1 } + \clist_set:No \l__um_alphabet_clist { \use_ii:nnn ##1 } + \tl_set:No \l__um_remap_style_tl { \use_iii:nnn ##1 } + + \clist_if_empty:NT \l__um_alphabet_clist { - \um_map_chars_greek:nn {bfsfup,bfsfit} {#1} - \um_set_mathalphabet_greek:Nnn \mathbfsf {up,it} {#1} + \cs_set_eq:NN \__um_maybe_init_alphabet:n \__um_init_alphabet:n + \clist_set:Nn \l__um_alphabet_clist { latin, Latin, greek, Greek, num, misc } } + + \__um_setup_math_alphabet:NNN + \l__um_style_tl \l__um_alphabet_clist \l__um_remap_style_tl } - \um_set_mathalphabet_greek:Nnn \mathbfsfup {up,it} {#1} + \seq_if_empty:NF \l__um_missing_alph_seq { \__um_log:n { missing-alphabets } } } -\cs_new:Nn \um_config_bfsfup_misc:n +\cs_new:Nn \__um_setup_math_alphabet:NNN { - \bool_if:NTF \g_um_literal_Nabla_bool + \tl_set_eq:NN \l__um_style_tl #1% actually a no-op but makes the code clearer! + \clist_map_inline:Nn #2 { - \um_map_single:nnn {Nabla}{bfsfup}{#1} - } - { - \bool_if:NT \g_um_upNabla_bool - { - \um_map_single:nnn {Nabla}{bfsfup,bfsfit}{#1} - } - } - \bool_if:NTF \g_um_literal_partial_bool - { - \um_map_single:nnn {partial}{bfsfup}{#1} - } - { - \bool_if:NT \g_um_uppartial_bool + \tl_set:Nn \l__um_alphabet_tl {##1} + \__um_if_alphabet_exists:nnTF \l__um_style_tl \l__um_alphabet_tl { - \um_map_single:nnn {partial}{bfsfup,bfsfit}{#1} - } - } - \um_set_mathalphabet_pos:Nnnn \mathbfsfup {partial} {up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathbfsfup {Nabla} {up,it}{#1} - \bool_if:NTF \g_um_literal_partial_bool - { - \um_set_mathalphabet_pos:Nnnn \mathbfsf {partial} {up}{#1} - } - { - \bool_if:NT \g_um_uppartial_bool - { - \um_set_mathalphabet_pos:Nnnn \mathbfsf {partial} {up,it}{#1} + \str_if_eq_x:nnTF {\l__um_alphabet_tl} {misc} + { + \__um_maybe_init_alphabet:n \l__um_style_tl + \clist_map_break: + } + { + \__um_glyph_if_exist:nT { \__um_to_usv:nn {\l__um_style_tl} {\l__um_alphabet_tl} } + { + \__um_maybe_init_alphabet:n \l__um_style_tl + \clist_map_break: + } + } } + { \msg_warning:nnx {unicode-math} {no-alphabet} { \l__um_style_tl / \l__um_alphabet_tl } } } - \bool_if:NTF \g_um_literal_Nabla_bool - { - \um_set_mathalphabet_pos:Nnnn \mathbfsf {Nabla} {up}{#1} - } + \csname TIC\endcsname + \clist_map_inline:Nn #2 { - \bool_if:NT \g_um_upNabla_bool + \tl_set:Nx \l__um_alphabet_tl { \tl_trim_spaces:n {##1} } + \cs_if_exist:cT {__um_config_ \l__um_style_tl _ \l__um_alphabet_tl :n} { - \um_set_mathalphabet_pos:Nnnn \mathbfsf {Nabla} {up,it}{#1} + \exp_args:No \tl_if_eq:nnTF \l__um_alphabet_tl {misc} + { + \__um_log:nx {setup-alph} {math \l__um_style_tl~(\l__um_alphabet_tl)} + \__um_alphabet_config:nnn {\l__um_style_tl} {\l__um_alphabet_tl} {#3} + } + { + \__um_glyph_if_exist:nTF { \__um_to_usv:nn {\l__um_style_tl} {\l__um_alphabet_tl} } + { + \__um_log:nx {setup-alph} {math \l__um_style_tl~(\l__um_alphabet_tl)} + \__um_alphabet_config:nnn {\l__um_style_tl} {\l__um_alphabet_tl} {#3} + } + { + \bool_if:NTF \l__um_implicit_alph_bool + { + \seq_put_right:Nx \l__um_missing_alph_seq + { + \@backslashchar sym \l__um_style_tl \space + (\tl_use:c{c__um_math_alphabet_name_ \l__um_alphabet_tl _tl}) + } + } + { + \__um_alphabet_config:nnn {\l__um_style_tl} {\l__um_alphabet_tl} {up} + } + } + } } } + \csname TOC\endcsname } -\cs_new:Nn \um_config_bfsfit_Latin:n +\cs_new:Nn \__um_map_char_noparse:nn + { \__um_set_mathcode:nnnn {#1}{\mathalpha}{\__um_symfont_tl}{#2} } +\cs_new:Nn \__um_map_char_parse:nn { - \bool_if:NTF \g_um_sfliteral_bool - { - \um_map_chars_Latin:nn {bfsfit} {#1} - \um_set_mathalphabet_Latin:Nnn \mathbfsf {it}{#1} - } - { - \bool_if:NF \g_um_upsans_bool - { - \um_map_chars_Latin:nn {bfsfup,bfsfit} {#1} - \um_set_mathalphabet_Latin:Nnn \mathbfsf {up,it}{#1} - } - } - \um_set_mathalphabet_Latin:Nnn \mathbfsfit {up,it}{#1} + \__um_if_char_spec:nNNT {#1} {\@nil} {\mathalpha} + { \__um_map_char_noparse:nn {#1}{#2} } } - -\cs_new:Nn \um_config_bfsfit_latin:n +\cs_new:Nn \__um_map_char_single:nnn { - \bool_if:NTF \g_um_sfliteral_bool - { - \um_map_chars_latin:nn {bfsfit} {#1} - \um_set_mathalphabet_latin:Nnn \mathbfsf {it}{#1} - } - { - \bool_if:NF \g_um_upsans_bool + \__um_map_char_single:nn { \__um_to_usv:nn {#1}{#3} } + { \__um_to_usv:nn {#2}{#3} } + } +\cs_set:Nn \__um_map_chars_range:nnn + { + \int_step_inline:nnnn {0}{1}{#1-1} + { \__um_map_char_single:nn {#2+##1}{#3+##1} } + } +\cs_new:Nn \__um_map_chars_range:nnnn + { + \__um_map_chars_range:nnn {#1} { \__um_to_usv:nn {#2}{#4} } + { \__um_to_usv:nn {#3}{#4} } + } +\cs_set:Nn \__um_set_normal_char:nnn + { + \__um_usv_if_exist:nnT {#3} {#1} + { + \clist_map_inline:nn {#2} { - \um_map_chars_latin:nn {bfsfup,bfsfit} {#1} - \um_set_mathalphabet_latin:Nnn \mathbfsf {up,it}{#1} + \__um_set_mathalphabet_pos:nnnn {normal} {#1} {##1} {#3} + \__um_map_char_single:nnn {##1} {#3} {#1} } - } - \um_set_mathalphabet_latin:Nnn \mathbfsfit {up,it}{#1} + } } - -\cs_new:Nn \um_config_bfsfit_Greek:n +\cs_new:Nn \__um_set_normal_Latin:nn { - \bool_if:NTF \g_um_sfliteral_bool - { - \um_map_chars_Greek:nn {bfsfit}{#1} - \um_set_mathalphabet_Greek:Nnn \mathbfsf {it}{#1} - } + \clist_map_inline:nn {#1} { - \bool_if:NF \g_um_upsans_bool - { - \um_map_chars_Greek:nn {bfsfup,bfsfit}{#1} - \um_set_mathalphabet_Greek:Nnn \mathbfsf {up,it}{#1} - } + \__um_set_mathalphabet_Latin:nnn {normal} {##1} {#2} + \__um_map_chars_range:nnnn {26} {##1} {#2} {Latin} } - \um_set_mathalphabet_Greek:Nnn \mathbfsfit {up,it}{#1} } - -\cs_new:Nn \um_config_bfsfit_greek:n +\cs_new:Nn \__um_set_normal_latin:nn { - \bool_if:NTF \g_um_sfliteral_bool + \clist_map_inline:nn {#1} { - \um_map_chars_greek:nn {bfsfit} {#1} - \um_set_mathalphabet_greek:Nnn \mathbfsf {it} {#1} + \__um_set_mathalphabet_latin:nnn {normal} {##1} {#2} + \__um_map_chars_range:nnnn {26} {##1} {#2} {latin} } + } +\cs_new:Nn \__um_set_normal_greek:nn + { + \clist_map_inline:nn {#1} { - \bool_if:NF \g_um_upsans_bool - { - \um_map_chars_greek:nn {bfsfup,bfsfit} {#1} - \um_set_mathalphabet_greek:Nnn \mathbfsf {up,it} {#1} - } + \__um_set_mathalphabet_greek:nnn {normal} {##1} {#2} + \__um_map_chars_range:nnnn {25} {##1} {#2} {greek} + \__um_map_char_single:nnn {##1} {#2} {varepsilon} + \__um_map_char_single:nnn {##1} {#2} {vartheta} + \__um_map_char_single:nnn {##1} {#2} {varkappa} + \__um_map_char_single:nnn {##1} {#2} {varphi} + \__um_map_char_single:nnn {##1} {#2} {varrho} + \__um_map_char_single:nnn {##1} {#2} {varpi} + \__um_set_mathalphabet_pos:nnnn {normal} {varepsilon} {##1} {#2} + \__um_set_mathalphabet_pos:nnnn {normal} {vartheta} {##1} {#2} + \__um_set_mathalphabet_pos:nnnn {normal} {varkappa} {##1} {#2} + \__um_set_mathalphabet_pos:nnnn {normal} {varphi} {##1} {#2} + \__um_set_mathalphabet_pos:nnnn {normal} {varrho} {##1} {#2} + \__um_set_mathalphabet_pos:nnnn {normal} {varpi} {##1} {#2} } - \um_set_mathalphabet_greek:Nnn \mathbfsfit {up,it} {#1} } - -\cs_new:Nn \um_config_bfsfit_misc:n +\cs_new:Nn \__um_set_normal_Greek:nn { - \bool_if:NTF \g_um_literal_Nabla_bool + \clist_map_inline:nn {#1} { - \um_map_single:nnn {Nabla}{bfsfit}{#1} + \__um_set_mathalphabet_Greek:nnn {normal} {##1} {#2} + \__um_map_chars_range:nnnn {25} {##1} {#2} {Greek} + \__um_map_char_single:nnn {##1} {#2} {varTheta} + \__um_set_mathalphabet_pos:nnnn {normal} {varTheta} {##1} {#2} } + } +\cs_new:Nn \__um_set_normal_numbers:nn + { + \__um_set_mathalphabet_numbers:nnn {normal} {#1} {#2} + \__um_map_chars_range:nnnn {10} {#1} {#2} {num} + } +\cs_new:Nn \__um_mathmap_noparse:nnn + { + \clist_map_inline:nn {#2} { - \bool_if:NF \g_um_upNabla_bool + \tl_put_right:cx {__um_switchto_#1:} { - \um_map_single:nnn {Nabla}{bfsfup,bfsfit}{#1} + \__um_set_mathcode:nnnn {##1} {\mathalpha} {\__um_symfont_tl} {#3} } } - \bool_if:NTF \g_um_literal_partial_bool - { - \um_map_single:nnn {partial}{bfsfit}{#1} - } + } +\cs_new:Nn \__um_mathmap_parse:nnn + { + \clist_if_in:NnT \l__um_char_nrange_clist {#3} { - \bool_if:NF \g_um_uppartial_bool - { - \um_map_single:nnn {partial}{bfsfup,bfsfit}{#1} - } + \__um_mathmap_noparse:nnn {#1}{#2}{#3} } - \um_set_mathalphabet_pos:Nnnn \mathbfsfit {partial} {up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathbfsfit {Nabla} {up,it}{#1} - \bool_if:NTF \g_um_literal_partial_bool + } +\cs_new:Nn \__um_set_mathalphabet_char:nnnn + { + \__um_set_mathalphabet_char:nnn {#1} { \__um_to_usv:nn {#2} {#4} } + { \__um_to_usv:nn {#3} {#4} } + } +\cs_new:Nn \__um_set_mathalph_range:nnnn + { + \int_step_inline:nnnn {0} {1} {#1-1} + { \__um_set_mathalphabet_char:nnn {#2} { ##1 + #3 } { ##1 + #4 } } + } +\cs_new:Nn \__um_set_mathalph_range:nnnnn + { + \__um_set_mathalph_range:nnnn {#1} {#2} { \__um_to_usv:nn {#3} {#5} } + { \__um_to_usv:nn {#4} {#5} } + } +\cs_new:Nn \__um_set_mathalphabet_pos:nnnn + { + \__um_usv_if_exist:nnT {#4} {#2} { - \um_set_mathalphabet_pos:Nnnn \mathbfsf {partial} {it}{#1} + \clist_map_inline:nn {#3} + { \__um_set_mathalphabet_char:nnnn {#1} {##1} {#4} {#2} } } + } +\cs_new:Nn \__um_set_mathalphabet_numbers:nnn + { + \clist_map_inline:nn {#2} + { \__um_set_mathalph_range:nnnnn {10} {#1} {##1} {#3} {num} } + } +\cs_new:Nn \__um_set_mathalphabet_Latin:nnn + { + \clist_map_inline:nn {#2} + { \__um_set_mathalph_range:nnnnn {26} {#1} {##1} {#3} {Latin} } + } +\cs_new:Nn \__um_set_mathalphabet_latin:nnn + { + \clist_map_inline:nn {#2} { - \bool_if:NF \g_um_uppartial_bool - { - \um_set_mathalphabet_pos:Nnnn \mathbfsf {partial} {up,it}{#1} - } + \__um_set_mathalph_range:nnnnn {26} {#1} {##1} {#3} {latin} + \__um_set_mathalphabet_char:nnnn {#1} {##1} {#3} {h} } - \bool_if:NTF \g_um_literal_Nabla_bool + } +\cs_new:Nn \__um_set_mathalphabet_Greek:nnn + { + \clist_map_inline:nn {#2} { - \um_set_mathalphabet_pos:Nnnn \mathbfsf {Nabla} {it}{#1} + \__um_set_mathalph_range:nnnnn {25} {#1} {##1} {#3} {Greek} + \__um_set_mathalphabet_char:nnnn {#1} {##1} {#3} {varTheta} } + } +\cs_new:Nn \__um_set_mathalphabet_greek:nnn + { + \clist_map_inline:nn {#2} { - \bool_if:NF \g_um_upNabla_bool - { - \um_set_mathalphabet_pos:Nnnn \mathbfsf {Nabla} {up,it}{#1} - } + \__um_set_mathalph_range:nnnnn {25} {#1} {##1} {#3} {greek} + \__um_set_mathalphabet_char:nnnn {#1} {##1} {#3} {varepsilon} + \__um_set_mathalphabet_char:nnnn {#1} {##1} {#3} {vartheta} + \__um_set_mathalphabet_char:nnnn {#1} {##1} {#3} {varkappa} + \__um_set_mathalphabet_char:nnnn {#1} {##1} {#3} {varphi} + \__um_set_mathalphabet_char:nnnn {#1} {##1} {#3} {varrho} + \__um_set_mathalphabet_char:nnnn {#1} {##1} {#3} {varpi} } } -\cs_new:Npn \um_symbol_setup: +\cs_new:Npn \__um_symbol_setup: { \cs_set:Npn \UnicodeMathSymbol ##1##2##3##4 { - \exp_not:n { \_um_sym:nnn {##1} {##2} {##3} } + \exp_not:n { \__um_sym:nnn {##1} {##2} {##3} } } } -\CatchFileEdef \g_um_mathtable_tl {unicode-math-table.tex} {\um_symbol_setup:} -\cs_new:Nn \um_input_math_symbol_table: {\g_um_mathtable_tl} +\CatchFileEdef \g__um_mathtable_tl {unicode-math-table.tex} {\__um_symbol_setup:} +\cs_new:Nn \__um_input_math_symbol_table: {\g__um_mathtable_tl} \group_begin: \char_set_catcode_other:N \^ - \cs_gset:Npn \um_cs_set_eq_active_char:Nw #1 = "#2 \q_nil + \cs_gset:Npn \__um_cs_set_eq_active_char:Nw #1 = "#2 \q_nil { \tex_lowercase:D { @@ -2068,7 +1178,7 @@ } } } - \cs_new:Npn \um_active_char_set:wc "#1 \q_nil #2 + \cs_new:Npn \__um_active_char_set:wc "#1 \q_nil #2 { \tex_lowercase:D { @@ -2077,25 +1187,22 @@ } } \group_end: -\AtBeginDocument{\um_define_math_chars:} -\cs_new:Nn \um_define_math_chars: +\AtBeginDocument{\__um_define_math_chars:} +\cs_new:Nn \__um_define_math_chars: { \group_begin: \char_set_catcode_math_superscript:N \^ - \cs_set:Npn \_um_sym:nnn ##1##2##3 + \cs_set:Npn \__um_sym:nnn ##1##2##3 { - \bool_if:nF { \cs_if_eq_p:NN ##3 \mathaccent || - \cs_if_eq_p:NN ##3 \mathopen || - \cs_if_eq_p:NN ##3 \mathclose || - \cs_if_eq_p:NN ##3 \mathover || - \cs_if_eq_p:NN ##3 \mathunder || - \cs_if_eq_p:NN ##3 \mathbotaccent } + \tl_if_in:nnT + { \mathord \mathalpha \mathbin \mathrel \mathpunct \mathop \mathfence } + {##3} { - \um_cs_set_eq_active_char:Nw ##2 = ##1 \q_nil \ignorespaces + \__um_cs_set_eq_active_char:Nw ##2 = ##1 \q_nil \ignorespaces } } \char_set_catcode_other:N \# - \um_input_math_symbol_table: + \__um_input_math_symbol_table: \group_end: } \group_begin: @@ -2110,171 +1217,169 @@ } } |group_end: -\AtBeginDocument { \um_load_lm_if_necessary: } -\cs_new:Nn \um_load_lm_if_necessary: +\AtBeginDocument { \__um_load_lm_if_necessary: } +\cs_new:Nn \__um_load_lm_if_necessary: { - \cs_if_exist:NF \l_um_fontname_tl + \cs_if_exist:NF \l__um_fontname_tl { - % XXX: update this when lmmath-bold.otf is released - \setmathfont[BoldFont={latinmodern-math.otf}]{latinmodern-math.otf} + % TODO: update this when lmmath-bold.otf is released + \setmathfont{latinmodern-math.otf}[BoldFont={latinmodern-math.otf}] + \bool_set_false:N \g__um_mainfont_already_set_bool } } -\cs_new:Nn \um_arg_i_before_egroup:n {#1\egroup} -\cs_new:Nn \um_superscript:n +\cs_new:Nn \__um_arg_i_before_egroup:n {#1\egroup} +\cs_new:Nn \__um_superscript:n { ^\bgroup #1 - \peek_meaning_remove:NTF ^ \um_arg_i_before_egroup:n \egroup + \peek_meaning_remove:NTF ^ \__um_arg_i_before_egroup:n \egroup } -\muskip_new:N \g_um_primekern_muskip -\muskip_gset:Nn \g_um_primekern_muskip { -\thinmuskip/2 }% arbitrary -\int_new:N \l_um_primecount_int -\cs_new:Nn \um_nprimes:Nn +\cs_new:Nn \__um_nprimes:Nn { - \um_superscript:n + \__um_superscript:n { #1 - \prg_replicate:nn {#2-1} { \mskip \g_um_primekern_muskip #1 } + \prg_replicate:nn {#2-1} { \mskip \g__um_primekern_muskip #1 } } } -\cs_new:Nn \um_nprimes_select:nn +\cs_new:Nn \__um_nprimes_select:nn { - \int_case:nnn {#2} + \int_case:nnF {#2} { - {1} { \um_superscript:n {#1} } + {1} { \__um_superscript:n {#1} } {2} { - \um_glyph_if_exist:nTF {"2033} - { \um_superscript:n {\um_prime_double_mchar} } - { \um_nprimes:Nn #1 {#2} } + \__um_glyph_if_exist:nTF {"2033} + { \__um_superscript:n {\__um_prime_double_mchar} } + { \__um_nprimes:Nn #1 {#2} } } {3} { - \um_glyph_if_exist:nTF {"2034} - { \um_superscript:n {\um_prime_triple_mchar} } - { \um_nprimes:Nn #1 {#2} } + \__um_glyph_if_exist:nTF {"2034} + { \__um_superscript:n {\__um_prime_triple_mchar} } + { \__um_nprimes:Nn #1 {#2} } } {4} { - \um_glyph_if_exist:nTF {"2057} - { \um_superscript:n {\um_prime_quad_mchar} } - { \um_nprimes:Nn #1 {#2} } + \__um_glyph_if_exist:nTF {"2057} + { \__um_superscript:n {\__um_prime_quad_mchar} } + { \__um_nprimes:Nn #1 {#2} } } } { - \um_nprimes:Nn #1 {#2} + \__um_nprimes:Nn #1 {#2} } } -\cs_new:Nn \um_nbackprimes_select:nn +\cs_new:Nn \__um_nbackprimes_select:nn { - \int_case:nnn {#2} + \int_case:nnF {#2} { - {1} { \um_superscript:n {#1} } + {1} { \__um_superscript:n {#1} } {2} { - \um_glyph_if_exist:nTF {"2036} - { \um_superscript:n {\um_backprime_double_mchar} } - { \um_nprimes:Nn #1 {#2} } + \__um_glyph_if_exist:nTF {"2036} + { \__um_superscript:n {\__um_backprime_double_mchar} } + { \__um_nprimes:Nn #1 {#2} } } {3} { - \um_glyph_if_exist:nTF {"2037} - { \um_superscript:n {\um_backprime_triple_mchar} } - { \um_nprimes:Nn #1 {#2} } + \__um_glyph_if_exist:nTF {"2037} + { \__um_superscript:n {\__um_backprime_triple_mchar} } + { \__um_nprimes:Nn #1 {#2} } } } { - \um_nprimes:Nn #1 {#2} + \__um_nprimes:Nn #1 {#2} } } -\cs_new:Npn \um_scan_prime: +\cs_new:Npn \__um_scan_prime: { - \cs_set_eq:NN \um_superscript:n \use:n - \int_zero:N \l_um_primecount_int - \um_scanprime_collect:N \um_prime_single_mchar + \cs_set_eq:NN \__um_superscript:n \use:n + \int_zero:N \l__um_primecount_int + \__um_scanprime_collect:N \__um_prime_single_mchar } -\cs_new:Npn \um_scan_dprime: +\cs_new:Npn \__um_scan_dprime: { - \cs_set_eq:NN \um_superscript:n \use:n - \int_set:Nn \l_um_primecount_int {1} - \um_scanprime_collect:N \um_prime_single_mchar + \cs_set_eq:NN \__um_superscript:n \use:n + \int_set:Nn \l__um_primecount_int {1} + \__um_scanprime_collect:N \__um_prime_single_mchar } -\cs_new:Npn \um_scan_trprime: +\cs_new:Npn \__um_scan_trprime: { - \cs_set_eq:NN \um_superscript:n \use:n - \int_set:Nn \l_um_primecount_int {2} - \um_scanprime_collect:N \um_prime_single_mchar + \cs_set_eq:NN \__um_superscript:n \use:n + \int_set:Nn \l__um_primecount_int {2} + \__um_scanprime_collect:N \__um_prime_single_mchar } -\cs_new:Npn \um_scan_qprime: +\cs_new:Npn \__um_scan_qprime: { - \cs_set_eq:NN \um_superscript:n \use:n - \int_set:Nn \l_um_primecount_int {3} - \um_scanprime_collect:N \um_prime_single_mchar + \cs_set_eq:NN \__um_superscript:n \use:n + \int_set:Nn \l__um_primecount_int {3} + \__um_scanprime_collect:N \__um_prime_single_mchar } -\cs_new:Npn \um_scan_sup_prime: +\cs_new:Npn \__um_scan_sup_prime: { - \int_zero:N \l_um_primecount_int - \um_scanprime_collect:N \um_prime_single_mchar + \int_zero:N \l__um_primecount_int + \__um_scanprime_collect:N \__um_prime_single_mchar } -\cs_new:Npn \um_scan_sup_dprime: +\cs_new:Npn \__um_scan_sup_dprime: { - \int_set:Nn \l_um_primecount_int {1} - \um_scanprime_collect:N \um_prime_single_mchar + \int_set:Nn \l__um_primecount_int {1} + \__um_scanprime_collect:N \__um_prime_single_mchar } -\cs_new:Npn \um_scan_sup_trprime: +\cs_new:Npn \__um_scan_sup_trprime: { - \int_set:Nn \l_um_primecount_int {2} - \um_scanprime_collect:N \um_prime_single_mchar + \int_set:Nn \l__um_primecount_int {2} + \__um_scanprime_collect:N \__um_prime_single_mchar } -\cs_new:Npn \um_scan_sup_qprime: +\cs_new:Npn \__um_scan_sup_qprime: { - \int_set:Nn \l_um_primecount_int {3} - \um_scanprime_collect:N \um_prime_single_mchar + \int_set:Nn \l__um_primecount_int {3} + \__um_scanprime_collect:N \__um_prime_single_mchar } -\cs_new:Nn \um_scanprime_collect:N +\cs_new:Nn \__um_scanprime_collect:N { - \int_incr:N \l_um_primecount_int + \int_incr:N \l__um_primecount_int \peek_meaning_remove:NTF ' - { \um_scanprime_collect:N #1 } + { \__um_scanprime_collect:N #1 } { - \peek_meaning_remove:NTF \um_scan_prime: - { \um_scanprime_collect:N #1 } + \peek_meaning_remove:NTF \__um_scan_prime: + { \__um_scanprime_collect:N #1 } { \peek_meaning_remove:NTF ^^^^2032 - { \um_scanprime_collect:N #1 } + { \__um_scanprime_collect:N #1 } { - \peek_meaning_remove:NTF \um_scan_dprime: + \peek_meaning_remove:NTF \__um_scan_dprime: { - \int_incr:N \l_um_primecount_int - \um_scanprime_collect:N #1 + \int_incr:N \l__um_primecount_int + \__um_scanprime_collect:N #1 } { \peek_meaning_remove:NTF ^^^^2033 { - \int_incr:N \l_um_primecount_int - \um_scanprime_collect:N #1 + \int_incr:N \l__um_primecount_int + \__um_scanprime_collect:N #1 } { - \peek_meaning_remove:NTF \um_scan_trprime: + \peek_meaning_remove:NTF \__um_scan_trprime: { - \int_add:Nn \l_um_primecount_int {2} - \um_scanprime_collect:N #1 + \int_add:Nn \l__um_primecount_int {2} + \__um_scanprime_collect:N #1 } { \peek_meaning_remove:NTF ^^^^2034 { - \int_add:Nn \l_um_primecount_int {2} - \um_scanprime_collect:N #1 + \int_add:Nn \l__um_primecount_int {2} + \__um_scanprime_collect:N #1 } { - \peek_meaning_remove:NTF \um_scan_qprime: + \peek_meaning_remove:NTF \__um_scan_qprime: { - \int_add:Nn \l_um_primecount_int {3} - \um_scanprime_collect:N #1 + \int_add:Nn \l__um_primecount_int {3} + \__um_scanprime_collect:N #1 } { \peek_meaning_remove:NTF ^^^^2057 { - \int_add:Nn \l_um_primecount_int {3} - \um_scanprime_collect:N #1 + \int_add:Nn \l__um_primecount_int {3} + \__um_scanprime_collect:N #1 } { - \um_nprimes_select:nn {#1} {\l_um_primecount_int} + \__um_nprimes_select:nn {#1} {\l__um_primecount_int} } } } @@ -2285,82 +1390,82 @@ } } } -\cs_new:Npn \um_scan_backprime: +\cs_new:Npn \__um_scan_backprime: { - \cs_set_eq:NN \um_superscript:n \use:n - \int_zero:N \l_um_primecount_int - \um_scanbackprime_collect:N \um_backprime_single_mchar + \cs_set_eq:NN \__um_superscript:n \use:n + \int_zero:N \l__um_primecount_int + \__um_scanbackprime_collect:N \__um_backprime_single_mchar } -\cs_new:Npn \um_scan_backdprime: +\cs_new:Npn \__um_scan_backdprime: { - \cs_set_eq:NN \um_superscript:n \use:n - \int_set:Nn \l_um_primecount_int {1} - \um_scanbackprime_collect:N \um_backprime_single_mchar + \cs_set_eq:NN \__um_superscript:n \use:n + \int_set:Nn \l__um_primecount_int {1} + \__um_scanbackprime_collect:N \__um_backprime_single_mchar } -\cs_new:Npn \um_scan_backtrprime: +\cs_new:Npn \__um_scan_backtrprime: { - \cs_set_eq:NN \um_superscript:n \use:n - \int_set:Nn \l_um_primecount_int {2} - \um_scanbackprime_collect:N \um_backprime_single_mchar + \cs_set_eq:NN \__um_superscript:n \use:n + \int_set:Nn \l__um_primecount_int {2} + \__um_scanbackprime_collect:N \__um_backprime_single_mchar } -\cs_new:Npn \um_scan_sup_backprime: +\cs_new:Npn \__um_scan_sup_backprime: { - \int_zero:N \l_um_primecount_int - \um_scanbackprime_collect:N \um_backprime_single_mchar + \int_zero:N \l__um_primecount_int + \__um_scanbackprime_collect:N \__um_backprime_single_mchar } -\cs_new:Npn \um_scan_sup_backdprime: +\cs_new:Npn \__um_scan_sup_backdprime: { - \int_set:Nn \l_um_primecount_int {1} - \um_scanbackprime_collect:N \um_backprime_single_mchar + \int_set:Nn \l__um_primecount_int {1} + \__um_scanbackprime_collect:N \__um_backprime_single_mchar } -\cs_new:Npn \um_scan_sup_backtrprime: +\cs_new:Npn \__um_scan_sup_backtrprime: { - \int_set:Nn \l_um_primecount_int {2} - \um_scanbackprime_collect:N \um_backprime_single_mchar + \int_set:Nn \l__um_primecount_int {2} + \__um_scanbackprime_collect:N \__um_backprime_single_mchar } -\cs_new:Nn \um_scanbackprime_collect:N +\cs_new:Nn \__um_scanbackprime_collect:N { - \int_incr:N \l_um_primecount_int + \int_incr:N \l__um_primecount_int \peek_meaning_remove:NTF ` { - \um_scanbackprime_collect:N #1 + \__um_scanbackprime_collect:N #1 } { - \peek_meaning_remove:NTF \um_scan_backprime: + \peek_meaning_remove:NTF \__um_scan_backprime: { - \um_scanbackprime_collect:N #1 + \__um_scanbackprime_collect:N #1 } { \peek_meaning_remove:NTF ^^^^2035 { - \um_scanbackprime_collect:N #1 + \__um_scanbackprime_collect:N #1 } { - \peek_meaning_remove:NTF \um_scan_backdprime: + \peek_meaning_remove:NTF \__um_scan_backdprime: { - \int_incr:N \l_um_primecount_int - \um_scanbackprime_collect:N #1 + \int_incr:N \l__um_primecount_int + \__um_scanbackprime_collect:N #1 } { \peek_meaning_remove:NTF ^^^^2036 { - \int_incr:N \l_um_primecount_int - \um_scanbackprime_collect:N #1 + \int_incr:N \l__um_primecount_int + \__um_scanbackprime_collect:N #1 } { - \peek_meaning_remove:NTF \um_scan_backtrprime: + \peek_meaning_remove:NTF \__um_scan_backtrprime: { - \int_add:Nn \l_um_primecount_int {2} - \um_scanbackprime_collect:N #1 + \int_add:Nn \l__um_primecount_int {2} + \__um_scanbackprime_collect:N #1 } { \peek_meaning_remove:NTF ^^^^2037 { - \int_add:Nn \l_um_primecount_int {2} - \um_scanbackprime_collect:N #1 + \int_add:Nn \l__um_primecount_int {2} + \__um_scanbackprime_collect:N #1 } { - \um_nbackprimes_select:nn {#1} {\l_um_primecount_int} + \__um_nbackprimes_select:nn {#1} {\l__um_primecount_int} } } } @@ -2369,16 +1474,16 @@ } } } -\AtBeginDocument{\um_define_prime_commands: \um_define_prime_chars:} -\cs_new:Nn \um_define_prime_commands: +\AtBeginDocument{\__um_define_prime_commands: \__um_define_prime_chars:} +\cs_new:Nn \__um_define_prime_commands: { - \cs_set_eq:NN \prime \um_prime_single_mchar - \cs_set_eq:NN \dprime \um_prime_double_mchar - \cs_set_eq:NN \trprime \um_prime_triple_mchar - \cs_set_eq:NN \qprime \um_prime_quad_mchar - \cs_set_eq:NN \backprime \um_backprime_single_mchar - \cs_set_eq:NN \backdprime \um_backprime_double_mchar - \cs_set_eq:NN \backtrprime \um_backprime_triple_mchar + \cs_set_eq:NN \prime \__um_prime_single_mchar + \cs_set_eq:NN \dprime \__um_prime_double_mchar + \cs_set_eq:NN \trprime \__um_prime_triple_mchar + \cs_set_eq:NN \qprime \__um_prime_quad_mchar + \cs_set_eq:NN \backprime \__um_backprime_single_mchar + \cs_set_eq:NN \backdprime \__um_backprime_double_mchar + \cs_set_eq:NN \backtrprime \__um_backprime_triple_mchar } \group_begin: \char_set_catcode_active:N \' @@ -2390,150 +1495,153 @@ \char_set_catcode_active:n {"2035} \char_set_catcode_active:n {"2036} \char_set_catcode_active:n {"2037} - \cs_gset:Nn \um_define_prime_chars: - { - \cs_set_eq:NN ' \um_scan_sup_prime: - \cs_set_eq:NN ^^^^2032 \um_scan_sup_prime: - \cs_set_eq:NN ^^^^2033 \um_scan_sup_dprime: - \cs_set_eq:NN ^^^^2034 \um_scan_sup_trprime: - \cs_set_eq:NN ^^^^2057 \um_scan_sup_qprime: - \cs_set_eq:NN ` \um_scan_sup_backprime: - \cs_set_eq:NN ^^^^2035 \um_scan_sup_backprime: - \cs_set_eq:NN ^^^^2036 \um_scan_sup_backdprime: - \cs_set_eq:NN ^^^^2037 \um_scan_sup_backtrprime: + \cs_gset:Nn \__um_define_prime_chars: + { + \cs_set_eq:NN ' \__um_scan_sup_prime: + \cs_set_eq:NN ^^^^2032 \__um_scan_sup_prime: + \cs_set_eq:NN ^^^^2033 \__um_scan_sup_dprime: + \cs_set_eq:NN ^^^^2034 \__um_scan_sup_trprime: + \cs_set_eq:NN ^^^^2057 \__um_scan_sup_qprime: + \cs_set_eq:NN ` \__um_scan_sup_backprime: + \cs_set_eq:NN ^^^^2035 \__um_scan_sup_backprime: + \cs_set_eq:NN ^^^^2036 \__um_scan_sup_backdprime: + \cs_set_eq:NN ^^^^2037 \__um_scan_sup_backtrprime: } \group_end: -\AtBeginDocument{\um_redefine_radical:} -\cs_new:Nn \um_redefine_radical: +\AtBeginDocument{\__um_redefine_radical:} +\cs_new:Nn \__um_redefine_radical: { \@ifpackageloaded { amsmath } { } { \cs_set:Npn \root ##1 \of ##2 { - \luatexUroot \l_um_radical_sqrt_tl { ##1 } { ##2 } + \luatexUroot \l__um_radical_sqrt_tl { ##1 } { ##2 } } } } -\cs_new:Nn \um_fontdimen_to_percent:nn +\cs_new:Nn \__um_fontdimen_to_percent:nn { - \strip@pt\dimexpr\fontdimen#1#2*65536/100\relax + \fp_eval:n { \dim_to_decimal:n { \fontdimen #1 #2 } * 65536 / 100 } } -\cs_new:Nn \um_fontdimen_to_scale:nn +\cs_new:Nn \__um_fontdimen_to_scale:nn { - \um_fontdimen_to_percent:nn {#1} {#2} \dimexpr \f@size pt\relax + \fp_eval:n {\__um_fontdimen_to_percent:nn {#1} {#2} * \f@size } pt } -\cs_new:Nn \um_mathstyle_scale:Nnn +\cs_new:Nn \__um_mathstyle_scale:Nnn { \ifx#1\scriptstyle - #2 \um_fontdimen_to_percent:nn {10} \l_um_font #3 + #2 \__um_fontdimen_to_percent:nn {10} \l__um_font #3 \else \ifx#1\scriptscriptstyle - #2 \um_fontdimen_to_percent:nn {11} \l_um_font #3 + #2 \__um_fontdimen_to_percent:nn {11} \l__um_font #3 \else #2 #3 \fi \fi } -\prop_new:N \g_um_supers_prop -\prop_new:N \g_um_subs_prop \group_begin: -\cs_new:Nn \um_setup_active_superscript:nn +\cs_new:Nn \__um_setup_active_superscript:nn { - \prop_gput:Nxn \g_um_supers_prop {\meaning #1} {#2} + \prop_gput:Non \g__um_supers_prop {\meaning #1} {#2} \char_set_catcode_active:N #1 - \char_gmake_mathactive:N #1 + \__um_char_gmake_mathactive:N #1 \scantokens { \cs_gset:Npn #1 { - \tl_set:Nn \l_um_ss_chain_tl {#2} - \cs_set_eq:NN \um_sub_or_super:n \sp - \tl_set:Nn \l_um_tmpa_tl {supers} - \um_scan_sscript: - } - } - } -\um_setup_active_superscript:nn {^^^^2070} {0} -\um_setup_active_superscript:nn {^^^^00b9} {1} -\um_setup_active_superscript:nn {^^^^00b2} {2} -\um_setup_active_superscript:nn {^^^^00b3} {3} -\um_setup_active_superscript:nn {^^^^2074} {4} -\um_setup_active_superscript:nn {^^^^2075} {5} -\um_setup_active_superscript:nn {^^^^2076} {6} -\um_setup_active_superscript:nn {^^^^2077} {7} -\um_setup_active_superscript:nn {^^^^2078} {8} -\um_setup_active_superscript:nn {^^^^2079} {9} -\um_setup_active_superscript:nn {^^^^207a} {+} -\um_setup_active_superscript:nn {^^^^207b} {-} -\um_setup_active_superscript:nn {^^^^207c} {=} -\um_setup_active_superscript:nn {^^^^207d} {(} -\um_setup_active_superscript:nn {^^^^207e} {)} -\um_setup_active_superscript:nn {^^^^2071} {i} -\um_setup_active_superscript:nn {^^^^207f} {n} -\cs_new:Nn \um_setup_active_subscript:nn - { - \prop_gput:Nxn \g_um_subs_prop {\meaning #1} {#2} + \tl_set:Nn \l__um_ss_chain_tl {#2} + \cs_set_eq:NN \__um_sub_or_super:n \sp + \tl_set:Nn \l__um_tmpa_tl {supers} + \__um_scan_sscript: + } + } + } +\__um_setup_active_superscript:nn {^^^^2070} {0} +\__um_setup_active_superscript:nn {^^^^00b9} {1} +\__um_setup_active_superscript:nn {^^^^00b2} {2} +\__um_setup_active_superscript:nn {^^^^00b3} {3} +\__um_setup_active_superscript:nn {^^^^2074} {4} +\__um_setup_active_superscript:nn {^^^^2075} {5} +\__um_setup_active_superscript:nn {^^^^2076} {6} +\__um_setup_active_superscript:nn {^^^^2077} {7} +\__um_setup_active_superscript:nn {^^^^2078} {8} +\__um_setup_active_superscript:nn {^^^^2079} {9} +\__um_setup_active_superscript:nn {^^^^207a} {+} +\__um_setup_active_superscript:nn {^^^^207b} {-} +\__um_setup_active_superscript:nn {^^^^207c} {=} +\__um_setup_active_superscript:nn {^^^^207d} {(} +\__um_setup_active_superscript:nn {^^^^207e} {)} +\__um_setup_active_superscript:nn {^^^^2071} {i} +\__um_setup_active_superscript:nn {^^^^207f} {n} +\__um_setup_active_superscript:nn {^^^^02b0} {h} +\__um_setup_active_superscript:nn {^^^^02b2} {j} +\__um_setup_active_superscript:nn {^^^^02b3} {r} +\__um_setup_active_superscript:nn {^^^^02b7} {w} +\__um_setup_active_superscript:nn {^^^^02b8} {y} +\cs_new:Nn \__um_setup_active_subscript:nn + { + \prop_gput:Non \g__um_subs_prop {\meaning #1} {#2} \char_set_catcode_active:N #1 - \char_gmake_mathactive:N #1 + \__um_char_gmake_mathactive:N #1 \scantokens { \cs_gset:Npn #1 { - \tl_set:Nn \l_um_ss_chain_tl {#2} - \cs_set_eq:NN \um_sub_or_super:n \sb - \tl_set:Nn \l_um_tmpa_tl {subs} - \um_scan_sscript: - } - } - } -\um_setup_active_subscript:nn {^^^^2080} {0} -\um_setup_active_subscript:nn {^^^^2081} {1} -\um_setup_active_subscript:nn {^^^^2082} {2} -\um_setup_active_subscript:nn {^^^^2083} {3} -\um_setup_active_subscript:nn {^^^^2084} {4} -\um_setup_active_subscript:nn {^^^^2085} {5} -\um_setup_active_subscript:nn {^^^^2086} {6} -\um_setup_active_subscript:nn {^^^^2087} {7} -\um_setup_active_subscript:nn {^^^^2088} {8} -\um_setup_active_subscript:nn {^^^^2089} {9} -\um_setup_active_subscript:nn {^^^^208a} {+} -\um_setup_active_subscript:nn {^^^^208b} {-} -\um_setup_active_subscript:nn {^^^^208c} {=} -\um_setup_active_subscript:nn {^^^^208d} {(} -\um_setup_active_subscript:nn {^^^^208e} {)} -\um_setup_active_subscript:nn {^^^^2090} {a} -\um_setup_active_subscript:nn {^^^^2091} {e} -\um_setup_active_subscript:nn {^^^^1d62} {i} -\um_setup_active_subscript:nn {^^^^2092} {o} -\um_setup_active_subscript:nn {^^^^1d63} {r} -\um_setup_active_subscript:nn {^^^^1d64} {u} -\um_setup_active_subscript:nn {^^^^1d65} {v} -\um_setup_active_subscript:nn {^^^^2093} {x} -\um_setup_active_subscript:nn {^^^^1d66} {\beta} -\um_setup_active_subscript:nn {^^^^1d67} {\gamma} -\um_setup_active_subscript:nn {^^^^1d68} {\rho} -\um_setup_active_subscript:nn {^^^^1d69} {\phi} -\um_setup_active_subscript:nn {^^^^1d6a} {\chi} + \tl_set:Nn \l__um_ss_chain_tl {#2} + \cs_set_eq:NN \__um_sub_or_super:n \sb + \tl_set:Nn \l__um_tmpa_tl {subs} + \__um_scan_sscript: + } + } + } +\__um_setup_active_subscript:nn {^^^^2080} {0} +\__um_setup_active_subscript:nn {^^^^2081} {1} +\__um_setup_active_subscript:nn {^^^^2082} {2} +\__um_setup_active_subscript:nn {^^^^2083} {3} +\__um_setup_active_subscript:nn {^^^^2084} {4} +\__um_setup_active_subscript:nn {^^^^2085} {5} +\__um_setup_active_subscript:nn {^^^^2086} {6} +\__um_setup_active_subscript:nn {^^^^2087} {7} +\__um_setup_active_subscript:nn {^^^^2088} {8} +\__um_setup_active_subscript:nn {^^^^2089} {9} +\__um_setup_active_subscript:nn {^^^^208a} {+} +\__um_setup_active_subscript:nn {^^^^208b} {-} +\__um_setup_active_subscript:nn {^^^^208c} {=} +\__um_setup_active_subscript:nn {^^^^208d} {(} +\__um_setup_active_subscript:nn {^^^^208e} {)} +\__um_setup_active_subscript:nn {^^^^2090} {a} +\__um_setup_active_subscript:nn {^^^^2091} {e} +\__um_setup_active_subscript:nn {^^^^1d62} {i} +\__um_setup_active_subscript:nn {^^^^2092} {o} +\__um_setup_active_subscript:nn {^^^^1d63} {r} +\__um_setup_active_subscript:nn {^^^^1d64} {u} +\__um_setup_active_subscript:nn {^^^^1d65} {v} +\__um_setup_active_subscript:nn {^^^^2093} {x} +\__um_setup_active_subscript:nn {^^^^1d66} {\beta} +\__um_setup_active_subscript:nn {^^^^1d67} {\gamma} +\__um_setup_active_subscript:nn {^^^^1d68} {\rho} +\__um_setup_active_subscript:nn {^^^^1d69} {\phi} +\__um_setup_active_subscript:nn {^^^^1d6a} {\chi} \group_end: -\cs_new:Npn \um_scan_sscript: +\cs_new:Npn \__um_scan_sscript: { - \um_scan_sscript:TF + \__um_scan_sscript:TF { - \um_scan_sscript: + \__um_scan_sscript: } { - \um_sub_or_super:n {\l_um_ss_chain_tl} + \__um_sub_or_super:n {\l__um_ss_chain_tl} } } -\cs_new:Npn \um_scan_sscript:TF #1#2 +\cs_new:Npn \__um_scan_sscript:TF #1#2 { \tl_set:Nx \__peek_true_aux:w { \exp_not:n{ #1 } } \tl_set_eq:NN \__peek_true:w \__peek_true_remove:w \tl_set:Nx \__peek_false:w { \exp_not:n { \group_align_safe_end: #2 } } \group_align_safe_begin: - \peek_after:Nw \um_peek_execute_branches_ss: + \peek_after:Nw \__um_peek_execute_branches_ss: } -\cs_new:Npn \um_peek_execute_branches_ss: +\cs_new:Npn \__um_peek_execute_branches_ss: { \bool_if:nTF { @@ -2542,24 +1650,24 @@ \token_if_eq_meaning_p:NN \l_peek_token \c_space_token } { \__peek_false:w } - { \um_peek_execute_branches_ss_aux: } + { \__um_peek_execute_branches_ss_aux: } } -\cs_new:Npn \um_peek_execute_branches_ss_aux: +\cs_new:Npn \__um_peek_execute_branches_ss_aux: { - \prop_if_in:cxTF - {g_um_\l_um_tmpa_tl _prop} {\meaning\l_peek_token} + \prop_if_in:coTF + {g__um_\l__um_tmpa_tl _prop} {\meaning\l_peek_token} { - \prop_get:cxN - {g_um_\l_um_tmpa_tl _prop} {\meaning\l_peek_token} \l_um_tmpb_tl - \tl_put_right:NV \l_um_ss_chain_tl \l_um_tmpb_tl + \prop_get:coN + {g__um_\l__um_tmpa_tl _prop} {\meaning\l_peek_token} \l__um_tmpb_tl + \tl_put_right:NV \l__um_ss_chain_tl \l__um_tmpb_tl \__peek_true:w } { \__peek_false:w } } -\cs_new:Npn \um_define_active_frac:Nw #1 #2/#3 +\cs_new:Npn \__um_define_active_frac:Nw #1 #2/#3 { \char_set_catcode_active:N #1 - \char_gmake_mathactive:N #1 + \__um_char_gmake_mathactive:N #1 \tl_rescan:nn { \catcode`\_=11\relax @@ -2568,36 +1676,36 @@ { \cs_gset:Npx #1 { - \bool_if:NTF \l_um_smallfrac_bool {\exp_not:N\tfrac} {\exp_not:N\frac} + \bool_if:NTF \l__um_smallfrac_bool {\exp_not:N\tfrac} {\exp_not:N\frac} {#2} {#3} } } } -\cs_new:Npn \um_setup_active_frac: +\cs_new:Npn \__um_setup_active_frac: { \group_begin: - \um_define_active_frac:Nw ^^^^2189 0/3 - \um_define_active_frac:Nw ^^^^2152 1/{10} - \um_define_active_frac:Nw ^^^^2151 1/9 - \um_define_active_frac:Nw ^^^^215b 1/8 - \um_define_active_frac:Nw ^^^^2150 1/7 - \um_define_active_frac:Nw ^^^^2159 1/6 - \um_define_active_frac:Nw ^^^^2155 1/5 - \um_define_active_frac:Nw ^^^^00bc 1/4 - \um_define_active_frac:Nw ^^^^2153 1/3 - \um_define_active_frac:Nw ^^^^215c 3/8 - \um_define_active_frac:Nw ^^^^2156 2/5 - \um_define_active_frac:Nw ^^^^00bd 1/2 - \um_define_active_frac:Nw ^^^^2157 3/5 - \um_define_active_frac:Nw ^^^^215d 5/8 - \um_define_active_frac:Nw ^^^^2154 2/3 - \um_define_active_frac:Nw ^^^^00be 3/4 - \um_define_active_frac:Nw ^^^^2158 4/5 - \um_define_active_frac:Nw ^^^^215a 5/6 - \um_define_active_frac:Nw ^^^^215e 7/8 + \__um_define_active_frac:Nw ^^^^2189 0/3 + \__um_define_active_frac:Nw ^^^^2152 1/{10} + \__um_define_active_frac:Nw ^^^^2151 1/9 + \__um_define_active_frac:Nw ^^^^215b 1/8 + \__um_define_active_frac:Nw ^^^^2150 1/7 + \__um_define_active_frac:Nw ^^^^2159 1/6 + \__um_define_active_frac:Nw ^^^^2155 1/5 + \__um_define_active_frac:Nw ^^^^00bc 1/4 + \__um_define_active_frac:Nw ^^^^2153 1/3 + \__um_define_active_frac:Nw ^^^^215c 3/8 + \__um_define_active_frac:Nw ^^^^2156 2/5 + \__um_define_active_frac:Nw ^^^^00bd 1/2 + \__um_define_active_frac:Nw ^^^^2157 3/5 + \__um_define_active_frac:Nw ^^^^215d 5/8 + \__um_define_active_frac:Nw ^^^^2154 2/3 + \__um_define_active_frac:Nw ^^^^00be 3/4 + \__um_define_active_frac:Nw ^^^^2158 4/5 + \__um_define_active_frac:Nw ^^^^215a 5/6 + \__um_define_active_frac:Nw ^^^^215e 7/8 \group_end: } -\um_setup_active_frac: +\__um_setup_active_frac: \def\to{\rightarrow} \def\le{\leq} \def\ge{\geq} @@ -2620,7 +1728,16 @@ \def\longdivision{\longdivisionsign} \def\backepsilon{\upbackepsilon} \def\eth{\matheth} -\def\smallint{{\textstyle\int}\limits} +\def\dbkarow {\dbkarrow} +\def\drbkarow{\drbkarrow} +\def\hksearow{\hksearrow} +\def\hkswarow{\hkswarrow} +\def\smallint{\mathop{\textstyle\int}\limits} +\cs_set_eq:NN \latexe_underbar:n \underbar +\renewcommand\underbar + { + \mode_if_math:TF \mathunderbar \latexe_underbar:n + } \@ifpackageloaded{amsmath} { % define their own colon, perhaps I should just steal it. (It does look much better.) @@ -2628,23 +1745,65 @@ { \cs_set_protected:Npn \colon { - \bool_if:NTF \g_um_literal_colon_bool {:} { \mathpunct{:} } + \bool_if:NTF \g__um_literal_colon_bool {:} { \mathpunct{:} } } } -\def\mathrm{\mathup} \let\mathfence\mathord \def\digamma{\updigamma} \def\Digamma{\upDigamma} -\def\operator@font{\um_switchto_mathup:} -\cs_new_protected_nopar:Nn \um_check_and_fix:NNnnnn +\cs_set:Npn \| {\Vert} +\cs_set:Npn \mathellipsis {\mathinner{\unicodeellipsis}} +\cs_set:Npn \cdots {\mathinner{\unicodecdots}} +\cs_set_eq:NN \__um_text_slash: \slash +\cs_set_protected:Npn \slash + { + \mode_if_math:TF {\mathslash} {\__um_text_slash:} + } +\cs_new:Npn \__um_newnot:N #1 + { + \tl_set:Nx \l_not_token_name_tl { \token_to_str:N #1 } + \exp_args:Nx \tl_if_empty:nF { \tl_tail:V \l_not_token_name_tl } + { + \tl_set:Nx \l_not_token_name_tl { \tl_tail:V \l_not_token_name_tl } + } + \cs_if_exist:cTF { n \l_not_token_name_tl } + { + \use:c { n \l_not_token_name_tl } + } + { + \cs_if_exist:cTF { not \l_not_token_name_tl } + { + \use:c { not \l_not_token_name_tl } + } + { + \__um_oldnot: #1 + } + } + } +\cs_set_eq:NN \__um_oldnot: \not +\AtBeginDocument{\cs_set_eq:NN \not \__um_newnot:N} +\cs_new_protected_nopar:Nn \__um_setup_negations: + { + \cs_gset:cpn { not= } { \neq } + \cs_gset:cpn { not< } { \nless } + \cs_gset:cpn { not> } { \ngtr } + \cs_gset:Npn \ngets { \nleftarrow } + \cs_gset:Npn \nsimeq { \nsime } + \cs_gset:Npn \nequal { \ne } + \cs_gset:Npn \nle { \nleq } + \cs_gset:Npn \nge { \ngeq } + \cs_gset:Npn \ngreater { \ngtr } + \cs_gset:Npn \nforksnot { \forks } + } +\cs_new_protected_nopar:Nn \__um_check_and_fix:NNnnnn { \cs_if_exist:NT #1 { \token_if_macro:NTF #1 { \group_begin: - #2 \um_tmpa:w #3 { #4 } - \cs_if_eq:NNTF #1 \um_tmpa:w + #2 \__um_tmpa:w #3 { #4 } + \cs_if_eq:NNTF #1 \__um_tmpa:w { \msg_info:nnx { unicode-math } { patch-macro } { \token_to_str:N #1 } @@ -2655,7 +1814,7 @@ { \msg_warning:nnxxx { unicode-math } { wrong-meaning } { \token_to_str:N #1 } { \token_to_meaning:N #1 } - { \token_to_meaning:N \um_tmpa:w } + { \token_to_meaning:N \__um_tmpa:w } \group_end: } } @@ -2665,21 +1824,18 @@ } } } -\cs_new_protected_nopar:Nn \um_check_and_fix:NNnnn +\cs_new_protected_nopar:Nn \__um_check_and_fix:NNnnn { - \um_check_and_fix:NNnnnn #1 #2 { #3 } { #4 } { #5 } { #5 } + \__um_check_and_fix:NNnnnn #1 #2 { #3 } { #4 } { #5 } { #5 } } -\cs_new_protected_nopar:Nn \um_check_and_fix_luatex:NNnnn +\cs_new_protected_nopar:Nn \__um_check_and_fix_luatex:NNnnn { - \luatex_if_engine:T - { - \um_check_and_fix:NNnnn #1 #2 { #3 } { #4 } { #5 } - } + \__um_check_and_fix:NNnnn #1 #2 { #3 } { #4 } { #5 } } -\cs_generate_variant:Nn \um_check_and_fix_luatex:NNnnn { c } +\cs_generate_variant:Nn \__um_check_and_fix_luatex:NNnnn { c } \AtEndOfPackageFile * {url} { - \tl_put_left:Nn \Url@FormatString { \um_switchto_mathup: } + \tl_put_left:Nn \Url@FormatString { \__um_switchto_up: } \tl_put_right:Nn \UrlSpecials { \do\`{\mathchar`\`} @@ -2692,7 +1848,7 @@ { \cs_set:Npn \@cdots {\mathinner{\cdots}} \cs_set_eq:NN \dotsb@ \cdots - \um_check_and_fix_luatex:NNnnn \plainroot@ \cs_set_nopar:Npn { #1 \of #2 } + \__um_check_and_fix_luatex:NNnnn \plainroot@ \cs_set_nopar:Npn { #1 \of #2 } { \setbox \rootbox \hbox { @@ -2712,7 +1868,7 @@ && \int_compare_p:nNn { \leftroot@ } = { \c_zero } } { - \luatexUroot \l_um_radical_sqrt_tl { #1 } { #2 } + \luatexUroot \l__um_radical_sqrt_tl { #1 } { #2 } } { \hbox_set:Nn \rootbox @@ -2730,7 +1886,7 @@ } \c_group_end_token } - \um_check_and_fix:NNnnnn \r@@t \cs_set_nopar:Npn { #1 #2 } + \__um_check_and_fix:NNnnnn \r@@t \cs_set_nopar:Npn { #1 #2 } { \setboxz@h { $ \m@th #1 \sqrtsign { #2 } $ } \dimen@ \ht\z@ @@ -2753,7 +1909,7 @@ \mskip \uproot@ mu \c_math_toggle_token } - \luatexUroot \l_um_radical_sqrt_tl + \luatexUroot \l__um_radical_sqrt_tl { \box_move_up:nn { \box_wd:N \l_tmpa_box } { @@ -2788,122 +1944,27 @@ \c_math_toggle_token } \mkern -\leftroot@ mu - \um_mathstyle_scale:Nnn #1 { \kern } + \__um_mathstyle_scale:Nnn #1 { \kern } { - \fontdimen 63 \l_um_font + \fontdimen 63 \l__um_font } \box_move_up:nn { \box_wd:N \l_tmpb_box + (\box_ht:N \l_tmpa_box - \box_dp:N \l_tmpa_box) - * \number \fontdimen 65 \l_um_font / 100 + * \number \fontdimen 65 \l__um_font / 100 } { \box_use:N \rootbox } - \um_mathstyle_scale:Nnn #1 { \kern } + \__um_mathstyle_scale:Nnn #1 { \kern } { - \fontdimen 64 \l_um_font + \fontdimen 64 \l__um_font } \mkern \leftroot@ mu \box_use_clear:N \l_tmpa_box } } -\cs_set:Npn \| {\Vert} -\cs_set:Npn \mathellipsis {\mathinner{\unicodeellipsis}} -\cs_set:Npn \cdots {\mathinner{\unicodecdots}} -\cs_new_protected_nopar:Nn \um_setup_accents: - { - \cs_gset_protected_nopar:Npx \widehat - { - \um_accent:nnn {} { \um_symfont_tl } { "0302 } - } - \cs_gset_protected_nopar:Npx \widetilde - { - \um_accent:nnn {} { \um_symfont_tl } { "0303 } - } - \cs_gset_protected_nopar:Npx \overleftarrow - { - \um_accent:nnn {} { \um_symfont_tl } { "20D6 } - } - \cs_gset_protected_nopar:Npx \overrightarrow - { - \um_accent:nnn {} { \um_symfont_tl } { "20D7 } - } - \cs_gset_protected_nopar:Npx \overleftrightarrow - { - \um_accent:nnn {} { \um_symfont_tl } { "20E1 } - } - \cs_gset_protected_nopar:Npx \wideutilde - { - \um_accent:nnn {bottom} { \um_symfont_tl } { "0330 } - } - \cs_gset_protected_nopar:Npx \underrightharpoondown - { - \um_accent:nnn {bottom} { \um_symfont_tl } { "20EC } - } - \cs_gset_protected_nopar:Npx \underleftharpoondown - { - \um_accent:nnn {bottom} { \um_symfont_tl } { "20ED } - } - \cs_gset_protected_nopar:Npx \underleftarrow - { - \um_accent:nnn {bottom} { \um_symfont_tl } { "20EE } - } - \cs_gset_protected_nopar:Npx \underrightarrow - { - \um_accent:nnn {bottom} { \um_symfont_tl } { "20EF } - } - \cs_gset_protected_nopar:Npx \underleftrightarrow - { - \um_accent:nnn {bottom} { \um_symfont_tl } { "034D } - } - } -\cs_set_eq:NN \um_text_slash: \slash -\cs_set_protected:Npn \slash - { - \mode_if_math:TF {\mathslash} {\um_text_slash:} - } -\tl_new:N \l_not_token_name_tl - -\cs_new:Npn \not_newnot:N #1 - { - \tl_set:Nx \l_not_token_name_tl { \token_to_str:N #1 } - \exp_args:Nx \tl_if_empty:nF { \tl_tail:V \l_not_token_name_tl } - { - \tl_set:Nx \l_not_token_name_tl { \tl_tail:V \l_not_token_name_tl } - } - \cs_if_exist:cTF { n \l_not_token_name_tl } - { - \use:c { n \l_not_token_name_tl } - } - { - \cs_if_exist:cTF { not \l_not_token_name_tl } - { - \use:c { not \l_not_token_name_tl } - } - { - \not_oldnot: #1 %\l_not_token_name_tl - } - } - } - -\cs_set_eq:NN \not_oldnot: \not -\cs_set_eq:NN \not \not_newnot:N - -\cs_new_protected_nopar:Nn \um_setup_negations: - { - \cs_gset:cpn { not= } { \neq } - \cs_gset:cpn { not< } { \nless } - \cs_gset:cpn { not> } { \ngtr } - \cs_gset:Npn \ngets { \nleftarrow } - \cs_gset:Npn \nsimeq { \nsime } - \cs_gset:Npn \nequal { \ne } - \cs_gset:Npn \nle { \nleq } - \cs_gset:Npn \nge { \ngeq } - \cs_gset:Npn \ngreater { \ngtr } - \cs_gset:Npn \nforksnot { \forks } - } \AtEndOfPackageFile * { mathtools } { \AtEndOfPackageFile * { mathtools } @@ -2951,4 +2012,3 @@ \RenewDocumentCommand \equalscolon { } { \eqcolon } \RenewDocumentCommand \coloncolonequals { } { \Coloneq } } -\ExplSyntaxOff diff --git a/Master/texmf-dist/tex/latex/unicode-math/unicode-math-table.tex b/Master/texmf-dist/tex/latex/unicode-math/unicode-math-table.tex index 9ed56cd1001..1babad3be0d 100644 --- a/Master/texmf-dist/tex/latex/unicode-math/unicode-math-table.tex +++ b/Master/texmf-dist/tex/latex/unicode-math/unicode-math-table.tex @@ -34,7 +34,9 @@ \UnicodeMathSymbol{"00300}{\grave }{\mathaccent}{grave accent}% \UnicodeMathSymbol{"00301}{\acute }{\mathaccent}{acute accent}% \UnicodeMathSymbol{"00302}{\hat }{\mathaccent}{circumflex accent}% +\UnicodeMathSymbol{"00302}{\widehat }{\mathaccentwide}{circumflex accent}% \UnicodeMathSymbol{"00303}{\tilde }{\mathaccent}{tilde}% +\UnicodeMathSymbol{"00303}{\widetilde }{\mathaccentwide}{tilde}% \UnicodeMathSymbol{"00304}{\bar }{\mathaccent}{macron}% \UnicodeMathSymbol{"00305}{\overbar }{\mathaccent}{overbar embellishment}% \UnicodeMathSymbol{"00306}{\breve }{\mathaccent}{breve}% @@ -47,62 +49,63 @@ \UnicodeMathSymbol{"00312}{\oturnedcomma }{\mathaccent}{combining turned comma above}% \UnicodeMathSymbol{"00315}{\ocommatopright }{\mathaccent}{combining comma above right}% \UnicodeMathSymbol{"0031A}{\droang }{\mathaccent}{left angle above (non-spacing)}% -\UnicodeMathSymbol{"00330}{\wideutilde }{\mathbotaccent}{under tilde accent (multiple characters and non-spacing)}% -\UnicodeMathSymbol{"00331}{\underbar }{\mathbotaccent}{combining macron below}% +\UnicodeMathSymbol{"00330}{\wideutilde }{\mathbotaccentwide}{under tilde accent (multiple characters and non-spacing)}% +\UnicodeMathSymbol{"00332}{\mathunderbar }{\mathbotaccentwide}{combining low line}% \UnicodeMathSymbol{"00338}{\not }{\mathaccent}{combining long solidus overlay}% -\UnicodeMathSymbol{"00391}{\upAlpha }{\mathalpha}{capital alpha, greek}% -\UnicodeMathSymbol{"00392}{\upBeta }{\mathalpha}{capital beta, greek}% -\UnicodeMathSymbol{"00393}{\upGamma }{\mathalpha}{capital gamma, greek}% -\UnicodeMathSymbol{"00394}{\upDelta }{\mathalpha}{capital delta, greek}% -\UnicodeMathSymbol{"00395}{\upEpsilon }{\mathalpha}{capital epsilon, greek}% -\UnicodeMathSymbol{"00396}{\upZeta }{\mathalpha}{capital zeta, greek}% -\UnicodeMathSymbol{"00397}{\upEta }{\mathalpha}{capital eta, greek}% -\UnicodeMathSymbol{"00398}{\upTheta }{\mathalpha}{capital theta, greek}% -\UnicodeMathSymbol{"00399}{\upIota }{\mathalpha}{capital iota, greek}% -\UnicodeMathSymbol{"0039A}{\upKappa }{\mathalpha}{capital kappa, greek}% -\UnicodeMathSymbol{"0039B}{\upLambda }{\mathalpha}{capital lambda, greek}% -\UnicodeMathSymbol{"0039C}{\upMu }{\mathalpha}{capital mu, greek}% -\UnicodeMathSymbol{"0039D}{\upNu }{\mathalpha}{capital nu, greek}% -\UnicodeMathSymbol{"0039E}{\upXi }{\mathalpha}{capital xi, greek}% -\UnicodeMathSymbol{"0039F}{\upOmicron }{\mathalpha}{capital omicron, greek}% -\UnicodeMathSymbol{"003A0}{\upPi }{\mathalpha}{capital pi, greek}% -\UnicodeMathSymbol{"003A1}{\upRho }{\mathalpha}{capital rho, greek}% -\UnicodeMathSymbol{"003A3}{\upSigma }{\mathalpha}{capital sigma, greek}% -\UnicodeMathSymbol{"003A4}{\upTau }{\mathalpha}{capital tau, greek}% -\UnicodeMathSymbol{"003A5}{\upUpsilon }{\mathalpha}{capital upsilon, greek}% -\UnicodeMathSymbol{"003A6}{\upPhi }{\mathalpha}{capital phi, greek}% -\UnicodeMathSymbol{"003A7}{\upChi }{\mathalpha}{capital chi, greek}% -\UnicodeMathSymbol{"003A8}{\upPsi }{\mathalpha}{capital psi, greek}% -\UnicodeMathSymbol{"003A9}{\upOmega }{\mathalpha}{capital omega, greek}% -\UnicodeMathSymbol{"003B1}{\upalpha }{\mathalpha}{small alpha, greek}% -\UnicodeMathSymbol{"003B2}{\upbeta }{\mathalpha}{small beta, greek}% -\UnicodeMathSymbol{"003B3}{\upgamma }{\mathalpha}{small gamma, greek}% -\UnicodeMathSymbol{"003B4}{\updelta }{\mathalpha}{small delta, greek}% -\UnicodeMathSymbol{"003B5}{\upepsilon }{\mathalpha}{rounded small epsilon, greek}% -\UnicodeMathSymbol{"003B6}{\upzeta }{\mathalpha}{small zeta, greek}% -\UnicodeMathSymbol{"003B7}{\upeta }{\mathalpha}{small eta, greek}% -\UnicodeMathSymbol{"003B8}{\uptheta }{\mathalpha}{straight theta, small theta, greek}% -\UnicodeMathSymbol{"003B9}{\upiota }{\mathalpha}{small iota, greek}% -\UnicodeMathSymbol{"003BA}{\upkappa }{\mathalpha}{small kappa, greek}% -\UnicodeMathSymbol{"003BB}{\uplambda }{\mathalpha}{small lambda, greek}% -\UnicodeMathSymbol{"003BC}{\upmu }{\mathalpha}{small mu, greek}% -\UnicodeMathSymbol{"003BD}{\upnu }{\mathalpha}{small nu, greek}% -\UnicodeMathSymbol{"003BE}{\upxi }{\mathalpha}{small xi, greek}% -\UnicodeMathSymbol{"003BF}{\upomicron }{\mathalpha}{small omicron, greek}% -\UnicodeMathSymbol{"003C0}{\uppi }{\mathalpha}{small pi, greek}% -\UnicodeMathSymbol{"003C1}{\uprho }{\mathalpha}{small rho, greek}% -\UnicodeMathSymbol{"003C2}{\upvarsigma }{\mathalpha}{terminal sigma, greek}% -\UnicodeMathSymbol{"003C3}{\upsigma }{\mathalpha}{small sigma, greek}% -\UnicodeMathSymbol{"003C4}{\uptau }{\mathalpha}{small tau, greek}% -\UnicodeMathSymbol{"003C5}{\upupsilon }{\mathalpha}{small upsilon, greek}% -\UnicodeMathSymbol{"003C6}{\upvarphi }{\mathalpha}{curly or open small phi, greek}% -\UnicodeMathSymbol{"003C7}{\upchi }{\mathalpha}{small chi, greek}% -\UnicodeMathSymbol{"003C8}{\uppsi }{\mathalpha}{small psi, greek}% -\UnicodeMathSymbol{"003C9}{\upomega }{\mathalpha}{small omega, greek}% -\UnicodeMathSymbol{"003D0}{\upvarbeta }{\mathalpha}{rounded small beta, greek}% -\UnicodeMathSymbol{"003D1}{\upvartheta }{\mathalpha}{/vartheta - curly or open theta}% -\UnicodeMathSymbol{"003D5}{\upphi }{\mathalpha}{/straightphi - small phi, greek}% -\UnicodeMathSymbol{"003D6}{\upvarpi }{\mathalpha}{rounded small pi (pomega), greek}% +\UnicodeMathSymbol{"0034D}{\underleftrightarrow }{\mathbotaccentwide}{underleftrightarrow accent}% +\UnicodeMathSymbol{"00391}{\mupAlpha }{\mathalpha}{capital alpha, greek}% +\UnicodeMathSymbol{"00392}{\mupBeta }{\mathalpha}{capital beta, greek}% +\UnicodeMathSymbol{"00393}{\mupGamma }{\mathalpha}{capital gamma, greek}% +\UnicodeMathSymbol{"00394}{\mupDelta }{\mathalpha}{capital delta, greek}% +\UnicodeMathSymbol{"00395}{\mupEpsilon }{\mathalpha}{capital epsilon, greek}% +\UnicodeMathSymbol{"00396}{\mupZeta }{\mathalpha}{capital zeta, greek}% +\UnicodeMathSymbol{"00397}{\mupEta }{\mathalpha}{capital eta, greek}% +\UnicodeMathSymbol{"00398}{\mupTheta }{\mathalpha}{capital theta, greek}% +\UnicodeMathSymbol{"00399}{\mupIota }{\mathalpha}{capital iota, greek}% +\UnicodeMathSymbol{"0039A}{\mupKappa }{\mathalpha}{capital kappa, greek}% +\UnicodeMathSymbol{"0039B}{\mupLambda }{\mathalpha}{capital lambda, greek}% +\UnicodeMathSymbol{"0039C}{\mupMu }{\mathalpha}{capital mu, greek}% +\UnicodeMathSymbol{"0039D}{\mupNu }{\mathalpha}{capital nu, greek}% +\UnicodeMathSymbol{"0039E}{\mupXi }{\mathalpha}{capital xi, greek}% +\UnicodeMathSymbol{"0039F}{\mupOmicron }{\mathalpha}{capital omicron, greek}% +\UnicodeMathSymbol{"003A0}{\mupPi }{\mathalpha}{capital pi, greek}% +\UnicodeMathSymbol{"003A1}{\mupRho }{\mathalpha}{capital rho, greek}% +\UnicodeMathSymbol{"003A3}{\mupSigma }{\mathalpha}{capital sigma, greek}% +\UnicodeMathSymbol{"003A4}{\mupTau }{\mathalpha}{capital tau, greek}% +\UnicodeMathSymbol{"003A5}{\mupUpsilon }{\mathalpha}{capital upsilon, greek}% +\UnicodeMathSymbol{"003A6}{\mupPhi }{\mathalpha}{capital phi, greek}% +\UnicodeMathSymbol{"003A7}{\mupChi }{\mathalpha}{capital chi, greek}% +\UnicodeMathSymbol{"003A8}{\mupPsi }{\mathalpha}{capital psi, greek}% +\UnicodeMathSymbol{"003A9}{\mupOmega }{\mathalpha}{capital omega, greek}% +\UnicodeMathSymbol{"003B1}{\mupalpha }{\mathalpha}{small alpha, greek}% +\UnicodeMathSymbol{"003B2}{\mupbeta }{\mathalpha}{small beta, greek}% +\UnicodeMathSymbol{"003B3}{\mupgamma }{\mathalpha}{small gamma, greek}% +\UnicodeMathSymbol{"003B4}{\mupdelta }{\mathalpha}{small delta, greek}% +\UnicodeMathSymbol{"003B5}{\mupepsilon }{\mathalpha}{rounded small epsilon, greek}% +\UnicodeMathSymbol{"003B6}{\mupzeta }{\mathalpha}{small zeta, greek}% +\UnicodeMathSymbol{"003B7}{\mupeta }{\mathalpha}{small eta, greek}% +\UnicodeMathSymbol{"003B8}{\muptheta }{\mathalpha}{straight theta, small theta, greek}% +\UnicodeMathSymbol{"003B9}{\mupiota }{\mathalpha}{small iota, greek}% +\UnicodeMathSymbol{"003BA}{\mupkappa }{\mathalpha}{small kappa, greek}% +\UnicodeMathSymbol{"003BB}{\muplambda }{\mathalpha}{small lambda, greek}% +\UnicodeMathSymbol{"003BC}{\mupmu }{\mathalpha}{small mu, greek}% +\UnicodeMathSymbol{"003BD}{\mupnu }{\mathalpha}{small nu, greek}% +\UnicodeMathSymbol{"003BE}{\mupxi }{\mathalpha}{small xi, greek}% +\UnicodeMathSymbol{"003BF}{\mupomicron }{\mathalpha}{small omicron, greek}% +\UnicodeMathSymbol{"003C0}{\muppi }{\mathalpha}{small pi, greek}% +\UnicodeMathSymbol{"003C1}{\muprho }{\mathalpha}{small rho, greek}% +\UnicodeMathSymbol{"003C2}{\mupvarsigma }{\mathalpha}{terminal sigma, greek}% +\UnicodeMathSymbol{"003C3}{\mupsigma }{\mathalpha}{small sigma, greek}% +\UnicodeMathSymbol{"003C4}{\muptau }{\mathalpha}{small tau, greek}% +\UnicodeMathSymbol{"003C5}{\mupupsilon }{\mathalpha}{small upsilon, greek}% +\UnicodeMathSymbol{"003C6}{\mupvarphi }{\mathalpha}{curly or open small phi, greek}% +\UnicodeMathSymbol{"003C7}{\mupchi }{\mathalpha}{small chi, greek}% +\UnicodeMathSymbol{"003C8}{\muppsi }{\mathalpha}{small psi, greek}% +\UnicodeMathSymbol{"003C9}{\mupomega }{\mathalpha}{small omega, greek}% +\UnicodeMathSymbol{"003D0}{\mupvarbeta }{\mathalpha}{rounded small beta, greek}% +\UnicodeMathSymbol{"003D1}{\mupvartheta }{\mathalpha}{/vartheta - curly or open theta}% +\UnicodeMathSymbol{"003D5}{\mupphi }{\mathalpha}{/straightphi - small phi, greek}% +\UnicodeMathSymbol{"003D6}{\mupvarpi }{\mathalpha}{rounded small pi (pomega), greek}% \UnicodeMathSymbol{"003D8}{\upoldKoppa }{\mathord}{greek letter archaic koppa}% \UnicodeMathSymbol{"003D9}{\upoldkoppa }{\mathord}{greek small letter archaic koppa}% \UnicodeMathSymbol{"003DA}{\upStigma }{\mathalpha}{capital stigma}% @@ -113,10 +116,10 @@ \UnicodeMathSymbol{"003DF}{\upkoppa }{\mathalpha}{greek small letter koppa}% \UnicodeMathSymbol{"003E0}{\upSampi }{\mathalpha}{capital sampi}% \UnicodeMathSymbol{"003E1}{\upsampi }{\mathalpha}{greek small letter sampi}% -\UnicodeMathSymbol{"003F0}{\upvarkappa }{\mathalpha}{rounded small kappa, greek}% -\UnicodeMathSymbol{"003F1}{\upvarrho }{\mathalpha}{rounded small rho, greek}% -\UnicodeMathSymbol{"003F4}{\upvarTheta }{\mathalpha}{greek capital theta symbol}% -\UnicodeMathSymbol{"003F5}{\upvarepsilon }{\mathalpha}{greek lunate epsilon symbol}% +\UnicodeMathSymbol{"003F0}{\mupvarkappa }{\mathalpha}{rounded small kappa, greek}% +\UnicodeMathSymbol{"003F1}{\mupvarrho }{\mathalpha}{rounded small rho, greek}% +\UnicodeMathSymbol{"003F4}{\mupvarTheta }{\mathalpha}{greek capital theta symbol}% +\UnicodeMathSymbol{"003F5}{\mupvarepsilon }{\mathalpha}{greek lunate epsilon symbol}% \UnicodeMathSymbol{"003F6}{\upbackepsilon }{\mathord}{greek reversed lunate epsilon symbol}% \UnicodeMathSymbol{"02015}{\horizbar }{\mathord}{horizontal bar}% \UnicodeMathSymbol{"02016}{\Vert }{\mathfence}{double vertical bar}% @@ -144,22 +147,23 @@ \UnicodeMathSymbol{"020D0}{\leftharpoonaccent }{\mathaccent}{combining left harpoon above}% \UnicodeMathSymbol{"020D1}{\rightharpoonaccent }{\mathaccent}{combining right harpoon above}% \UnicodeMathSymbol{"020D2}{\vertoverlay }{\mathaccent}{combining long vertical line overlay}% -\UnicodeMathSymbol{"020D6}{\overleftarrow }{\mathaccent}{combining left arrow above}% +\UnicodeMathSymbol{"020D6}{\overleftarrow }{\mathaccentwide}{combining left arrow above}% +\UnicodeMathSymbol{"020D7}{\overrightarrow }{\mathaccentwide}{combining left arrow above}% \UnicodeMathSymbol{"020D7}{\vec }{\mathaccent}{combining right arrow above}% \UnicodeMathSymbol{"020DB}{\dddot }{\mathaccent}{combining three dots above}% \UnicodeMathSymbol{"020DC}{\ddddot }{\mathaccent}{combining four dots above}% \UnicodeMathSymbol{"020DD}{\enclosecircle }{\mathord}{combining enclosing circle}% \UnicodeMathSymbol{"020DE}{\enclosesquare }{\mathord}{combining enclosing square}% \UnicodeMathSymbol{"020DF}{\enclosediamond }{\mathord}{combining enclosing diamond}% -\UnicodeMathSymbol{"020E1}{\overleftrightarrow }{\mathaccent}{combining left right arrow above}% +\UnicodeMathSymbol{"020E1}{\overleftrightarrow }{\mathaccentwide}{combining left right arrow above}% \UnicodeMathSymbol{"020E4}{\enclosetriangle }{\mathord}{combining enclosing upward pointing triangle}% \UnicodeMathSymbol{"020E7}{\annuity }{\mathaccent}{combining annuity symbol}% \UnicodeMathSymbol{"020E8}{\threeunderdot }{\mathbotaccent}{combining triple underdot}% \UnicodeMathSymbol{"020E9}{\widebridgeabove }{\mathaccent}{combining wide bridge above}% -\UnicodeMathSymbol{"020EC}{\underrightharpoondown }{\mathbotaccent}{combining rightwards harpoon with barb downwards}% -\UnicodeMathSymbol{"020ED}{\underleftharpoondown }{\mathbotaccent}{combining leftwards harpoon with barb downwards}% -\UnicodeMathSymbol{"020EE}{\underleftarrow }{\mathbotaccent}{combining left arrow below}% -\UnicodeMathSymbol{"020EF}{\underrightarrow }{\mathbotaccent}{combining right arrow below}% +\UnicodeMathSymbol{"020EC}{\underrightharpoondown }{\mathbotaccentwide}{combining rightwards harpoon with barb downwards}% +\UnicodeMathSymbol{"020ED}{\underleftharpoondown }{\mathbotaccentwide}{combining leftwards harpoon with barb downwards}% +\UnicodeMathSymbol{"020EE}{\underleftarrow }{\mathbotaccentwide}{combining left arrow below}% +\UnicodeMathSymbol{"020EF}{\underrightarrow }{\mathbotaccentwide}{combining right arrow below}% \UnicodeMathSymbol{"020F0}{\asteraccent }{\mathaccent}{combining asterisk above}% \UnicodeMathSymbol{"02102}{\BbbC }{\mathalpha}{/bbb c, open face c}% \UnicodeMathSymbol{"02107}{\Eulerconst }{\mathord}{euler constant}% @@ -877,8 +881,8 @@ \UnicodeMathSymbol{"0290C}{\leftbkarrow }{\mathrel}{leftwards double dash arrow}% \UnicodeMathSymbol{"0290D}{\rightbkarrow }{\mathrel}{rightwards double dash arrow}% \UnicodeMathSymbol{"0290E}{\leftdbkarrow }{\mathrel}{leftwards triple dash arrow}% -\UnicodeMathSymbol{"0290F}{\dbkarow }{\mathrel}{rightwards triple dash arrow}% -\UnicodeMathSymbol{"02910}{\drbkarow }{\mathrel}{rightwards two-headed triple dash arrow}% +\UnicodeMathSymbol{"0290F}{\dbkarrow }{\mathrel}{rightwards triple dash arrow}% +\UnicodeMathSymbol{"02910}{\drbkarrow }{\mathrel}{rightwards two-headed triple dash arrow}% \UnicodeMathSymbol{"02911}{\rightdotarrow }{\mathrel}{rightwards arrow with dotted stem}% \UnicodeMathSymbol{"02912}{\baruparrow }{\mathrel}{upwards arrow to bar}% \UnicodeMathSymbol{"02913}{\downarrowbar }{\mathrel}{downwards arrow to bar}% @@ -899,8 +903,8 @@ \UnicodeMathSymbol{"02922}{\neswarrow }{\mathrel}{north east and south west arrow}% \UnicodeMathSymbol{"02923}{\hknwarrow }{\mathrel}{north west arrow with hook}% \UnicodeMathSymbol{"02924}{\hknearrow }{\mathrel}{north east arrow with hook}% -\UnicodeMathSymbol{"02925}{\hksearow }{\mathrel}{south east arrow with hook}% -\UnicodeMathSymbol{"02926}{\hkswarow }{\mathrel}{south west arrow with hook}% +\UnicodeMathSymbol{"02925}{\hksearrow }{\mathrel}{south east arrow with hook}% +\UnicodeMathSymbol{"02926}{\hkswarrow }{\mathrel}{south west arrow with hook}% \UnicodeMathSymbol{"02927}{\tona }{\mathrel}{north west arrow and north east arrow}% \UnicodeMathSymbol{"02928}{\toea }{\mathrel}{north east arrow and south east arrow}% \UnicodeMathSymbol{"02929}{\tosa }{\mathrel}{south east arrow and south west arrow}% @@ -1439,10 +1443,6 @@ \UnicodeMathSymbol{"02B53}{\rightpentagonblack }{\mathord}{black right-pointing pentagon}% \UnicodeMathSymbol{"02B54}{\rightpentagon }{\mathord}{white right-pointing pentagon}% \UnicodeMathSymbol{"03012}{\postalmark }{\mathord}{postal mark}% -\UnicodeMathSymbol{"03014}{\lbrbrak }{\mathopen}{left broken bracket}% -\UnicodeMathSymbol{"03015}{\rbrbrak }{\mathclose}{right broken bracket}% -\UnicodeMathSymbol{"03018}{\Lbrbrak }{\mathopen}{left white tortoise shell bracket}% -\UnicodeMathSymbol{"03019}{\Rbrbrak }{\mathclose}{right white tortoise shell bracket}% \UnicodeMathSymbol{"03030}{\hzigzag }{\mathord}{zigzag}% \UnicodeMathSymbol{"1D400}{\mbfA }{\mathalpha}{mathematical bold capital a}% \UnicodeMathSymbol{"1D401}{\mbfB }{\mathalpha}{mathematical bold capital b}% diff --git a/Master/texmf-dist/tex/latex/unicode-math/unicode-math-xetex.sty b/Master/texmf-dist/tex/latex/unicode-math/unicode-math-xetex.sty index ae66336f6df..72c9dc0878a 100644 --- a/Master/texmf-dist/tex/latex/unicode-math/unicode-math-xetex.sty +++ b/Master/texmf-dist/tex/latex/unicode-math/unicode-math-xetex.sty @@ -5,9 +5,10 @@ %% The original source files were: %% %% unicode-math.dtx (with options: `package,XE') -%% Copyright 2006-2013 Will Robertson +%% unicode-math-compat.dtx (with options: `compat,XE') +%% Copyright 2006-2015 Will Robertson %% Copyright 2010-2013 Philipp Stephani -%% Copyright 2012-2013 Khaled Hosny +%% Copyright 2012-2015 Khaled Hosny %% %% This package is free software and may be redistributed and/or modified under %% the conditions of the LaTeX Project Public License, version 1.3c or higher @@ -15,245 +16,10 @@ %% %% This work is "maintained" by Will Robertson. \ExplSyntaxOn -\cs_new:Nn \usv_set:nnn - { - \tl_set:cn { \um_to_usv:nn {#1}{#2} } {#3} - } -\cs_new:Nn \um_to_usv:nn { g_um_#1_#2_usv } -\usv_set:nnn {up} {num} {48} -\usv_set:nnn {up} {Latin}{65} -\usv_set:nnn {up} {latin}{97} -\usv_set:nnn {up} {Greek}{"391} -\usv_set:nnn {up} {greek}{"3B1} -\usv_set:nnn {it} {Latin}{"1D434} -\usv_set:nnn {it} {latin}{"1D44E} -\usv_set:nnn {it} {Greek}{"1D6E2} -\usv_set:nnn {it} {greek}{"1D6FC} -\usv_set:nnn {bb} {num} {"1D7D8} -\usv_set:nnn {bb} {Latin}{"1D538} -\usv_set:nnn {bb} {latin}{"1D552} -\usv_set:nnn {scr} {Latin}{"1D49C} -\usv_set:nnn {cal} {Latin}{"1D49C} -\usv_set:nnn {scr} {latin}{"1D4B6} -\usv_set:nnn {frak}{Latin}{"1D504} -\usv_set:nnn {frak}{latin}{"1D51E} -\usv_set:nnn {sf} {num} {"1D7E2} -\usv_set:nnn {sfup}{num} {"1D7E2} -\usv_set:nnn {sfit}{num} {"1D7E2} -\usv_set:nnn {sfup}{Latin}{"1D5A0} -\usv_set:nnn {sf} {Latin}{"1D5A0} -\usv_set:nnn {sfup}{latin}{"1D5BA} -\usv_set:nnn {sf} {latin}{"1D5BA} -\usv_set:nnn {sfit}{Latin}{"1D608} -\usv_set:nnn {sfit}{latin}{"1D622} -\usv_set:nnn {tt} {num} {"1D7F6} -\usv_set:nnn {tt} {Latin}{"1D670} -\usv_set:nnn {tt} {latin}{"1D68A} -\usv_set:nnn {bf} {num} {"1D7CE} -\usv_set:nnn {bfup} {num} {"1D7CE} -\usv_set:nnn {bfit} {num} {"1D7CE} -\usv_set:nnn {bfup} {Latin}{"1D400} -\usv_set:nnn {bfup} {latin}{"1D41A} -\usv_set:nnn {bfup} {Greek}{"1D6A8} -\usv_set:nnn {bfup} {greek}{"1D6C2} -\usv_set:nnn {bfit} {Latin}{"1D468} -\usv_set:nnn {bfit} {latin}{"1D482} -\usv_set:nnn {bfit} {Greek}{"1D71C} -\usv_set:nnn {bfit} {greek}{"1D736} -\usv_set:nnn {bffrak}{Latin}{"1D56C} -\usv_set:nnn {bffrak}{latin}{"1D586} -\usv_set:nnn {bfscr} {Latin}{"1D4D0} -\usv_set:nnn {bfcal} {Latin}{"1D4D0} -\usv_set:nnn {bfscr} {latin}{"1D4EA} -\usv_set:nnn {bfsf} {num} {"1D7EC} -\usv_set:nnn {bfsfup}{num} {"1D7EC} -\usv_set:nnn {bfsfit}{num} {"1D7EC} -\usv_set:nnn {bfsfup}{Latin}{"1D5D4} -\usv_set:nnn {bfsfup}{latin}{"1D5EE} -\usv_set:nnn {bfsfup}{Greek}{"1D756} -\usv_set:nnn {bfsfup}{greek}{"1D770} -\usv_set:nnn {bfsfit}{Latin}{"1D63C} -\usv_set:nnn {bfsfit}{latin}{"1D656} -\usv_set:nnn {bfsfit}{Greek}{"1D790} -\usv_set:nnn {bfsfit}{greek}{"1D7AA} -\usv_set:nnn {bfsf}{Latin}{ \bool_if:NTF \g_um_upLatin_bool \g_um_bfsfup_Latin_usv \g_um_bfsfit_Latin_usv } -\usv_set:nnn {bfsf}{latin}{ \bool_if:NTF \g_um_uplatin_bool \g_um_bfsfup_latin_usv \g_um_bfsfit_latin_usv } -\usv_set:nnn {bfsf}{Greek}{ \bool_if:NTF \g_um_upGreek_bool \g_um_bfsfup_Greek_usv \g_um_bfsfit_Greek_usv } -\usv_set:nnn {bfsf}{greek}{ \bool_if:NTF \g_um_upgreek_bool \g_um_bfsfup_greek_usv \g_um_bfsfit_greek_usv } -\usv_set:nnn {bf} {Latin}{ \bool_if:NTF \g_um_bfupLatin_bool \g_um_bfup_Latin_usv \g_um_bfit_Latin_usv } -\usv_set:nnn {bf} {latin}{ \bool_if:NTF \g_um_bfuplatin_bool \g_um_bfup_latin_usv \g_um_bfit_latin_usv } -\usv_set:nnn {bf} {Greek}{ \bool_if:NTF \g_um_bfupGreek_bool \g_um_bfup_Greek_usv \g_um_bfit_Greek_usv } -\usv_set:nnn {bf} {greek}{ \bool_if:NTF \g_um_bfupgreek_bool \g_um_bfup_greek_usv \g_um_bfit_greek_usv } -\usv_set:nnn {up}{varTheta} {"3F4} -\usv_set:nnn {up}{Digamma} {"3DC} -\usv_set:nnn {up}{varepsilon}{"3F5} -\usv_set:nnn {up}{vartheta} {"3D1} -\usv_set:nnn {up}{varkappa} {"3F0} -\usv_set:nnn {up}{varphi} {"3D5} -\usv_set:nnn {up}{varrho} {"3F1} -\usv_set:nnn {up}{varpi} {"3D6} -\usv_set:nnn {up}{digamma} {"3DD} -\usv_set:nnn {bfup}{varTheta} {"1D6B9} -\usv_set:nnn {bfup}{Digamma} {"1D7CA} -\usv_set:nnn {bfup}{varepsilon}{"1D6DC} -\usv_set:nnn {bfup}{vartheta} {"1D6DD} -\usv_set:nnn {bfup}{varkappa} {"1D6DE} -\usv_set:nnn {bfup}{varphi} {"1D6DF} -\usv_set:nnn {bfup}{varrho} {"1D6E0} -\usv_set:nnn {bfup}{varpi} {"1D6E1} -\usv_set:nnn {bfup}{digamma} {"1D7CB} -\usv_set:nnn {it}{varTheta} {"1D6F3} -\usv_set:nnn {it}{varepsilon}{"1D716} -\usv_set:nnn {it}{vartheta} {"1D717} -\usv_set:nnn {it}{varkappa} {"1D718} -\usv_set:nnn {it}{varphi} {"1D719} -\usv_set:nnn {it}{varrho} {"1D71A} -\usv_set:nnn {it}{varpi} {"1D71B} -\usv_set:nnn {bfit}{varTheta} {"1D72D} -\usv_set:nnn {bfit}{varepsilon}{"1D750} -\usv_set:nnn {bfit}{vartheta} {"1D751} -\usv_set:nnn {bfit}{varkappa} {"1D752} -\usv_set:nnn {bfit}{varphi} {"1D753} -\usv_set:nnn {bfit}{varrho} {"1D754} -\usv_set:nnn {bfit}{varpi} {"1D755} -\usv_set:nnn {bfsfup}{varTheta} {"1D767} -\usv_set:nnn {bfsfup}{varepsilon}{"1D78A} -\usv_set:nnn {bfsfup}{vartheta} {"1D78B} -\usv_set:nnn {bfsfup}{varkappa} {"1D78C} -\usv_set:nnn {bfsfup}{varphi} {"1D78D} -\usv_set:nnn {bfsfup}{varrho} {"1D78E} -\usv_set:nnn {bfsfup}{varpi} {"1D78F} -\usv_set:nnn {bfsfit}{varTheta} {"1D7A1} -\usv_set:nnn {bfsfit}{varepsilon}{"1D7C4} -\usv_set:nnn {bfsfit}{vartheta} {"1D7C5} -\usv_set:nnn {bfsfit}{varkappa} {"1D7C6} -\usv_set:nnn {bfsfit}{varphi} {"1D7C7} -\usv_set:nnn {bfsfit}{varrho} {"1D7C8} -\usv_set:nnn {bfsfit}{varpi} {"1D7C9} -\usv_set:nnn {up} {Nabla}{"02207} -\usv_set:nnn {it} {Nabla}{"1D6FB} -\usv_set:nnn {bfup} {Nabla}{"1D6C1} -\usv_set:nnn {bfit} {Nabla}{"1D735} -\usv_set:nnn {bfsfup}{Nabla}{"1D76F} -\usv_set:nnn {bfsfit}{Nabla}{"1D7A9} -\usv_set:nnn {up} {partial}{"02202} -\usv_set:nnn {it} {partial}{"1D715} -\usv_set:nnn {bfup} {partial}{"1D6DB} -\usv_set:nnn {bfit} {partial}{"1D74F} -\usv_set:nnn {bfsfup}{partial}{"1D789} -\usv_set:nnn {bfsfit}{partial}{"1D7C3} -\usv_set:nnn {up}{B}{`\B} -\usv_set:nnn {up}{C}{`\C} -\usv_set:nnn {up}{D}{`\D} -\usv_set:nnn {up}{E}{`\E} -\usv_set:nnn {up}{F}{`\F} -\usv_set:nnn {up}{H}{`\H} -\usv_set:nnn {up}{I}{`\I} -\usv_set:nnn {up}{L}{`\L} -\usv_set:nnn {up}{M}{`\M} -\usv_set:nnn {up}{N}{`\N} -\usv_set:nnn {up}{P}{`\P} -\usv_set:nnn {up}{Q}{`\Q} -\usv_set:nnn {up}{R}{`\R} -\usv_set:nnn {up}{Z}{`\Z} -\usv_set:nnn {it}{B}{"1D435} -\usv_set:nnn {it}{C}{"1D436} -\usv_set:nnn {it}{D}{"1D437} -\usv_set:nnn {it}{E}{"1D438} -\usv_set:nnn {it}{F}{"1D439} -\usv_set:nnn {it}{H}{"1D43B} -\usv_set:nnn {it}{I}{"1D43C} -\usv_set:nnn {it}{L}{"1D43F} -\usv_set:nnn {it}{M}{"1D440} -\usv_set:nnn {it}{N}{"1D441} -\usv_set:nnn {it}{P}{"1D443} -\usv_set:nnn {it}{Q}{"1D444} -\usv_set:nnn {it}{R}{"1D445} -\usv_set:nnn {it}{Z}{"1D44D} -\usv_set:nnn {up}{d}{`\d} -\usv_set:nnn {up}{e}{`\e} -\usv_set:nnn {up}{g}{`\g} -\usv_set:nnn {up}{h}{`\h} -\usv_set:nnn {up}{i}{`\i} -\usv_set:nnn {up}{j}{`\j} -\usv_set:nnn {up}{o}{`\o} -\usv_set:nnn {it}{d}{"1D451} -\usv_set:nnn {it}{e}{"1D452} -\usv_set:nnn {it}{g}{"1D454} -\usv_set:nnn {it}{h}{"0210E} -\usv_set:nnn {it}{i}{"1D456} -\usv_set:nnn {it}{j}{"1D457} -\usv_set:nnn {it}{o}{"1D45C} -\usv_set:nnn {bb} {h}{"1D559} -\usv_set:nnn {tt} {h}{"1D691} -\usv_set:nnn {scr} {h}{"1D4BD} -\usv_set:nnn {frak} {h}{"1D525} -\usv_set:nnn {bfup} {h}{"1D421} -\usv_set:nnn {bfit} {h}{"1D489} -\usv_set:nnn {sfup} {h}{"1D5C1} -\usv_set:nnn {sfit} {h}{"1D629} -\usv_set:nnn {bffrak}{h}{"1D58D} -\usv_set:nnn {bfscr} {h}{"1D4F1} -\usv_set:nnn {bfsfup}{h}{"1D5F5} -\usv_set:nnn {bfsfit}{h}{"1D65D} -\usv_set:nnn {up}{dotlessi}{"00131} -\usv_set:nnn {up}{dotlessj}{"00237} -\usv_set:nnn {it}{dotlessi}{"1D6A4} -\usv_set:nnn {it}{dotlessj}{"1D6A5} -\usv_set:nnn {bb}{C}{"2102} -\usv_set:nnn {bb}{H}{"210D} -\usv_set:nnn {bb}{N}{"2115} -\usv_set:nnn {bb}{P}{"2119} -\usv_set:nnn {bb}{Q}{"211A} -\usv_set:nnn {bb}{R}{"211D} -\usv_set:nnn {bb}{Z}{"2124} -\usv_set:nnn {up}{Pi} {"003A0} -\usv_set:nnn {up}{pi} {"003C0} -\usv_set:nnn {up}{Gamma} {"00393} -\usv_set:nnn {up}{gamma} {"003B3} -\usv_set:nnn {up}{summation}{"02211} -\usv_set:nnn {it}{Pi} {"1D6F1} -\usv_set:nnn {it}{pi} {"1D70B} -\usv_set:nnn {it}{Gamma} {"1D6E4} -\usv_set:nnn {it}{gamma} {"1D6FE} -\usv_set:nnn {bb}{Pi} {"0213F} -\usv_set:nnn {bb}{pi} {"0213C} -\usv_set:nnn {bb}{Gamma} {"0213E} -\usv_set:nnn {bb}{gamma} {"0213D} -\usv_set:nnn {bb}{summation}{"02140} -\usv_set:nnn {bbit}{D}{"2145} -\usv_set:nnn {bbit}{d}{"2146} -\usv_set:nnn {bbit}{e}{"2147} -\usv_set:nnn {bbit}{i}{"2148} -\usv_set:nnn {bbit}{j}{"2149} -\usv_set:nnn {scr}{B}{"212C} -\usv_set:nnn {scr}{E}{"2130} -\usv_set:nnn {scr}{F}{"2131} -\usv_set:nnn {scr}{H}{"210B} -\usv_set:nnn {scr}{I}{"2110} -\usv_set:nnn {scr}{L}{"2112} -\usv_set:nnn {scr}{M}{"2133} -\usv_set:nnn {scr}{R}{"211B} -\usv_set:nnn {scr}{e}{"212F} -\usv_set:nnn {scr}{g}{"210A} -\usv_set:nnn {scr}{o}{"2134} -\usv_set:nnn {cal}{B}{"212C} -\usv_set:nnn {cal}{E}{"2130} -\usv_set:nnn {cal}{F}{"2131} -\usv_set:nnn {cal}{H}{"210B} -\usv_set:nnn {cal}{I}{"2110} -\usv_set:nnn {cal}{L}{"2112} -\usv_set:nnn {cal}{M}{"2133} -\usv_set:nnn {cal}{R}{"211B} -\usv_set:nnn {frak}{C}{"212D} -\usv_set:nnn {frak}{H}{"210C} -\usv_set:nnn {frak}{I}{"2111} -\usv_set:nnn {frak}{R}{"211C} -\usv_set:nnn {frak}{Z}{"2128} \tl_map_inline:nn { \new@mathgroup\cdp@list\cdp@elt\DeclareMathSizes - \@DeclareMathSizes\newmathalphabet\newmathalphabet@@\newmathalphabet@@@ + \@DeclareMathSizes\newmathalphabet\newmathalphabet__um\newmathalphabet__um@ \DeclareMathVersion\define@mathalphabet\define@mathgroup\addtoversion \version@list\version@elt\alpha@list\alpha@elt \restore@mathversion\init@restore@version\dorestore@version\process@table @@ -263,223 +29,355 @@ \DeclareMathAccent\set@mathaccent\DeclareMathSymbol\set@mathchar \set@mathsymbol\DeclareMathDelimiter\@xxDeclareMathDelimiter \@DeclareMathDelimiter\@xDeclareMathDelimiter\set@mathdelimiter - \set@@mathdelimiter\DeclareMathRadical\mathchar@type + \set__ummathdelimiter\DeclareMathRadical\mathchar@type \DeclareSymbolFontAlphabet\DeclareSymbolFontAlphabet@ } { \tl_remove_once:Nn \@preamblecmds {\do#1} } -\def\new@mathgroup{\alloc@8\mathgroup\chardef\@cclvi} -\let\newfam\new@mathgroup -\cs_set:Nn \um_set_mathsymbol:nNNn +\cs_set:Nn \__um_set_mathsymbol:nNNn { - \tl_case:Nnn #3 { - \mathop { \um_set_big_operator:nnn {#1} {#2} {#4} } - \mathopen { \um_set_math_open:nnn {#1} {#2} {#4} } - \mathclose { \um_set_math_close:nnn {#1} {#2} {#4} } - \mathfence { \um_set_math_fence:nnnn {#1} {#2} {#3} {#4} } + \int_compare:nT { \char_value_catcode:n {#4} == 11 } + { \char_set_catcode_other:n {#4} } + + \tl_case:Nn #3 + { + \mathord { \__um_set_mathcode:nnn {#4} {#3} {#1} } + \mathalpha { \__um_set_mathcode:nnn {#4} {#3} {#1} } + \mathbin { \__um_set_mathcode:nnn {#4} {#3} {#1} } + \mathrel { \__um_set_mathcode:nnn {#4} {#3} {#1} } + \mathpunct { \__um_set_mathcode:nnn {#4} {#3} {#1} } + \mathop { \__um_set_big_operator:nnn {#1} {#2} {#4} } + \mathopen { \__um_set_math_open:nnn {#1} {#2} {#4} } + \mathclose { \__um_set_math_close:nnn {#1} {#2} {#4} } + \mathfence { \__um_set_math_fence:nnnn {#1} {#2} {#3} {#4} } \mathaccent - { \cs_gset_protected_nopar:Npx #2 { \um_accent:nnn {fixed} {#1} {#4} } } + { \__um_set_math_accent:Nnnn #2 {fixed} {#1} {#4} } \mathbotaccent - { \cs_gset_protected_nopar:Npx #2 { \um_accent:nnn {bottom~ fixed} {#1} {#4} } } + { \__um_set_math_accent:Nnnn #2 {bottom~ fixed} {#1} {#4} } + \mathaccentwide + { \__um_set_math_accent:Nnnn #2 {} {#1} {#4} } + \mathbotaccentwide + { \__um_set_math_accent:Nnnn #2 {bottom} {#1} {#4} } \mathover - { - \cs_set_protected_nopar:Npx #2 ##1 - { \mathop { \um_accent:nnn {} {#1} {#4} {##1} } \limits } - } + { \__um_set_math_overunder:Nnnn #2 {} {#1} {#4} } \mathunder - { - \cs_set_protected_nopar:Npx #2 ##1 - { \mathop { \um_accent:nnn {bottom} {#1} {#4} {##1} } \limits } - } - }{ - \um_set_mathcode:nnn {#4} {#3} {#1} - } + { \__um_set_math_overunder:Nnnn #2 {bottom} {#1} {#4} } + } } \edef\mathfence{\string\mathfence} \edef\mathover{\string\mathover} \edef\mathunder{\string\mathunder} \edef\mathbotaccent{\string\mathbotaccent} -\cs_new:Nn \um_set_big_operator:nnn +\edef\mathaccentwide{\string\mathaccentwide} +\edef\mathbotaccentwide{\string\mathbotaccentwide} +\cs_new:Nn \__um_set_big_operator:nnn { \group_begin: \char_set_catcode_active:n {#3} - \char_gmake_mathactive:n {#3} - \um_active_char_set:wc #3 \q_nil { \cs_to_str:N #2 _sym } + \__um_char_gmake_mathactive:n {#3} + \__um_active_char_set:wc #3 \q_nil { \cs_to_str:N #2 _sym } \group_end: - \um_set_mathchar:cNnn {\cs_to_str:N #2 op} \mathop {#1} {#3} + + \__um_set_mathchar:cNnn {\cs_to_str:N #2 op} \mathop {#1} {#3} + \cs_gset:cpx { \cs_to_str:N #2 _sym } { \exp_not:c { \cs_to_str:N #2 op } - \exp_not:n { \tl_if_in:NnT \l_um_nolimits_tl {#2} \nolimits } + \exp_not:n { \tl_if_in:NnT \l__um_nolimits_tl {#2} \nolimits } } } -\cs_new:Nn \um_set_math_open:nnn +\cs_new:Nn \__um_set_math_open:nnn { - \tl_if_in:NnTF \l_um_radicals_tl {#2} + \tl_if_in:NnTF \l__um_radicals_tl {#2} { \cs_gset_protected_nopar:cpx {\cs_to_str:N #2 sign} - { \um_radical:nn {#1} {#3} } - \tl_set:cn {l_um_radical_\cs_to_str:N #2_tl} {\use:c{sym #1}~ #3} + { \__um_radical:nn {#1} {#3} } + \tl_set:cn {l__um_radical_\cs_to_str:N #2_tl} {\use:c{sym #1}~ #3} } { - \um_set_delcode:nnn {#1} {#3} {#3} - \um_set_mathcode:nnn {#3} \mathopen {#1} + \__um_set_delcode:nnn {#1} {#3} {#3} + \__um_set_mathcode:nnn {#3} \mathopen {#1} \cs_gset_protected_nopar:Npx #2 - { \um_delimiter:Nnn \mathopen {#1} {#3} } + { \__um_delimiter:Nnn \mathopen {#1} {#3} } } } -\cs_new:Nn \um_set_math_close:nnn +\cs_new:Nn \__um_set_math_close:nnn { - \um_set_delcode:nnn {#1} {#3} {#3} - \um_set_mathcode:nnn {#3} \mathclose {#1} + \__um_set_delcode:nnn {#1} {#3} {#3} + \__um_set_mathcode:nnn {#3} \mathclose {#1} \cs_gset_protected_nopar:Npx #2 - { \um_delimiter:Nnn \mathclose {#1} {#3} } + { \__um_delimiter:Nnn \mathclose {#1} {#3} } } -\cs_new:Nn \um_set_math_fence:nnnn +\cs_new:Nn \__um_set_math_fence:nnnn { - \um_set_mathcode:nnn {#4} {#3} {#1} - \um_set_delcode:nnn {#1} {#4} {#4} + \__um_set_mathcode:nnn {#4} {#3} {#1} + \__um_set_delcode:nnn {#1} {#4} {#4} \cs_gset_protected_nopar:cpx {l \cs_to_str:N #2} - { \um_delimiter:Nnn \mathopen {#1} {#4} } + { \__um_delimiter:Nnn \mathopen {#1} {#4} } \cs_gset_protected_nopar:cpx {r \cs_to_str:N #2} - { \um_delimiter:Nnn \mathclose {#1} {#4} } + { \__um_delimiter:Nnn \mathclose {#1} {#4} } + } +\cs_new:Nn \__um_set_math_accent:Nnnn + { + \cs_gset_protected_nopar:Npx #1 + { \__um_accent:nnn {#2} {#3} {#4} } + } +\cs_new:Nn \__um_set_math_overunder:Nnnn + { + \cs_gset_protected_nopar:Npx #1 ##1 + { + \mathop + { \__um_accent:nnn {#2} {#3} {#4} {##1} } + \limits + } + } +\keys_define:nn {__um_mathface} + { + version .code:n = + { \tl_set:Nn \l__um_mversion_tl {#1} } + } + +\DeclareDocumentCommand \setmathfontface { m O{} m O{} } + { + \tl_clear:N \l__um_mversion_tl + + \keys_set_known:nnN {__um_mathface} {#2,#4} \l__um_keyval_clist + \exp_args:Nnx \fontspec_set_family:Nxn \l__um_tmpa_tl + { ItalicFont={}, BoldFont={}, \exp_not:V \l__um_keyval_clist } {#3} + + \tl_if_empty:NT \l__um_mversion_tl + { + \tl_set:Nn \l__um_mversion_tl {normal} + \DeclareMathAlphabet #1 {\g_fontspec_encoding_tl} {\l__um_tmpa_tl} {\mddefault} {\updefault} + } + \SetMathAlphabet #1 {\l__um_mversion_tl} {\g_fontspec_encoding_tl} {\l__um_tmpa_tl} {\mddefault} {\updefault} + + % integrate with fontspec's \setmathrm etc: + \tl_case:Nn #1 + { + \mathrm { \cs_set_eq:NN \g__fontspec_mathrm_tl \l__um_tmpa_tl } + \mathsf { \cs_set_eq:NN \g__fontspec_mathsf_tl \l__um_tmpa_tl } + \mathtt { \cs_set_eq:NN \g__fontspec_mathtt_tl \l__um_tmpa_tl } + } + } + +\@onlypreamble \setmathfontface +\DeclareDocumentCommand \setoperatorfont {m} + { \tl_set:Nn \g__um_operator_mathfont_tl {#1} } +\setoperatorfont{\mathrm} +\cs_generate_variant:Nn \tl_if_eq:nnT {o} +\cs_set:Nn \__fontspec_setmainfont:nn + { + \fontspec_set_family:Nnn \rmdefault {#1}{#2} + \tl_if_eq:onT {\g__fontspec_mathrm_tl} {\rmdefault} + { + \fontspec_set_family:Nnn \g__fontspec_mathrm_tl {#1} {#2} + \SetMathAlphabet\mathrm{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\mddefault\updefault + \SetMathAlphabet\mathit{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\mddefault\itdefault + \SetMathAlphabet\mathbf{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\bfdefault\updefault + } + \normalfont + \ignorespaces + } + +\cs_set:Nn \__fontspec_setsansfont:nn + { + \fontspec_set_family:Nnn \sfdefault {#1}{#2} + \tl_if_eq:onT {\g__fontspec_mathsf_tl} {\sfdefault} + { + \fontspec_set_family:Nnn \g__fontspec_mathsf_tl {#1} {#2} + \SetMathAlphabet\mathsf{normal}\g_fontspec_encoding_tl\g__fontspec_mathsf_tl\mddefault\updefault + \SetMathAlphabet\mathsf{bold} \g_fontspec_encoding_tl\g__fontspec_mathsf_tl\bfdefault\updefault + } + \normalfont + \ignorespaces + } + +\cs_set:Nn \__fontspec_setmonofont:nn + { + \fontspec_set_family:Nnn \ttdefault {#1}{#2} + \tl_if_eq:onT {\g__fontspec_mathtt_tl} {\ttdefault} + { + \fontspec_set_family:Nnn \g__fontspec_mathtt_tl {#1} {#2} + \SetMathAlphabet\mathtt{normal}\g_fontspec_encoding_tl\g__fontspec_mathtt_tl\mddefault\updefault + \SetMathAlphabet\mathtt{bold} \g_fontspec_encoding_tl\g__fontspec_mathtt_tl\bfdefault\updefault + } + \normalfont + \ignorespaces + } +\cs_set:Nn \__fontspec_setmathrm:nn + { + \fontspec_set_family:Nnn \g__fontspec_mathrm_tl {#1} {#2} + \SetMathAlphabet\mathrm{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\mddefault\updefault + \SetMathAlphabet\mathit{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\mddefault\itdefault + \SetMathAlphabet\mathbf{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\bfdefault\updefault + } +\cs_set:Nn \__fontspec_setboldmathrm:nn + { + \fontspec_set_family:Nnn \g__fontspec_bfmathrm_tl {#1} {#2} + \SetMathAlphabet\mathrm{bold}\g_fontspec_encoding_tl\g__fontspec_bfmathrm_tl\mddefault\updefault + \SetMathAlphabet\mathbf{bold}\g_fontspec_encoding_tl\g__fontspec_bfmathrm_tl\bfdefault\updefault + \SetMathAlphabet\mathit{bold}\g_fontspec_encoding_tl\g__fontspec_bfmathrm_tl\mddefault\itdefault + } +\cs_set:Nn \__fontspec_setmathsf:nn + { + \fontspec_set_family:Nnn \g__fontspec_mathsf_tl {#1} {#2} + \SetMathAlphabet\mathsf{normal}\g_fontspec_encoding_tl\g__fontspec_mathsf_tl\mddefault\updefault + \SetMathAlphabet\mathsf{bold} \g_fontspec_encoding_tl\g__fontspec_mathsf_tl\bfdefault\updefault } -\DeclareDocumentCommand \setmathfont { O{} m } { - \tl_set:Nn \l_um_fontname_tl {#2} - \um_init: +\cs_set:Nn \__fontspec_setmathtt:nn + { + \fontspec_set_family:Nnn \g__fontspec_mathtt_tl {#1} {#2} + \SetMathAlphabet\mathtt{normal}\g_fontspec_encoding_tl\g__fontspec_mathtt_tl\mddefault\updefault + \SetMathAlphabet\mathtt{bold} \g_fontspec_encoding_tl\g__fontspec_mathtt_tl\bfdefault\updefault + } +\DeclareDocumentCommand \setmathfont { O{} m O{} } + { + \tl_set:Nn \l__um_fontname_tl {#2} + \__um_init: \cs_if_exist:cF { S@ \f@size } { \calculate@math@sizes } \csname S@\f@size\endcsname - \keys_set_known:nnN {unicode-math} {#1} \l_um_unknown_keys_clist - \bool_if:NT \l_um_init_bool { \um_log:n {default-math-font} } - \um_fontspec_select_font: - \cs_if_exist:cF { sym \um_symfont_tl } + \keys_set_known:nnN {unicode-math} {#1,#3} \l__um_unknown_keys_clist + \bool_if:NT \l__um_init_bool { \__um_log:n {default-math-font} } + + \csname TIC\endcsname + \__um_fontspec_select_font: + \csname TOC\endcsname + \bool_if:nT { \l__um_ot_math_bool && !\g__um_mainfont_already_set_bool } + { + \__um_declare_math_sizes: + \__um_fontspec_select_font: + } + \cs_if_exist:cF { sym \__um_symfont_tl } { - \DeclareSymbolFont{\um_symfont_tl} - {\encodingdefault}{\l_um_family_tl}{\mddefault}{\updefault} + \DeclareSymbolFont{\__um_symfont_tl} + {\encodingdefault}{\l__um_family_tl}{\mddefault}{\updefault} } - \SetSymbolFont{\um_symfont_tl}{\l_um_mversion_tl} - {\encodingdefault}{\l_um_family_tl}{\mddefault}{\updefault} - \tl_set:Nn \l_um_tmpa_tl {normal} - \tl_if_eq:NNT \l_um_mversion_tl \l_um_tmpa_tl + \SetSymbolFont{\__um_symfont_tl}{\l__um_mversion_tl} + {\encodingdefault}{\l__um_family_tl}{\mddefault}{\updefault} + \tl_set:Nn \l__um_tmpa_tl {normal} + \tl_if_eq:NNT \l__um_mversion_tl \l__um_tmpa_tl { - \SetSymbolFont{\um_symfont_tl}{bold} - {\encodingdefault}{\l_um_family_tl}{\bfdefault}{\updefault} + \SetSymbolFont{\__um_symfont_tl}{bold} + {\encodingdefault}{\l__um_family_tl}{\bfdefault}{\updefault} } - \bool_if:nT { \l_um_ot_math_bool && !\g_um_mainfont_already_set_bool } - { - \bool_set_true:N \g_um_mainfont_already_set_bool - \um_declare_math_sizes: - \um_setup_legacy_fam_two: - \um_setup_legacy_fam_three: - } - \um_input_math_symbol_table: - \um_remap_symbols: - \um_setup_mathactives: - \um_setup_accents: - \um_setup_delcodes: - \um_setup_alphabets: - \um_setup_negations: + \bool_if:nT { \l__um_ot_math_bool && !\g__um_mainfont_already_set_bool } + { + \bool_set_true:N \g__um_mainfont_already_set_bool + \__um_setup_legacy_fam_two: + \__um_setup_legacy_fam_three: + } + \csname TIC\endcsname + \__um_input_math_symbol_table: + \csname TOC\endcsname + \__um_remap_symbols: + \__um_setup_mathactives: + \__um_setup_delcodes: + \csname TIC\endcsname + \__um_setup_alphabets: + \csname TOC\endcsname + \__um_setup_negations: \ignorespaces -} + } \cs_set_eq:NN \resetmathfont \setmathfont -\cs_new:Nn \um_init: +\cs_new:Nn \__um_init: { - \bool_set_true:N \l_um_ot_math_bool + \bool_set_true:N \l__um_ot_math_bool \cs_set_eq:NN \glb@currsize \scan_stop: - \bool_set_true:N \l_um_init_bool - \seq_clear:N \l_um_char_range_seq - \clist_clear:N \l_um_char_num_range_clist - \seq_clear:N \l_um_mathalph_seq - \seq_clear:N \l_um_missing_alph_seq - \tl_set:Nn \l_um_mversion_tl {normal} - \tl_set:Nn \um_symfont_tl {operators} - \cs_set_eq:NN \_um_sym:nnn \um_process_symbol_noparse:nnn - \cs_set_eq:NN \um_set_mathalphabet_char:Nnn \um_mathmap_noparse:Nnn - \cs_set_eq:NN \um_remap_symbol:nnn \um_remap_symbol_noparse:nnn - \cs_set_eq:NN \um_maybe_init_alphabet:n \um_init_alphabet:n - \cs_set_eq:NN \um_map_char_single:nn \um_map_char_noparse:nn - \cs_set_eq:NN \um_assign_delcode:nn \um_assign_delcode_noparse:nn - \cs_set_eq:NN \um_make_mathactive:nNN \um_make_mathactive_noparse:nNN - \tl_set:Nn \l_um_script_features_tl {Style=MathScript} - \tl_set:Nn \l_um_sscript_features_tl {Style=MathScriptScript} - \tl_set_eq:NN \l_um_script_font_tl \l_um_fontname_tl - \tl_set_eq:NN \l_um_sscript_font_tl \l_um_fontname_tl - } -\cs_new:Nn \um_declare_math_sizes: + \bool_set_true:N \l__um_init_bool + \seq_clear:N \l__um_char_range_seq + \clist_clear:N \l__um_char_nrange_clist + \seq_clear:N \l__um_mathalph_seq + \seq_clear:N \l__um_missing_alph_seq + \tl_set:Nn \l__um_mversion_tl {normal} + \tl_set:Nn \__um_symfont_tl {operators} + \cs_set_eq:NN \__um_sym:nnn \__um_process_symbol_noparse:nnn + \cs_set_eq:NN \__um_set_mathalphabet_char:nnn \__um_mathmap_noparse:nnn + \cs_set_eq:NN \__um_remap_symbol:nnn \__um_remap_symbol_noparse:nnn + \cs_set_eq:NN \__um_maybe_init_alphabet:n \__um_init_alphabet:n + \cs_set_eq:NN \__um_map_char_single:nn \__um_map_char_noparse:nn + \cs_set_eq:NN \__um_assign_delcode:nn \__um_assign_delcode_noparse:nn + \cs_set_eq:NN \__um_make_mathactive:nNN \__um_make_mathactive_noparse:nNN + \tl_set:Nn \l__um_script_features_tl {Style=MathScript} + \tl_set:Nn \l__um_sscript_features_tl {Style=MathScriptScript} + \tl_set_eq:NN \l__um_script_font_tl \l__um_fontname_tl + \tl_set_eq:NN \l__um_sscript_font_tl \l__um_fontname_tl + } +\cs_new:Nn \__um_declare_math_sizes: { - \dim_compare:nF { \fontdimen 10 \l_um_font == 0pt } + \dim_compare:nF { \fontdimen 10 \l__um_font == 0pt } { \DeclareMathSizes { \f@size } { \f@size } - { \um_fontdimen_to_scale:nn {10} {\l_um_font} } - { \um_fontdimen_to_scale:nn {11} {\l_um_font} } + { \__um_fontdimen_to_scale:nn {10} {\l__um_font} } + { \__um_fontdimen_to_scale:nn {11} {\l__um_font} } } } -\cs_new:Nn \um_setup_legacy_fam_two: +\cs_new:Nn \__um_setup_legacy_fam_two: { - \fontspec_set_family:Nxn \l_um_family_tl + \fontspec_set_family:Nxn \l__um_family_tl { - \l_um_font_keyval_tl, + \l__um_font_keyval_tl, Scale=1.00001, FontAdjustment = { - \fontdimen8\font= \um_get_fontparam:nn {43} {FractionNumeratorDisplayStyleShiftUp}\relax - \fontdimen9\font= \um_get_fontparam:nn {42} {FractionNumeratorShiftUp}\relax - \fontdimen10\font=\um_get_fontparam:nn {32} {StackTopShiftUp}\relax - \fontdimen11\font=\um_get_fontparam:nn {45} {FractionDenominatorDisplayStyleShiftDown}\relax - \fontdimen12\font=\um_get_fontparam:nn {44} {FractionDenominatorShiftDown}\relax - \fontdimen13\font=\um_get_fontparam:nn {21} {SuperscriptShiftUp}\relax - \fontdimen14\font=\um_get_fontparam:nn {21} {SuperscriptShiftUp}\relax - \fontdimen15\font=\um_get_fontparam:nn {22} {SuperscriptShiftUpCramped}\relax - \fontdimen16\font=\um_get_fontparam:nn {18} {SubscriptShiftDown}\relax - \fontdimen17\font=\um_get_fontparam:nn {18} {SubscriptShiftDownWithSuperscript}\relax - \fontdimen18\font=\um_get_fontparam:nn {24} {SuperscriptBaselineDropMax}\relax - \fontdimen19\font=\um_get_fontparam:nn {20} {SubscriptBaselineDropMin}\relax + \fontdimen8\font= \__um_get_fontparam:nn {43} {FractionNumeratorDisplayStyleShiftUp}\relax + \fontdimen9\font= \__um_get_fontparam:nn {42} {FractionNumeratorShiftUp}\relax + \fontdimen10\font=\__um_get_fontparam:nn {32} {StackTopShiftUp}\relax + \fontdimen11\font=\__um_get_fontparam:nn {45} {FractionDenominatorDisplayStyleShiftDown}\relax + \fontdimen12\font=\__um_get_fontparam:nn {44} {FractionDenominatorShiftDown}\relax + \fontdimen13\font=\__um_get_fontparam:nn {21} {SuperscriptShiftUp}\relax + \fontdimen14\font=\__um_get_fontparam:nn {21} {SuperscriptShiftUp}\relax + \fontdimen15\font=\__um_get_fontparam:nn {22} {SuperscriptShiftUpCramped}\relax + \fontdimen16\font=\__um_get_fontparam:nn {18} {SubscriptShiftDown}\relax + \fontdimen17\font=\__um_get_fontparam:nn {18} {SubscriptShiftDownWithSuperscript}\relax + \fontdimen18\font=\__um_get_fontparam:nn {24} {SuperscriptBaselineDropMax}\relax + \fontdimen19\font=\__um_get_fontparam:nn {20} {SubscriptBaselineDropMin}\relax \fontdimen20\font=0pt\relax % delim1 = FractionDelimiterDisplaySize \fontdimen21\font=0pt\relax % delim2 = FractionDelimiterSize - \fontdimen22\font=\um_get_fontparam:nn {15} {AxisHeight}\relax + \fontdimen22\font=\__um_get_fontparam:nn {15} {AxisHeight}\relax } - } {\l_um_fontname_tl} - \SetSymbolFont{symbols}{\l_um_mversion_tl} - {\encodingdefault}{\l_um_family_tl}{\mddefault}{\updefault} + } {\l__um_fontname_tl} + \SetSymbolFont{symbols}{\l__um_mversion_tl} + {\encodingdefault}{\l__um_family_tl}{\mddefault}{\updefault} - \tl_set:Nn \l_um_tmpa_tl {normal} - \tl_if_eq:NNT \l_um_mversion_tl \l_um_tmpa_tl + \tl_set:Nn \l__um_tmpa_tl {normal} + \tl_if_eq:NNT \l__um_mversion_tl \l__um_tmpa_tl { \SetSymbolFont{symbols}{bold} - {\encodingdefault}{\l_um_family_tl}{\bfdefault}{\updefault} + {\encodingdefault}{\l__um_family_tl}{\bfdefault}{\updefault} } } -\cs_new:Nn \um_setup_legacy_fam_three: +\cs_new:Nn \__um_setup_legacy_fam_three: { - \fontspec_set_family:Nxn \l_um_family_tl + \fontspec_set_family:Nxn \l__um_family_tl { - \l_um_font_keyval_tl, + \l__um_font_keyval_tl, Scale=0.99999, FontAdjustment={ - \fontdimen8\font= \um_get_fontparam:nn {48} {FractionRuleThickness}\relax - \fontdimen9\font= \um_get_fontparam:nn {28} {UpperLimitGapMin}\relax - \fontdimen10\font=\um_get_fontparam:nn {30} {LowerLimitGapMin}\relax - \fontdimen11\font=\um_get_fontparam:nn {29} {UpperLimitBaselineRiseMin}\relax - \fontdimen12\font=\um_get_fontparam:nn {31} {LowerLimitBaselineDropMin}\relax + \fontdimen8\font= \__um_get_fontparam:nn {48} {FractionRuleThickness}\relax + \fontdimen9\font= \__um_get_fontparam:nn {28} {UpperLimitGapMin}\relax + \fontdimen10\font=\__um_get_fontparam:nn {30} {LowerLimitGapMin}\relax + \fontdimen11\font=\__um_get_fontparam:nn {29} {UpperLimitBaselineRiseMin}\relax + \fontdimen12\font=\__um_get_fontparam:nn {31} {LowerLimitBaselineDropMin}\relax \fontdimen13\font=0pt\relax } - } {\l_um_fontname_tl} - \SetSymbolFont{largesymbols}{\l_um_mversion_tl} - {\encodingdefault}{\l_um_family_tl}{\mddefault}{\updefault} + } {\l__um_fontname_tl} + \SetSymbolFont{largesymbols}{\l__um_mversion_tl} + {\encodingdefault}{\l__um_family_tl}{\mddefault}{\updefault} - \tl_set:Nn \l_um_tmpa_tl {normal} - \tl_if_eq:NNT \l_um_mversion_tl \l_um_tmpa_tl + \tl_set:Nn \l__um_tmpa_tl {normal} + \tl_if_eq:NNT \l__um_mversion_tl \l__um_tmpa_tl { \SetSymbolFont{largesymbols}{bold} - {\encodingdefault}{\l_um_family_tl}{\bfdefault}{\updefault} + {\encodingdefault}{\l__um_family_tl}{\bfdefault}{\updefault} } } -\cs_new:Nn \um_get_fontparam:nn - { \the\fontdimen#1\l_um_font\relax } -\cs_new:Nn \um_fontspec_select_font: +\cs_new:Nn \__um_get_fontparam:nn + { \the\fontdimen#1\l__um_font\relax } +\cs_new:Nn \__um_fontspec_select_font: { - \tl_set:Nx \l_um_font_keyval_tl { + \tl_set:Nx \l__um_font_keyval_tl { BoldItalicFont = {}, ItalicFont = {}, Script = Math, SizeFeatures = @@ -489,131 +387,130 @@ } , { Size = \sf@size-\tf@size , - Font = \l_um_script_font_tl , - \l_um_script_features_tl + Font = \l__um_script_font_tl , + \l__um_script_features_tl } , { Size = -\sf@size , - Font = \l_um_sscript_font_tl , - \l_um_sscript_features_tl + Font = \l__um_sscript_font_tl , + \l__um_sscript_features_tl } } , - \l_um_unknown_keys_clist + \l__um_unknown_keys_clist } - \fontspec_set_fontface:NNxn \l_um_font \l_um_family_tl - {\l_um_font_keyval_tl} {\l_um_fontname_tl} + \fontspec_set_fontface:NNxn \l__um_font \l__um_family_tl + {\l__um_font_keyval_tl} {\l__um_fontname_tl} \group_begin: - \fontfamily{\l_um_family_tl}\selectfont - \fontspec_if_script:nF {math} {\bool_gset_false:N \l_um_ot_math_bool} + \fontfamily{\l__um_family_tl}\selectfont + \fontspec_if_script:nF {math} {\bool_gset_false:N \l__um_ot_math_bool} \group_end: } -\cs_set:Nn \um_process_symbol_noparse:nnn +\cs_set:Nn \__um_process_symbol_noparse:nnn { - \um_set_mathsymbol:nNNn {\um_symfont_tl} #2#3{#1} + \__um_set_mathsymbol:nNNn {\__um_symfont_tl} #2 #3 {#1} } -\cs_set:Nn \um_process_symbol_parse:nnn +\cs_set:Nn \__um_process_symbol_parse:nnn { - \um_if_char_spec:nNNT{#1}{#2}{#3} + \__um_if_char_spec:nNNT {#1} {#2} {#3} { - \um_process_symbol_noparse:nnn {#1}{#2}{#3} + \__um_process_symbol_noparse:nnn {#1} {#2} {#3} } } -\cs_new:Npn \um_remap_symbols: +\cs_new:Npn \__um_remap_symbols: { - \um_remap_symbol:nnn{`\-}{\mathbin}{"02212}% hyphen to minus - \um_remap_symbol:nnn{`\*}{\mathbin}{"02217}% text asterisk to "centred asterisk" - \bool_if:NF \g_um_literal_colon_bool + \__um_remap_symbol:nnn{`\-}{\mathbin}{"02212}% hyphen to minus + \__um_remap_symbol:nnn{`\*}{\mathbin}{"02217}% text asterisk to "centred asterisk" + \bool_if:NF \g__um_literal_colon_bool { - \um_remap_symbol:nnn{`\:}{\mathrel}{"02236}% colon to ratio (i.e., punct to rel) + \__um_remap_symbol:nnn{`\:}{\mathrel}{"02236}% colon to ratio (i.e., punct to rel) } } -\cs_new:Nn \um_remap_symbol_parse:nnn +\cs_new:Nn \__um_remap_symbol_parse:nnn { - \um_if_char_spec:nNNT {#3} {\@nil} {#2} - { - \um_remap_symbol_noparse:nnn {#1} {#2} {#3} - } + \__um_if_char_spec:nNNT {#3} {\@nil} {#2} + { \__um_remap_symbol_noparse:nnn {#1} {#2} {#3} } } -\cs_new:Nn \um_remap_symbol_noparse:nnn +\cs_new:Nn \__um_remap_symbol_noparse:nnn { \clist_map_inline:nn {#1} - { - \um_set_mathcode:nnnn {##1} {#2} {\um_symfont_tl} {#3} - } + { \__um_set_mathcode:nnnn {##1} {#2} {\__um_symfont_tl} {#3} } } -\cs_new:Npn \um_setup_mathactives: +\cs_new:Npn \__um_setup_mathactives: { - \um_make_mathactive:nNN {"2032} \um_prime_single_mchar \mathord - \um_make_mathactive:nNN {"2033} \um_prime_double_mchar \mathord - \um_make_mathactive:nNN {"2034} \um_prime_triple_mchar \mathord - \um_make_mathactive:nNN {"2057} \um_prime_quad_mchar \mathord - \um_make_mathactive:nNN {"2035} \um_backprime_single_mchar \mathord - \um_make_mathactive:nNN {"2036} \um_backprime_double_mchar \mathord - \um_make_mathactive:nNN {"2037} \um_backprime_triple_mchar \mathord - \um_make_mathactive:nNN {`\'} \mathstraightquote \mathord - \um_make_mathactive:nNN {`\`} \mathbacktick \mathord + \__um_make_mathactive:nNN {"2032} \__um_prime_single_mchar \mathord + \__um_make_mathactive:nNN {"2033} \__um_prime_double_mchar \mathord + \__um_make_mathactive:nNN {"2034} \__um_prime_triple_mchar \mathord + \__um_make_mathactive:nNN {"2057} \__um_prime_quad_mchar \mathord + \__um_make_mathactive:nNN {"2035} \__um_backprime_single_mchar \mathord + \__um_make_mathactive:nNN {"2036} \__um_backprime_double_mchar \mathord + \__um_make_mathactive:nNN {"2037} \__um_backprime_triple_mchar \mathord + \__um_make_mathactive:nNN {`\'} \mathstraightquote \mathord + \__um_make_mathactive:nNN {`\`} \mathbacktick \mathord } -\cs_new:Nn \um_make_mathactive_parse:nNN +\cs_new:Nn \__um_make_mathactive_parse:nNN { - \um_if_char_spec:nNNT {#1} #2 #3 - { \um_make_mathactive_noparse:nNN {#1} #2 #3 } + \__um_if_char_spec:nNNT {#1} #2 #3 + { \__um_make_mathactive_noparse:nNN {#1} #2 #3 } } -\cs_new:Nn \um_make_mathactive_noparse:nNN +\cs_new:Nn \__um_make_mathactive_noparse:nNN { - \um_set_mathchar:NNnn #2 #3 {\um_symfont_tl} {#1} - \char_gmake_mathactive:n {#1} + \__um_set_mathchar:NNnn #2 #3 {\__um_symfont_tl} {#1} + \__um_char_gmake_mathactive:n {#1} } -\cs_new:Nn \um_assign_delcode_noparse:nn - { - \um_set_delcode:nnn \um_symfont_tl {#1} {#2} - } -\cs_new:Nn \um_assign_delcode_parse:nn - { - \um_if_char_spec:nNNT {#2} {\@nil} {\@nil} - { - \um_assign_delcode_noparse:nn {#1} {#2} - } - } -\cs_new:Nn \um_assign_delcode:n { \um_assign_delcode:nn {#1} {#1} } -\cs_new:Npn \um_setup_delcodes: - { - \um_assign_delcode:nn {`\.} {\c_zero} % ensure \left. and \right. work - \um_assign_delcode:nn {`\/} {\g_um_slash_delimiter_usv} - \um_assign_delcode:nn {"2044} {\g_um_slash_delimiter_usv} % fracslash - \um_assign_delcode:nn {"2215} {\g_um_slash_delimiter_usv} % divslash - \um_assign_delcode:n {"005C} % backslash - \um_assign_delcode:nn {`\<} {"27E8} % angle brackets with ascii notation - \um_assign_delcode:nn {`\>} {"27E9} % angle brackets with ascii notation - \um_assign_delcode:n {"2191} % up arrow - \um_assign_delcode:n {"2193} % down arrow - \um_assign_delcode:n {"2195} % updown arrow - \um_assign_delcode:n {"219F} % up arrow twohead - \um_assign_delcode:n {"21A1} % down arrow twohead - \um_assign_delcode:n {"21A5} % up arrow from bar - \um_assign_delcode:n {"21A7} % down arrow from bar - \um_assign_delcode:n {"21A8} % updown arrow from bar - \um_assign_delcode:n {"21BE} % up harpoon right - \um_assign_delcode:n {"21BF} % up harpoon left - \um_assign_delcode:n {"21C2} % down harpoon right - \um_assign_delcode:n {"21C3} % down harpoon left - \um_assign_delcode:n {"21C5} % arrows up down - \um_assign_delcode:n {"21F5} % arrows down up - \um_assign_delcode:n {"21C8} % arrows up up - \um_assign_delcode:n {"21CA} % arrows down down - \um_assign_delcode:n {"21D1} % double up arrow - \um_assign_delcode:n {"21D3} % double down arrow - \um_assign_delcode:n {"21D5} % double updown arrow - \um_assign_delcode:n {"21DE} % up arrow double stroke - \um_assign_delcode:n {"21DF} % down arrow double stroke - \um_assign_delcode:n {"21E1} % up arrow dashed - \um_assign_delcode:n {"21E3} % down arrow dashed - \um_assign_delcode:n {"21E7} % up white arrow - \um_assign_delcode:n {"21E9} % down white arrow - \um_assign_delcode:n {"21EA} % up white arrow from bar - \um_assign_delcode:n {"21F3} % updown white arrow - } -\tl_new:N \l_um_nolimits_tl -\tl_set:Nn \l_um_nolimits_tl +\cs_new:Nn \__um_assign_delcode_noparse:nn + { + \__um_set_delcode:nnn \__um_symfont_tl {#1} {#2} + } +\cs_new:Nn \__um_assign_delcode_parse:nn + { + \__um_if_char_spec:nNNT {#2} {\@nil} {\@nil} + { + \__um_assign_delcode_noparse:nn {#1} {#2} + } + } +\cs_new:Nn \__um_assign_delcode:n { \__um_assign_delcode:nn {#1} {#1} } +\cs_new:Npn \__um_setup_delcodes: + { + % ensure \left. and \right. work: + \__um_set_delcode:nnn \__um_symfont_tl {`\.} {\c_zero} + % this is forcefully done to fix a bug -- indicates a larger problem! + + \__um_assign_delcode:nn {`\/} {\g__um_slash_delimiter_usv} + \__um_assign_delcode:nn {"2044} {\g__um_slash_delimiter_usv} % fracslash + \__um_assign_delcode:nn {"2215} {\g__um_slash_delimiter_usv} % divslash + \__um_assign_delcode:n {"005C} % backslash + \__um_assign_delcode:nn {`\<} {"27E8} % angle brackets with ascii notation + \__um_assign_delcode:nn {`\>} {"27E9} % angle brackets with ascii notation + \__um_assign_delcode:n {"2191} % up arrow + \__um_assign_delcode:n {"2193} % down arrow + \__um_assign_delcode:n {"2195} % updown arrow + \__um_assign_delcode:n {"219F} % up arrow twohead + \__um_assign_delcode:n {"21A1} % down arrow twohead + \__um_assign_delcode:n {"21A5} % up arrow from bar + \__um_assign_delcode:n {"21A7} % down arrow from bar + \__um_assign_delcode:n {"21A8} % updown arrow from bar + \__um_assign_delcode:n {"21BE} % up harpoon right + \__um_assign_delcode:n {"21BF} % up harpoon left + \__um_assign_delcode:n {"21C2} % down harpoon right + \__um_assign_delcode:n {"21C3} % down harpoon left + \__um_assign_delcode:n {"21C5} % arrows up down + \__um_assign_delcode:n {"21F5} % arrows down up + \__um_assign_delcode:n {"21C8} % arrows up up + \__um_assign_delcode:n {"21CA} % arrows down down + \__um_assign_delcode:n {"21D1} % double up arrow + \__um_assign_delcode:n {"21D3} % double down arrow + \__um_assign_delcode:n {"21D5} % double updown arrow + \__um_assign_delcode:n {"21DE} % up arrow double stroke + \__um_assign_delcode:n {"21DF} % down arrow double stroke + \__um_assign_delcode:n {"21E1} % up arrow dashed + \__um_assign_delcode:n {"21E3} % down arrow dashed + \__um_assign_delcode:n {"21E7} % up white arrow + \__um_assign_delcode:n {"21E9} % down white arrow + \__um_assign_delcode:n {"21EA} % up white arrow from bar + \__um_assign_delcode:n {"21F3} % updown white arrow + } +\tl_new:N \l__um_nolimits_tl +\tl_set:Nn \l__um_nolimits_tl { \int\iint\iiint\iiiint\oint\oiint\oiiint \intclockwise\varointclockwise\ointctrclockwise\sumint @@ -623,21 +520,21 @@ } \DeclareDocumentCommand \addnolimits {m} { - \tl_put_right:Nn \l_um_nolimits_tl {#1} + \tl_put_right:Nn \l__um_nolimits_tl {#1} } \DeclareDocumentCommand \removenolimits {m} { - \tl_remove_all:Nn \l_um_nolimits_tl {#1} + \tl_remove_all:Nn \l__um_nolimits_tl {#1} } -\tl_new:N \l_um_radicals_tl -\tl_set:Nn \l_um_radicals_tl {\sqrt \longdivision} -\cs_new_protected_nopar:Nn \um_new_cramped_style:N +\tl_new:N \l__um_radicals_tl +\tl_set:Nn \l__um_radicals_tl {\sqrt \longdivision} +\cs_new_protected_nopar:Nn \__um_new_cramped_style:N { \quark_new:N #1 } -\um_new_cramped_style:N \crampeddisplaystyle -\um_new_cramped_style:N \crampedtextstyle -\um_new_cramped_style:N \crampedscriptstyle -\um_new_cramped_style:N \crampedscriptscriptstyle - \cs_new_nopar:Npn \um_font_dimen:Nnnnn #1 #2 #3 #4 #5 { +\__um_new_cramped_style:N \crampeddisplaystyle +\__um_new_cramped_style:N \crampedtextstyle +\__um_new_cramped_style:N \crampedscriptstyle +\__um_new_cramped_style:N \crampedscriptscriptstyle + \cs_new_nopar:Npn \__um_font_dimen:Nnnnn #1 #2 #3 #4 #5 { \fontdimen \cs_if_eq:NNTF #1 \displaystyle { #2 \textfont @@ -670,228 +567,197 @@ } \c_two } -\cs_new_protected_nopar:Nn \um_font_param:nnnnn +\cs_new_protected_nopar:Nn \__um_font_param:nnnnn { - \um_font_param_aux:ccnnnn { um_ #1 :N } { um_set_ #1 :N } + \__um_font_param_aux:ccnnnn { __um_ #1 :N } { __um_set_ #1 :Nn } { #2 } { #3 } { #4 } { #5 } } -\cs_new_protected_nopar:Nn \um_font_param:nnn +\cs_new_protected_nopar:Nn \__um_font_param:nnn { - \um_font_param:nnnnn { #1 } { #2 } { #2 } { #3 } { #3 } + \__um_font_param:nnnnn { #1 } { #2 } { #2 } { #3 } { #3 } } -\cs_new_protected_nopar:Nn \um_font_param:nn +\cs_new_protected_nopar:Nn \__um_font_param:nn { - \um_font_param:nnnnn { #1 } { #2 } { #2 } { #2 } { #2 } + \__um_font_param:nnnnn { #1 } { #2 } { #2 } { #2 } { #2 } } -\cs_new_protected_nopar:Nn \um_font_param:n +\cs_new_protected_nopar:Nn \__um_font_param:n { } -\cs_new_protected_nopar:Nn \um_font_param_aux:NNnnnn +\cs_new_protected_nopar:Nn \__um_font_param_aux:NNnnnn { \cs_new_nopar:Npn #1 ##1 { - \um_font_dimen:Nnnnn ##1 { #3 } { #4 } { #5 } { #6 } + \__um_font_dimen:Nnnnn ##1 { #3 } { #4 } { #5 } { #6 } } \cs_new_protected_nopar:Npn #2 ##1 ##2 { #1 ##1 \dim_eval:n { ##2 } } } -\cs_generate_variant:Nn \um_font_param_aux:NNnnnn { cc } -\um_font_param:nn { axis } { 15 } -\um_font_param:nn { operator_size } { 13 } -\um_font_param:n { fraction_del_size } -\um_font_param:nnn { fraction_denom_down } { 45 } { 44 } -\um_font_param:nnn { fraction_denom_vgap } { 50 } { 49 } -\um_font_param:nnn { fraction_num_up } { 43 } { 42 } -\um_font_param:nnn { fraction_num_vgap } { 47 } { 46 } -\um_font_param:nn { fraction_rule } { 48 } -\um_font_param:nn { limit_above_bgap } { 29 } -\um_font_param:n { limit_above_kern } -\um_font_param:nn { limit_above_vgap } { 28 } -\um_font_param:nn { limit_below_bgap } { 31 } -\um_font_param:n { limit_below_kern } -\um_font_param:nn { limit_below_vgap } { 30 } -\um_font_param:nn { over_delimiter_vgap } { 41 } -\um_font_param:nn { over_delimiter_bgap } { 38 } -\um_font_param:nn { under_delimiter_vgap } { 40 } -\um_font_param:nn { under_delimiter_bgap } { 39 } -\um_font_param:nn { overbar_kern } { 55 } -\um_font_param:nn { overbar_rule } { 54 } -\um_font_param:nn { overbar_vgap } { 53 } -\um_font_param:n { quad } -\um_font_param:nn { radical_kern } { 62 } -\um_font_param:nn { radical_rule } { 61 } -\um_font_param:nnn { radical_vgap } { 60 } { 59 } -\um_font_param:nn { radical_degree_before } { 63 } -\um_font_param:nn { radical_degree_after } { 64 } -\um_font_param:nn { radical_degree_raise } { 65 } -\um_font_param:nn { space_after_script } { 27 } -\um_font_param:nnn { stack_denom_down } { 35 } { 34 } -\um_font_param:nnn { stack_num_up } { 33 } { 32 } -\um_font_param:nnn { stack_vgap } { 37 } { 36 } -\um_font_param:nn { sub_shift_down } { 18 } -\um_font_param:nn { sub_shift_drop } { 20 } -\um_font_param:n { subsup_shift_down } -\um_font_param:nn { sub_top_max } { 19 } -\um_font_param:nn { subsup_vgap } { 25 } -\um_font_param:nn { sup_bottom_min } { 23 } -\um_font_param:nn { sup_shift_drop } { 24 } -\um_font_param:nnnnn { sup_shift_up } { 21 } { 22 } { 21 } { 22 } -\um_font_param:nn { supsub_bottom_max } { 26 } -\um_font_param:nn { underbar_kern } { 58 } -\um_font_param:nn { underbar_rule } { 57 } -\um_font_param:nn { underbar_vgap } { 56 } -\um_font_param:n { connector_overlap_min } -\def\new@mathversion#1{% - \expandafter\in@\expandafter#1\expandafter{\version@list}% - \ifin@ - \@font@info{Redeclaring math version - `\expandafter\@gobblefour\string#1'}% - \else - \expandafter\newcount\csname c@\expandafter - \@gobble\string#1\endcsname - \def\version@elt{\noexpand\version@elt\noexpand}% - \edef\version@list{\version@list\version@elt#1}% - \fi - \toks@{}% - \count@\z@ - \def\group@elt##1##2{% - \advance\count@\@ne - \addto@hook\toks@{\getanddefine@fonts##1##2}% - }% - \group@list - \global\csname c@\expandafter\@gobble\string#1\endcsname\count@ - \def\alpha@elt##1##2##3{% - \ifx##2\no@alphabet@error - \toks@\expandafter{\the\toks@\install@mathalphabet##1% - {\no@alphabet@error##1}}% - \else - \toks@\expandafter{\the\toks@\install@mathalphabet##1% - {\select@group##1##2##3}}% - \fi - }% - \alpha@list - \xdef#1{\the\toks@}% -} +\cs_generate_variant:Nn \__um_font_param_aux:NNnnnn { cc } +\__um_font_param:nn { axis } { 15 } +\__um_font_param:nn { operator_size } { 13 } +\__um_font_param:n { fraction_del_size } +\__um_font_param:nnn { fraction_denom_down } { 45 } { 44 } +\__um_font_param:nnn { fraction_denom_vgap } { 50 } { 49 } +\__um_font_param:nnn { fraction_num_up } { 43 } { 42 } +\__um_font_param:nnn { fraction_num_vgap } { 47 } { 46 } +\__um_font_param:nn { fraction_rule } { 48 } +\__um_font_param:nn { limit_above_bgap } { 29 } +\__um_font_param:n { limit_above_kern } +\__um_font_param:nn { limit_above_vgap } { 28 } +\__um_font_param:nn { limit_below_bgap } { 31 } +\__um_font_param:n { limit_below_kern } +\__um_font_param:nn { limit_below_vgap } { 30 } +\__um_font_param:nn { over_delimiter_vgap } { 41 } +\__um_font_param:nn { over_delimiter_bgap } { 38 } +\__um_font_param:nn { under_delimiter_vgap } { 40 } +\__um_font_param:nn { under_delimiter_bgap } { 39 } +\__um_font_param:nn { overbar_kern } { 55 } +\__um_font_param:nn { overbar_rule } { 54 } +\__um_font_param:nn { overbar_vgap } { 53 } +\__um_font_param:n { quad } +\__um_font_param:nn { radical_kern } { 62 } +\__um_font_param:nn { radical_rule } { 61 } +\__um_font_param:nnn { radical_vgap } { 60 } { 59 } +\__um_font_param:nn { radical_degree_before } { 63 } +\__um_font_param:nn { radical_degree_after } { 64 } +\__um_font_param:nn { radical_degree_raise } { 65 } +\__um_font_param:nn { space_after_script } { 27 } +\__um_font_param:nnn { stack_denom_down } { 35 } { 34 } +\__um_font_param:nnn { stack_num_up } { 33 } { 32 } +\__um_font_param:nnn { stack_vgap } { 37 } { 36 } +\__um_font_param:nn { sub_shift_down } { 18 } +\__um_font_param:nn { sub_shift_drop } { 20 } +\__um_font_param:n { subsup_shift_down } +\__um_font_param:nn { sub_top_max } { 19 } +\__um_font_param:nn { subsup_vgap } { 25 } +\__um_font_param:nn { sup_bottom_min } { 23 } +\__um_font_param:nn { sup_shift_drop } { 24 } +\__um_font_param:nnnnn { sup_shift_up } { 21 } { 22 } { 21 } { 22 } +\__um_font_param:nn { supsub_bottom_max } { 26 } +\__um_font_param:nn { underbar_kern } { 58 } +\__um_font_param:nn { underbar_rule } { 57 } +\__um_font_param:nn { underbar_vgap } { 56 } +\__um_font_param:n { connector_overlap_min } \keys_define:nn {unicode-math} { version .code:n = { - \tl_set:Nn \l_um_mversion_tl {#1} - \DeclareMathVersion{\l_um_mversion_tl} + \tl_set:Nn \l__um_mversion_tl {#1} + \DeclareMathVersion {\l__um_mversion_tl} } } \keys_define:nn {unicode-math} { - script-features .tl_set:N = \l_um_script_features_tl , - sscript-features .tl_set:N = \l_um_sscript_features_tl , - script-font .tl_set:N = \l_um_script_font_tl , - sscript-font .tl_set:N = \l_um_sscript_font_tl , + script-features .tl_set:N = \l__um_script_features_tl , + sscript-features .tl_set:N = \l__um_sscript_features_tl , + script-font .tl_set:N = \l__um_script_font_tl , + sscript-font .tl_set:N = \l__um_sscript_font_tl , } -\seq_new:N \l_um_mathalph_seq -\seq_new:N \l_um_char_range_seq -\seq_new:N \l_um_mclass_range_seq -\seq_new:N \l_um_cmd_range_seq \keys_define:nn {unicode-math} { - range .code:n = { - \bool_set_false:N \l_um_init_bool - \int_incr:N \g_um_fam_int - \tl_set:Nx \um_symfont_tl {um_fam\int_use:N\g_um_fam_int} - \cs_set_eq:NN \_um_sym:nnn \um_process_symbol_parse:nnn - \cs_set_eq:NN \um_set_mathalphabet_char:Nnn \um_mathmap_parse:Nnn - \cs_set_eq:NN \um_remap_symbol:nnn \um_remap_symbol_parse:nnn - \cs_set_eq:NN \um_maybe_init_alphabet:n \use_none:n - \cs_set_eq:NN \um_map_char_single:nn \um_map_char_parse:nn - \cs_set_eq:NN \um_assign_delcode:nn \um_assign_delcode_parse:nn - \cs_set_eq:NN \um_make_mathactive:nNN \um_make_mathactive_parse:nNN - \seq_clear:N \l_um_char_range_seq - \seq_clear:N \l_um_mclass_range_seq - \seq_clear:N \l_um_cmd_range_seq - \seq_clear:N \l_um_mathalph_seq - \clist_map_inline:nn {#1} { - \um_if_mathalph_decl:nTF {##1} { - \seq_put_right:Nx \l_um_mathalph_seq { - { \exp_not:V \l_um_tmpa_tl } - { \exp_not:V \l_um_tmpb_tl } - { \exp_not:V \l_um_tmpc_tl } - } - }{ - \seq_if_in:NnTF \g_um_mathclasses_seq {##1} - { \seq_put_right:Nn \l_um_mclass_range_seq {##1} } + range .code:n = + { + \bool_set_false:N \l__um_init_bool + \int_incr:N \g__um_fam_int + \tl_set:Nx \__um_symfont_tl {__um_fam\int_use:N\g__um_fam_int} + \cs_set_eq:NN \__um_sym:nnn \__um_process_symbol_parse:nnn + \cs_set_eq:NN \__um_set_mathalphabet_char:Nnn \__um_mathmap_parse:Nnn + \cs_set_eq:NN \__um_remap_symbol:nnn \__um_remap_symbol_parse:nnn + \cs_set_eq:NN \__um_maybe_init_alphabet:n \use_none:n + \cs_set_eq:NN \__um_map_char_single:nn \__um_map_char_parse:nn + \cs_set_eq:NN \__um_assign_delcode:nn \__um_assign_delcode_parse:nn + \cs_set_eq:NN \__um_make_mathactive:nNN \__um_make_mathactive_parse:nNN + \seq_clear:N \l__um_char_range_seq + \seq_clear:N \l__um_mclass_range_seq + \seq_clear:N \l__um_cmd_range_seq + \seq_clear:N \l__um_mathalph_seq + + \clist_map_inline:nn {#1} + { + \__um_if_mathalph_decl:nTF {##1} + { + \seq_put_right:Nx \l__um_mathalph_seq + { + { \exp_not:V \l__um_tmpa_tl } + { \exp_not:V \l__um_tmpb_tl } + { \exp_not:V \l__um_tmpc_tl } + } + } + { + \seq_if_in:NnTF \g__um_mathclasses_seq {##1} + { \seq_put_right:Nn \l__um_mclass_range_seq {##1} } { \bool_if:nTF { \tl_if_single_p:n {##1} && \token_if_cs_p:N ##1 } - { \seq_put_right:Nn \l_um_cmd_range_seq {##1} } - { \seq_put_right:Nn \l_um_char_range_seq {##1} } + { \seq_put_right:Nn \l__um_cmd_range_seq {##1} } + { \seq_put_right:Nn \l__um_char_range_seq {##1} } } - } - } - } + } + } + } } -\seq_new:N \g_um_mathclasses_seq -\seq_set_from_clist:Nn \g_um_mathclasses_seq - { - \mathord,\mathalpha,\mathop,\mathbin,\mathrel, - \mathopen,\mathclose,\mathpunct,\mathaccent, - \mathfence,\mathover,\mathunder,\mathbotaccent - } -\prg_new_conditional:Nnn \um_if_mathalph_decl:n {TF} { - \tl_set:Nx \l_um_tmpa_tl { \tl_trim_spaces:n {#1} } - \tl_clear:N \l_um_tmpb_tl - \tl_clear:N \l_um_tmpc_tl - \tl_if_in:NnT \l_um_tmpa_tl {->} { - \exp_after:wN \um_split_arrow:w \l_um_tmpa_tl \q_nil - } - \tl_if_in:NnT \l_um_tmpa_tl {/} { - \exp_after:wN \um_split_slash:w \l_um_tmpa_tl \q_nil - } - \tl_if_empty:NT \l_um_tmpc_tl { \tl_set_eq:NN \l_um_tmpc_tl \l_um_tmpa_tl } - \seq_if_in:NVTF \g_um_mathstyles_seq \l_um_tmpa_tl { - \prg_return_true: - }{ - \prg_return_false: - } -} -\cs_set:Npn \um_split_arrow:w #1->#2 \q_nil { - \tl_set:Nn \l_um_tmpa_tl {#1} - \tl_if_single:nTF {#2} - { \tl_set:Nn \l_um_tmpc_tl {#2} } - { \exp_args:NNc \tl_set:Nn \l_um_tmpc_tl {math#2} } -} -\cs_set:Npn \um_split_slash:w #1/#2 \q_nil { - \tl_set:Nn \l_um_tmpa_tl {#1} - \tl_set:Nn \l_um_tmpb_tl {#2} -} -\cs_new:Nn \um_if_char_spec:nNNT - { +\prg_new_conditional:Nnn \__um_if_mathalph_decl:n {TF} + { + \tl_set:Nn \l__um_tmpa_tl {#1} + \tl_clear:N \l__um_tmpb_tl + \tl_clear:N \l__um_tmpc_tl + + \tl_if_in:NnT \l__um_tmpa_tl {->} + { \exp_after:wN \__um_split_arrow:w \l__um_tmpa_tl \q_nil } + \tl_if_in:NnT \l__um_tmpa_tl {/} + { \exp_after:wN \__um_split_slash:w \l__um_tmpa_tl \q_nil } + + \tl_set:Nx \l__um_tmpa_tl { \tl_to_str:N \l__um_tmpa_tl } + \exp_args:NNx \tl_remove_all:Nn \l__um_tmpa_tl { \token_to_str:N \math } + \exp_args:NNx \tl_remove_all:Nn \l__um_tmpa_tl { \token_to_str:N \sym } + \tl_trim_spaces:N \l__um_tmpa_tl + + \tl_if_empty:NT \l__um_tmpc_tl + { \tl_set_eq:NN \l__um_tmpc_tl \l__um_tmpa_tl } + + \seq_if_in:NVTF \g__um_named_ranges_seq \l__um_tmpa_tl + { \prg_return_true: } { \prg_return_false: } + } +\cs_set:Npn \__um_split_arrow:w #1->#2 \q_nil + { + \tl_set:Nx \l__um_tmpa_tl { \tl_trim_spaces:n {#1} } + \tl_set:Nx \l__um_tmpc_tl { \tl_trim_spaces:n {#2} } + } +\cs_set:Npn \__um_split_slash:w #1/#2 \q_nil + { + \tl_set:Nx \l__um_tmpa_tl { \tl_trim_spaces:n {#1} } + \tl_set:Nx \l__um_tmpb_tl { \tl_trim_spaces:n {#2} } + } +\cs_new:Nn \__um_if_char_spec:nNNT + { % math class: - \seq_if_in:NnT \l_um_mclass_range_seq {#3} + \seq_if_in:NnT \l__um_mclass_range_seq {#3} { \use_none_delimit_by_q_nil:w } % command name: - \seq_if_in:NnT \l_um_cmd_range_seq {#2} + \seq_if_in:NnT \l__um_cmd_range_seq {#2} { \use_none_delimit_by_q_nil:w } % character slot: - \seq_map_inline:Nn \l_um_char_range_seq + \seq_map_inline:Nn \l__um_char_range_seq { - \um_int_if_slot_in_range:nnT {#1} {##1} + \__um_int_if_slot_in_range:nnT {#1} {##1} { \seq_map_break:n { \use_none_delimit_by_q_nil:w } } } - % this executes if no match was found: + % the following expands to nil if no match was found: \use_none:nnn \q_nil \use:n { - \clist_put_right:Nx \l_um_char_num_range_clist { \int_eval:n {#1} } + \clist_put_right:Nx \l__um_char_nrange_clist { \int_eval:n {#1} } #4 } } -\cs_new:Nn \um_int_if_slot_in_range:nnT - { \um_numrange_parse:nwT {#1} #2 - \q_nil - \q_stop {#3} } -\cs_set:Npn \um_numrange_parse:nwT #1 #2 - #3 - #4 \q_stop #5 +\cs_new:Nn \__um_int_if_slot_in_range:nnT + { \__um_numrange_parse:nwT {#1} #2 - \q_nil - \q_stop {#3} } +\cs_set:Npn \__um_numrange_parse:nwT #1 #2 - #3 - #4 \q_stop #5 { \tl_if_empty:nTF {#4} { \int_compare:nT {#1=#2} {#5} } { @@ -902,1185 +768,427 @@ \int_compare:nT {#1>=#2} { \int_compare:nT {#1<=#3} {#5} } } } } } -\AtBeginDocument{\um_resolve_greek:} -\cs_new:Npn \um_resolve_greek: { - \clist_map_inline:nn { +\AtBeginDocument{\__um_resolve_greek:} +\cs_new:Npn \__um_resolve_greek: + { + \clist_map_inline:nn + { Alpha,Beta,Gamma,Delta,Epsilon,Zeta,Eta,Theta,Iota,Kappa,Lambda, alpha,beta,gamma,delta, zeta,eta,theta,iota,kappa,lambda, Mu,Nu,Xi,Omicron,Pi,Rho,Sigma,Tau,Upsilon,Phi,Chi,Psi,Omega, mu,nu,xi,omicron,pi,rho,sigma,tau,upsilon, chi,psi,omega, varTheta, varsigma,vartheta,varkappa,varrho,varpi - }{ + } + { \tl_set:cx {##1} { \exp_not:c { mit ##1 } } - } - \tl_set:Nn \epsilon { - \bool_if:NTF \g_um_texgreek_bool \mitvarepsilon \mitepsilon - } - \tl_set:Nn \phi { - \bool_if:NTF \g_um_texgreek_bool \mitvarphi \mitphi - } - \tl_set:Nn \varepsilon { - \bool_if:NTF \g_um_texgreek_bool \mitepsilon \mitvarepsilon - } - \tl_set:Nn \varphi { - \bool_if:NTF \g_um_texgreek_bool \mitphi \mitvarphi - } -} -\cs_new:Nn \um_new_mathstyle:N - { - \um_prepare_mathstyle:f {\exp_after:wN \use_none:nnnnn \token_to_str:N #1} - \seq_put_right:Nn \g_um_mathstyles_seq {#1} - } -\seq_new:N \g_um_default_mathalph_seq -\seq_new:N \g_um_mathstyles_seq -\AtEndOfPackage - { -\clist_map_inline:nn - { - {\mathup } {latin,Latin,greek,Greek,num,misc} {\mathup } , - {\mathit } {latin,Latin,greek,Greek,misc} {\mathit } , - {\mathbb } {latin,Latin,num,misc} {\mathbb } , - {\mathbbit } {misc} {\mathbbit } , - {\mathscr } {latin,Latin} {\mathscr } , - {\mathcal } {Latin} {\mathscr } , - {\mathbfcal } {Latin} {\mathbfscr } , - {\mathfrak } {latin,Latin} {\mathfrak } , - {\mathtt } {latin,Latin,num} {\mathtt } , - {\mathsfup } {latin,Latin,num} {\mathsfup } , - {\mathsfit } {latin,Latin} {\mathsfit } , - {\mathbfup } {latin,Latin,greek,Greek,num,misc} {\mathbfup } , - {\mathbfit } {latin,Latin,greek,Greek,misc} {\mathbfit } , - {\mathbfscr } {latin,Latin} {\mathbfscr } , - {\mathbffrak} {latin,Latin} {\mathbffrak} , - {\mathbfsfup} {latin,Latin,greek,Greek,num,misc} {\mathbfsfup} , - {\mathbfsfit} {latin,Latin,greek,Greek,misc} {\mathbfsfit} - } - { - \seq_put_right:Nn \g_um_default_mathalph_seq {#1} - \exp_after:wN \um_new_mathstyle:N \use_i:nnn #1 - } - \um_new_mathstyle:N \mathsf - \um_new_mathstyle:N \mathbf - \um_new_mathstyle:N \mathbfsf + \tl_set:cx {up ##1} { \exp_not:N \symup \exp_not:c { ##1 } } + \tl_set:cx {it ##1} { \exp_not:N \symit \exp_not:c { ##1 } } + } + \tl_set:Nn \epsilon + { \bool_if:NTF \g__um_texgreek_bool \mitvarepsilon \mitepsilon } + \tl_set:Nn \phi + { \bool_if:NTF \g__um_texgreek_bool \mitvarphi \mitphi } + \tl_set:Nn \varepsilon + { \bool_if:NTF \g__um_texgreek_bool \mitepsilon \mitvarepsilon } + \tl_set:Nn \varphi + { \bool_if:NTF \g__um_texgreek_bool \mitphi \mitvarphi } } -\cs_new:Nn \um_prepare_mathstyle:n +\cs_set:Npn \use@mathgroup #1 #2 { - \um_init_alphabet:x {#1} - \cs_set:cpn {_um_math#1_aux:n} ##1 + \mode_if_math:T % <- not sure if this is really necessary since we've just checked for mmode and raised an error if not! { - \use:c {um_switchto_math#1:} ##1 \egroup + \math@bgroup + \cs_if_eq:cNF {M@\f@encoding} #1 {#1} + \__um_switchto_literal: + \mathgroup #2 \relax + \math@egroup } - \cs_set_protected:cpx {math#1} + } +\cs_new:Nn \__um_prepare_mathstyle:n + { + \seq_put_right:Nn \g__um_mathstyles_seq {#1} + \__um_init_alphabet:n {#1} + \cs_set:cpn {__um_sym_#1_aux:n} + { \use:c {__um_switchto_#1:} \math@egroup } + \cs_set_protected:cpx {sym#1} { \exp_not:n { - \bgroup + \math@bgroup \mode_if_math:F { \egroup\expandafter - \non@alpherr\expandafter{\csname math#1\endcsname\space} + \non@alpherr\expandafter{\csname sym#1\endcsname\space} } - \tl_set:Nn \l_um_mathstyle_tl {#1} - } - \exp_not:c {_um_math#1_aux:n} - } - } -\tl_new:N \l_um_mathstyle_tl -\cs_generate_variant:Nn \um_prepare_mathstyle:n {f} -\cs_set:Nn \um_init_alphabet:n - { - \um_log:nx {alph-initialise} {#1} - \cs_set_eq:cN {um_switchto_math#1:} \prg_do_nothing: - } -\cs_generate_variant:Nn \um_init_alphabet:n {x} -\cs_new:Npn \um_maybe_init_alphabet:V - { - \exp_args:NV \um_maybe_init_alphabet:n - } -\seq_new:N \l_um_missing_alph_seq -\cs_new:Npn \um_setup_alphabets: - { - \seq_if_empty:NTF \l_um_mathalph_seq { - \um_log:n {setup-implicit} - \seq_set_eq:NN \l_um_mathalph_seq \g_um_default_mathalph_seq - \bool_set_true:N \l_um_implicit_alph_bool - \um_maybe_init_alphabet:n {sf} - \um_maybe_init_alphabet:n {bf} - \um_maybe_init_alphabet:n {bfsf} - } - { - \um_log:n {setup-explicit} - \bool_set_false:N \l_um_implicit_alph_bool - \cs_set_eq:NN \um_set_mathalphabet_char:Nnn \um_mathmap_noparse:Nnn - \cs_set_eq:NN \um_map_char_single:nn \um_map_char_noparse:nn - } - \seq_map_inline:Nn \l_um_mathalph_seq { - \tl_set:No \l_um_tmpa_tl { \use_i:nnn ##1 } - \tl_set:No \l_um_tmpb_tl { \use_ii:nnn ##1 } - \tl_set:No \l_um_remap_style_tl { \use_iii:nnn ##1 } - \tl_set:Nx \l_um_remap_style_tl { - \exp_after:wN \exp_after:wN \exp_after:wN \use_none:nnnnn - \exp_after:wN \token_to_str:N \l_um_remap_style_tl - } - \tl_if_empty:NT \l_um_tmpb_tl { - \cs_set_eq:NN \um_maybe_init_alphabet:n \um_init_alphabet:n - \tl_set:Nn \l_um_tmpb_tl { latin,Latin,greek,Greek,num,misc } - } - \um_setup_math_alphabet:VVV - \l_um_tmpa_tl \l_um_tmpb_tl \l_um_remap_style_tl - } - \seq_if_empty:NF \l_um_missing_alph_seq { \um_log:n { missing-alphabets } } - } -\cs_new:Nn \um_setup_math_alphabet:Nnn - { - \tl_set:Nx \l_um_style_tl - { - \exp_after:wN \use_none:nnnnn \token_to_str:N #1 - } - \clist_map_inline:nn {#2} - { - \tl_set:Nx \l_um_tmpa_tl { \tl_trim_spaces:n {##1} } - \cs_if_exist:cT {um_config_ \l_um_style_tl _\l_um_tmpa_tl :n} - { - \str_if_eq_x:nnTF {\l_um_tmpa_tl}{misc} - { - \um_maybe_init_alphabet:V \l_um_style_tl - \clist_map_break: - } - { - \um_glyph_if_exist:cT { \um_to_usv:nn {#3}{\l_um_tmpa_tl} } - { - \um_maybe_init_alphabet:V \l_um_style_tl - \clist_map_break: - } - } - } - } - \clist_map_inline:nn {#2} - { - \tl_set:Nx \l_um_tmpa_tl { \tl_trim_spaces:n {##1} } - \cs_if_exist:cT {um_config_ \l_um_style_tl _ \l_um_tmpa_tl :n} - { - \str_if_eq_x:nnTF {\l_um_tmpa_tl}{misc} - { - \um_log:nx {setup-alph} {math \l_um_style_tl~(\l_um_tmpa_tl)} - \use:c {um_config_ \l_um_style_tl _ \l_um_tmpa_tl :n} {#3} - } - { - \um_glyph_if_exist:cTF { \um_to_usv:nn {#3}{\l_um_tmpa_tl} } - { - \um_log:nx {setup-alph} {math \l_um_style_tl~(\l_um_tmpa_tl)} - \use:c {um_config_ \l_um_style_tl _ \l_um_tmpa_tl :n} {#3} - } - { - \bool_if:NTF \l_um_implicit_alph_bool - { - \seq_put_right:Nx \l_um_missing_alph_seq - { - \@backslashchar math \l_um_style_tl \space - (\tl_use:c{c_um_math_alphabet_name_ \l_um_tmpa_tl _tl}) - } - } - { - \use:c {um_config_ \l_um_style_tl _ \l_um_tmpa_tl :n} {up} - } - } - } - } - } - } -\cs_generate_variant:Nn \um_setup_math_alphabet:Nnn {VVV} -\cs_new:Npn \um_map_char_single:cc { \exp_args:Ncc \um_map_char_single:nn } -\cs_new:Nn \um_map_char_noparse:nn - { - \um_set_mathcode:nnnn {#1}{\mathalpha}{\um_symfont_tl}{#2} - } -\cs_new:Nn \um_map_char_parse:nn - { - \um_if_char_spec:nNNT {#1} {\@nil} {\mathalpha} - { - \um_map_char_noparse:nn {#1}{#2} - } - } -\cs_new:Nn \um_map_char_single:nnn - { - \um_map_char_single:cc { \um_to_usv:nn {#1}{#3} } - { \um_to_usv:nn {#2}{#3} } - } -\cs_set:Nn \um_map_single:nnn - { - \cs_if_exist:cT { \um_to_usv:nn {#3} {#1} } - { - \clist_map_inline:nn {#2} - { - \um_map_char_single:nnn {##1} {#3} {#1} - } - } - } -\cs_set:Nn \um_map_chars_range:nnn - { - \int_step_inline:nnnn {0}{1}{#1-1} { - \um_map_char_single:nn {#2+##1}{#3+##1} - } - } -\cs_generate_variant:Nn \um_map_chars_range:nnn {ncc} -\cs_new:Nn \um_map_chars_range:nnnn - { - \um_map_chars_range:ncc {#1} { \um_to_usv:nn {#2}{#4} } - { \um_to_usv:nn {#3}{#4} } - } -\cs_new:Nn \um_map_chars_Latin:nn - { - \clist_map_inline:nn {#1} - { - \um_map_chars_range:nnnn {26} {##1} {#2} {Latin} - } - } -\cs_new:Nn \um_map_chars_latin:nn - { - \clist_map_inline:nn {#1} - { - \um_map_chars_range:nnnn {26} {##1} {#2} {latin} - } - } -\cs_new:Nn \um_map_chars_greek:nn - { - \clist_map_inline:nn {#1} - { - \um_map_chars_range:nnnn {25} {##1} {#2} {greek} - \um_map_char_single:nnn {##1} {#2} {varepsilon} - \um_map_char_single:nnn {##1} {#2} {vartheta} - \um_map_char_single:nnn {##1} {#2} {varkappa} - \um_map_char_single:nnn {##1} {#2} {varphi} - \um_map_char_single:nnn {##1} {#2} {varrho} - \um_map_char_single:nnn {##1} {#2} {varpi} - } - } -\cs_new:Nn \um_map_chars_Greek:nn - { - \clist_map_inline:nn {#1} - { - \um_map_chars_range:nnnn {25} {##1} {#2} {Greek} - \um_map_char_single:nnn {##1} {#2} {varTheta} - } - } -\cs_new:Nn \um_map_chars_numbers:nn - { - \um_map_chars_range:nnnn {10} {#1} {#2} {num} - } -\cs_new:Npn \um_set_mathalphabet_char:Ncc - { - \exp_args:NNcc \um_set_mathalphabet_char:Nnn - } -\cs_new:Nn \um_mathmap_noparse:Nnn - { - \clist_map_inline:nn {#2} - { - \tl_put_right:cx {um_switchto_\cs_to_str:N #1:} - { - \um_set_mathcode:nnnn{##1}{\mathalpha}{\um_symfont_tl}{#3} - } - } - } -\cs_new:Nn \um_mathmap_parse:Nnn - { - \clist_if_in:NnT \l_um_char_num_range_clist {#3} - { - \um_mathmap_noparse:Nnn {#1}{#2}{#3} - } - } -\cs_new:Nn \um_set_mathalphabet_char:Nnnn - { - \um_set_mathalphabet_char:Ncc #1 { \um_to_usv:nn {#2} {#4} } - { \um_to_usv:nn {#3} {#4} } - } -\cs_new:Nn \um_set_mathalph_range:nNnn - { - \int_step_inline:nnnn {0}{1}{#1-1} - { \um_set_mathalphabet_char:Nnn {#2} { ##1 + #3 } { ##1 + #4 } } - } -\cs_generate_variant:Nn \um_set_mathalph_range:nNnn {nNcc} -\cs_new:Nn \um_set_mathalph_range:nNnnn - { - \um_set_mathalph_range:nNcc {#1} #2 { \um_to_usv:nn {#3} {#5} } - { \um_to_usv:nn {#4} {#5} } - } -\cs_new:Nn \um_set_mathalphabet_pos:Nnnn - { - \cs_if_exist:cT { \um_to_usv:nn {#4}{#2} } - { - \clist_map_inline:nn {#3} - { \um_set_mathalphabet_char:Nnnn #1 {##1} {#4} {#2} } - } - } -\cs_new:Nn \um_set_mathalphabet_numbers:Nnn - { - \clist_map_inline:nn {#2} - { \um_set_mathalph_range:nNnnn {10} #1 {##1} {#3} {num} } - } -\cs_new:Nn \um_set_mathalphabet_Latin:Nnn - { - \clist_map_inline:nn {#2} - { \um_set_mathalph_range:nNnnn {26} #1 {##1} {#3} {Latin} } - } -\cs_new:Nn \um_set_mathalphabet_latin:Nnn - { - \clist_map_inline:nn {#2} - { - \um_set_mathalph_range:nNnnn {26} #1 {##1} {#3} {latin} - \um_set_mathalphabet_char:Nnnn #1 {##1} {#3} {h} - } - } -\cs_new:Nn \um_set_mathalphabet_Greek:Nnn - { - \clist_map_inline:nn {#2} - { - \um_set_mathalph_range:nNnnn {25} #1 {##1} {#3} {Greek} - \um_set_mathalphabet_char:Nnnn #1 {##1} {#3} {varTheta} - } - } -\cs_new:Nn \um_set_mathalphabet_greek:Nnn - { - \clist_map_inline:nn {#2} - { - \um_set_mathalph_range:nNnnn {25} #1 {##1} {#3} {greek} - \um_set_mathalphabet_char:Nnnn #1 {##1} {#3} {varepsilon} - \um_set_mathalphabet_char:Nnnn #1 {##1} {#3} {vartheta} - \um_set_mathalphabet_char:Nnnn #1 {##1} {#3} {varkappa} - \um_set_mathalphabet_char:Nnnn #1 {##1} {#3} {varphi} - \um_set_mathalphabet_char:Nnnn #1 {##1} {#3} {varrho} - \um_set_mathalphabet_char:Nnnn #1 {##1} {#3} {varpi} - } - } -\cs_new:Nn \um_config_up_num:n - { - \um_map_chars_numbers:nn {up}{#1} - \um_set_mathalphabet_numbers:Nnn \mathup {up}{#1} - } - -\cs_new:Nn \um_config_up_Latin:n - { - \bool_if:NTF \g_um_literal_bool { \um_map_chars_Latin:nn {up} {#1} } - { - \bool_if:NT \g_um_upLatin_bool { \um_map_chars_Latin:nn {up,it} {#1} } - } - \um_set_mathalphabet_Latin:Nnn \mathup {up,it} {#1} - } - -\cs_new:Nn \um_config_up_latin:n - { - \bool_if:NTF \g_um_literal_bool { \um_map_chars_latin:nn {up} {#1} } - { - \bool_if:NT \g_um_uplatin_bool - { - \um_map_chars_latin:nn {up,it} {#1} - \um_map_single:nnn {h} {up,it} {#1} - \um_map_single:nnn {dotlessi} {up,it} {#1} - \um_map_single:nnn {dotlessj} {up,it} {#1} - } - } - \um_set_mathalphabet_latin:Nnn \mathup {up,it}{#1} - } - -\cs_new:Nn \um_config_up_Greek:n - { - \bool_if:NTF \g_um_literal_bool { \um_map_chars_Greek:nn {up}{#1} } - { - \bool_if:NT \g_um_upGreek_bool { \um_map_chars_Greek:nn {up,it}{#1} } - } - \um_set_mathalphabet_Greek:Nnn \mathup {up,it}{#1} - } - -\cs_new:Nn \um_config_up_greek:n - { - \bool_if:NTF \g_um_literal_bool { \um_map_chars_greek:nn {up} {#1} } - { - \bool_if:NT \g_um_upgreek_bool - { - \um_map_chars_greek:nn {up,it} {#1} - } - } - \um_set_mathalphabet_greek:Nnn \mathup {up,it} {#1} - } - -\cs_new:Nn \um_config_up_misc:n - { - \bool_if:NTF \g_um_literal_Nabla_bool - { - \um_map_single:nnn {Nabla}{up}{up} - } - { - \bool_if:NT \g_um_upNabla_bool - { - \um_map_single:nnn {Nabla}{up,it}{up} - } - } - \bool_if:NTF \g_um_literal_partial_bool - { - \um_map_single:nnn {partial}{up}{up} - } - { - \bool_if:NT \g_um_uppartial_bool - { - \um_map_single:nnn {partial}{up,it}{up} - } - } - \um_set_mathalphabet_pos:Nnnn \mathup {partial} {up,it} {#1} - \um_set_mathalphabet_pos:Nnnn \mathup {Nabla} {up,it} {#1} - \um_set_mathalphabet_pos:Nnnn \mathup {dotlessi} {up,it} {#1} - \um_set_mathalphabet_pos:Nnnn \mathup {dotlessj} {up,it} {#1} - } -\cs_new:Nn \um_config_it_Latin:n - { - \bool_if:NTF \g_um_literal_bool { \um_map_chars_Latin:nn {it} {#1} } - { - \bool_if:NF \g_um_upLatin_bool { \um_map_chars_Latin:nn {up,it} {#1} } - } - \um_set_mathalphabet_Latin:Nnn \mathit {up,it}{#1} - } - -\cs_new:Nn \um_config_it_latin:n - { - \bool_if:NTF \g_um_literal_bool - { - \um_map_chars_latin:nn {it} {#1} - \um_map_single:nnn {h}{it}{#1} - } - { - \bool_if:NF \g_um_uplatin_bool - { - \um_map_chars_latin:nn {up,it} {#1} - \um_map_single:nnn {h}{up,it}{#1} - \um_map_single:nnn {dotlessi}{up,it}{#1} - \um_map_single:nnn {dotlessj}{up,it}{#1} - } - } - \um_set_mathalphabet_latin:Nnn \mathit {up,it} {#1} - \um_set_mathalphabet_pos:Nnnn \mathit {dotlessi} {up,it} {#1} - \um_set_mathalphabet_pos:Nnnn \mathit {dotlessj} {up,it} {#1} - } - -\cs_new:Nn \um_config_it_Greek:n - { - \bool_if:NTF \g_um_literal_bool - { - \um_map_chars_Greek:nn {it}{#1} - } - { - \bool_if:NF \g_um_upGreek_bool { \um_map_chars_Greek:nn {up,it}{#1} } - } - \um_set_mathalphabet_Greek:Nnn \mathit {up,it}{#1} - } - -\cs_new:Nn \um_config_it_greek:n - { - \bool_if:NTF \g_um_literal_bool - { - \um_map_chars_greek:nn {it} {#1} - } - { - \bool_if:NF \g_um_upgreek_bool { \um_map_chars_greek:nn {it,up} {#1} } - } - \um_set_mathalphabet_greek:Nnn \mathit {up,it} {#1} - } - -\cs_new:Nn \um_config_it_misc:n - { - \bool_if:NTF \g_um_literal_Nabla_bool - { - \um_map_single:nnn {Nabla}{it}{it} - } - { - \bool_if:NF \g_um_upNabla_bool - { - \um_map_single:nnn {Nabla}{up,it}{it} - } - } - \bool_if:NTF \g_um_literal_partial_bool - { - \um_map_single:nnn {partial}{it}{it} - } - { - \bool_if:NF \g_um_uppartial_bool - { - \um_map_single:nnn {partial}{up,it}{it} - } - } - \um_set_mathalphabet_pos:Nnnn \mathit {partial} {up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathit {Nabla} {up,it}{#1} - } -\cs_new:Nn \um_config_bb_latin:n - { - \um_set_mathalphabet_latin:Nnn \mathbb {up,it}{#1} - } - -\cs_new:Nn \um_config_bb_Latin:n - { - \um_set_mathalphabet_Latin:Nnn \mathbb {up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathbb {C} {up,it} {#1} - \um_set_mathalphabet_pos:Nnnn \mathbb {H} {up,it} {#1} - \um_set_mathalphabet_pos:Nnnn \mathbb {N} {up,it} {#1} - \um_set_mathalphabet_pos:Nnnn \mathbb {P} {up,it} {#1} - \um_set_mathalphabet_pos:Nnnn \mathbb {Q} {up,it} {#1} - \um_set_mathalphabet_pos:Nnnn \mathbb {R} {up,it} {#1} - \um_set_mathalphabet_pos:Nnnn \mathbb {Z} {up,it} {#1} - } - -\cs_new:Nn \um_config_bb_num:n - { - \um_set_mathalphabet_numbers:Nnn \mathbb {up}{#1} - } - -\cs_new:Nn \um_config_bb_misc:n - { - \um_set_mathalphabet_pos:Nnnn \mathbb {Pi} {up,it} {#1} - \um_set_mathalphabet_pos:Nnnn \mathbb {pi} {up,it} {#1} - \um_set_mathalphabet_pos:Nnnn \mathbb {Gamma} {up,it} {#1} - \um_set_mathalphabet_pos:Nnnn \mathbb {gamma} {up,it} {#1} - \um_set_mathalphabet_pos:Nnnn \mathbb {summation} {up} {#1} - } - -\cs_new:Nn \um_config_bbit_misc:n - { - \um_set_mathalphabet_pos:Nnnn \mathbbit {D} {up,it} {#1} - \um_set_mathalphabet_pos:Nnnn \mathbbit {d} {up,it} {#1} - \um_set_mathalphabet_pos:Nnnn \mathbbit {e} {up,it} {#1} - \um_set_mathalphabet_pos:Nnnn \mathbbit {i} {up,it} {#1} - \um_set_mathalphabet_pos:Nnnn \mathbbit {j} {up,it} {#1} - } -\cs_new:Nn \um_config_scr_Latin:n - { - \um_set_mathalphabet_Latin:Nnn \mathscr {up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathscr {B}{up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathscr {E}{up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathscr {F}{up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathscr {H}{up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathscr {I}{up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathscr {L}{up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathscr {M}{up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathscr {R}{up,it}{#1} - } - -\cs_new:Nn \um_config_scr_latin:n - { - \um_set_mathalphabet_latin:Nnn \mathscr {up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathscr {e}{up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathscr {g}{up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathscr {o}{up,it}{#1} - } -\cs_new:Nn \um_config_cal_Latin:n - { - \um_set_mathalphabet_Latin:Nnn \mathcal {up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathcal {B}{up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathcal {E}{up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathcal {F}{up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathcal {H}{up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathcal {I}{up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathcal {L}{up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathcal {M}{up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathcal {R}{up,it}{#1} - } -\cs_new:Nn \um_config_frak_Latin:n - { - \um_set_mathalphabet_Latin:Nnn \mathfrak {up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathfrak {C}{up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathfrak {H}{up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathfrak {I}{up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathfrak {R}{up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathfrak {Z}{up,it}{#1} - } -\cs_new:Nn \um_config_frak_latin:n - { - \um_set_mathalphabet_latin:Nnn \mathfrak {up,it}{#1} - } -\cs_new:Nn \um_config_sfup_num:n - { - \um_set_mathalphabet_numbers:Nnn \mathsf {up}{#1} - \um_set_mathalphabet_numbers:Nnn \mathsfup {up}{#1} - } -\cs_new:Nn \um_config_sfup_Latin:n - { - \bool_if:NTF \g_um_sfliteral_bool - { - \um_map_chars_Latin:nn {sfup} {#1} - \um_set_mathalphabet_Latin:Nnn \mathsf {up}{#1} - } - { - \bool_if:NT \g_um_upsans_bool - { - \um_map_chars_Latin:nn {sfup,sfit} {#1} - \um_set_mathalphabet_Latin:Nnn \mathsf {up,it}{#1} - } - } - \um_set_mathalphabet_Latin:Nnn \mathsfup {up,it}{#1} - } -\cs_new:Nn \um_config_sfup_latin:n - { - \bool_if:NTF \g_um_sfliteral_bool - { - \um_map_chars_latin:nn {sfup} {#1} - \um_set_mathalphabet_latin:Nnn \mathsf {up}{#1} - } - { - \bool_if:NT \g_um_upsans_bool - { - \um_map_chars_latin:nn {sfup,sfit} {#1} - \um_set_mathalphabet_latin:Nnn \mathsf {up,it}{#1} - } - } - \um_set_mathalphabet_latin:Nnn \mathsfup {up,it}{#1} - } -\cs_new:Nn \um_config_sfit_Latin:n - { - \bool_if:NTF \g_um_sfliteral_bool - { - \um_map_chars_Latin:nn {sfit} {#1} - \um_set_mathalphabet_Latin:Nnn \mathsf {it}{#1} - } - { - \bool_if:NF \g_um_upsans_bool - { - \um_map_chars_Latin:nn {sfup,sfit} {#1} - \um_set_mathalphabet_Latin:Nnn \mathsf {up,it}{#1} - } - } - \um_set_mathalphabet_Latin:Nnn \mathsfit {up,it}{#1} - } -\cs_new:Nn \um_config_sfit_latin:n - { - \bool_if:NTF \g_um_sfliteral_bool - { - \um_map_chars_latin:nn {sfit} {#1} - \um_set_mathalphabet_latin:Nnn \mathsf {it}{#1} - } - { - \bool_if:NF \g_um_upsans_bool - { - \um_map_chars_latin:nn {sfup,sfit} {#1} - \um_set_mathalphabet_latin:Nnn \mathsf {up,it}{#1} - } - } - \um_set_mathalphabet_latin:Nnn \mathsfit {up,it}{#1} - } -\cs_new:Nn \um_config_tt_num:n - { - \um_set_mathalphabet_numbers:Nnn \mathtt {up}{#1} - } -\cs_new:Nn \um_config_tt_Latin:n - { - \um_set_mathalphabet_Latin:Nnn \mathtt {up,it}{#1} - } -\cs_new:Nn \um_config_tt_latin:n - { - \um_set_mathalphabet_latin:Nnn \mathtt {up,it}{#1} - } -\cs_new:Nn \um_config_bfit_Latin:n - { - \bool_if:NF \g_um_bfupLatin_bool - { - \um_map_chars_Latin:nn {bfup,bfit} {#1} - } - \um_set_mathalphabet_Latin:Nnn \mathbfit {up,it}{#1} - \bool_if:NTF \g_um_bfliteral_bool - { - \um_map_chars_Latin:nn {bfit} {#1} - \um_set_mathalphabet_Latin:Nnn \mathbf {it}{#1} - } - { - \bool_if:NF \g_um_bfupLatin_bool - { - \um_map_chars_Latin:nn {bfup,bfit} {#1} - \um_set_mathalphabet_Latin:Nnn \mathbf {up,it}{#1} - } - } - } - -\cs_new:Nn \um_config_bfit_latin:n - { - \bool_if:NF \g_um_bfuplatin_bool - { - \um_map_chars_latin:nn {bfup,bfit} {#1} - } - \um_set_mathalphabet_latin:Nnn \mathbfit {up,it}{#1} - \bool_if:NTF \g_um_bfliteral_bool - { - \um_map_chars_latin:nn {bfit} {#1} - \um_set_mathalphabet_latin:Nnn \mathbf {it}{#1} - } - { - \bool_if:NF \g_um_bfuplatin_bool - { - \um_map_chars_latin:nn {bfup,bfit} {#1} - \um_set_mathalphabet_latin:Nnn \mathbf {up,it}{#1} - } - } - } - -\cs_new:Nn \um_config_bfit_Greek:n - { - \um_set_mathalphabet_Greek:Nnn \mathbfit {up,it}{#1} - \bool_if:NTF \g_um_bfliteral_bool - { - \um_map_chars_Greek:nn {bfit}{#1} - \um_set_mathalphabet_Greek:Nnn \mathbf {it}{#1} - } - { - \bool_if:NF \g_um_bfupGreek_bool - { - \um_map_chars_Greek:nn {bfup,bfit}{#1} - \um_set_mathalphabet_Greek:Nnn \mathbf {up,it}{#1} - } - } - } - -\cs_new:Nn \um_config_bfit_greek:n - { - \um_set_mathalphabet_greek:Nnn \mathbfit {up,it} {#1} - \bool_if:NTF \g_um_bfliteral_bool - { - \um_map_chars_greek:nn {bfit} {#1} - \um_set_mathalphabet_greek:Nnn \mathbf {it} {#1} - } - { - \bool_if:NF \g_um_bfupgreek_bool - { - \um_map_chars_greek:nn {bfit,bfup} {#1} - \um_set_mathalphabet_greek:Nnn \mathbf {up,it} {#1} - } - } - } - -\cs_new:Nn \um_config_bfit_misc:n - { - \bool_if:NTF \g_um_literal_Nabla_bool - { \um_map_single:nnn {Nabla}{bfit}{#1} } - { - \bool_if:NF \g_um_upNabla_bool - { \um_map_single:nnn {Nabla}{bfup,bfit}{#1} } - } - \bool_if:NTF \g_um_literal_partial_bool - { \um_map_single:nnn {partial}{bfit}{#1} } - { - \bool_if:NF \g_um_uppartial_bool - { \um_map_single:nnn {partial}{bfup,bfit}{#1} } - } - \um_set_mathalphabet_pos:Nnnn \mathbfit {partial} {up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathbfit {Nabla} {up,it}{#1} - \bool_if:NTF \g_um_literal_partial_bool - { - \um_set_mathalphabet_pos:Nnnn \mathbf {partial} {it}{#1} - } - { - \bool_if:NF \g_um_uppartial_bool - { - \um_set_mathalphabet_pos:Nnnn \mathbf {partial} {up,it}{#1} - } - } - \bool_if:NTF \g_um_literal_Nabla_bool - { - \um_set_mathalphabet_pos:Nnnn \mathbf {Nabla} {it}{#1} - } - { - \bool_if:NF \g_um_upNabla_bool - { - \um_set_mathalphabet_pos:Nnnn \mathbf {Nabla} {up,it}{#1} - } - } - } -\cs_new:Nn \um_config_bfup_num:n - { - \um_set_mathalphabet_numbers:Nnn \mathbf {up}{#1} - \um_set_mathalphabet_numbers:Nnn \mathbfup {up}{#1} - } - -\cs_new:Nn \um_config_bfup_Latin:n - { - \bool_if:NT \g_um_bfupLatin_bool - { - \um_map_chars_Latin:nn {bfup,bfit} {#1} - } - \um_set_mathalphabet_Latin:Nnn \mathbfup {up,it}{#1} - \bool_if:NTF \g_um_bfliteral_bool - { - \um_map_chars_Latin:nn {bfup} {#1} - \um_set_mathalphabet_Latin:Nnn \mathbf {up}{#1} - } - { - \bool_if:NT \g_um_bfupLatin_bool - { - \um_map_chars_Latin:nn {bfup,bfit} {#1} - \um_set_mathalphabet_Latin:Nnn \mathbf {up,it}{#1} - } - } - } - -\cs_new:Nn \um_config_bfup_latin:n - { - \bool_if:NT \g_um_bfuplatin_bool - { - \um_map_chars_latin:nn {bfup,bfit} {#1} - } - \um_set_mathalphabet_latin:Nnn \mathbfup {up,it}{#1} - \bool_if:NTF \g_um_bfliteral_bool - { - \um_map_chars_latin:nn {bfup} {#1} - \um_set_mathalphabet_latin:Nnn \mathbf {up}{#1} - } - { - \bool_if:NT \g_um_bfuplatin_bool - { - \um_map_chars_latin:nn {bfup,bfit} {#1} - \um_set_mathalphabet_latin:Nnn \mathbf {up,it}{#1} - } - } - } -\cs_new:Nn \um_config_bfup_Greek:n - { - \um_set_mathalphabet_Greek:Nnn \mathbfup {up,it}{#1} - \bool_if:NTF \g_um_bfliteral_bool - { - \um_map_chars_Greek:nn {bfup}{#1} - \um_set_mathalphabet_Greek:Nnn \mathbf {up}{#1} - } - { - \bool_if:NT \g_um_bfupGreek_bool - { - \um_map_chars_Greek:nn {bfup,bfit}{#1} - \um_set_mathalphabet_Greek:Nnn \mathbf {up,it}{#1} - } - } - } - -\cs_new:Nn \um_config_bfup_greek:n - { - \um_set_mathalphabet_greek:Nnn \mathbfup {up,it} {#1} - \bool_if:NTF \g_um_bfliteral_bool - { - \um_map_chars_greek:nn {bfup} {#1} - \um_set_mathalphabet_greek:Nnn \mathbf {up} {#1} - } - { - \bool_if:NT \g_um_bfupgreek_bool - { - \um_map_chars_greek:nn {bfup,bfit} {#1} - \um_set_mathalphabet_greek:Nnn \mathbf {up,it} {#1} - } - } - } - -\cs_new:Nn \um_config_bfup_misc:n - { - \bool_if:NTF \g_um_literal_Nabla_bool - { - \um_map_single:nnn {Nabla}{bfup}{#1} - } - { - \bool_if:NT \g_um_upNabla_bool - { - \um_map_single:nnn {Nabla}{bfup,bfit}{#1} - } - } - \bool_if:NTF \g_um_literal_partial_bool - { - \um_map_single:nnn {partial}{bfup}{#1} - } - { - \bool_if:NT \g_um_uppartial_bool - { - \um_map_single:nnn {partial}{bfup,bfit}{#1} - } - } - \um_set_mathalphabet_pos:Nnnn \mathbfup {partial} {up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathbfup {Nabla} {up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathbfup {digamma} {up}{#1} - \um_set_mathalphabet_pos:Nnnn \mathbfup {Digamma} {up}{#1} - \um_set_mathalphabet_pos:Nnnn \mathbf {digamma} {up}{#1} - \um_set_mathalphabet_pos:Nnnn \mathbf {Digamma} {up}{#1} - \bool_if:NTF \g_um_literal_partial_bool - { - \um_set_mathalphabet_pos:Nnnn \mathbf {partial} {up}{#1} - } - { - \bool_if:NT \g_um_uppartial_bool - { - \um_set_mathalphabet_pos:Nnnn \mathbf {partial} {up,it}{#1} - } - } - \bool_if:NTF \g_um_literal_Nabla_bool - { - \um_set_mathalphabet_pos:Nnnn \mathbf {Nabla} {up}{#1} - } - { - \bool_if:NT \g_um_upNabla_bool - { - \um_set_mathalphabet_pos:Nnnn \mathbf {Nabla} {up,it}{#1} + \tl_set:Nn \l__um_mathstyle_tl {#1} } + \exp_not:c {__um_sym_#1_aux:n} } } -\cs_new:Nn \um_config_bffrak_Latin:n +\cs_set:Nn \__um_init_alphabet:n { - \um_set_mathalphabet_Latin:Nnn \mathbffrak {up,it}{#1} + \__um_log:nx {alph-initialise} {#1} + \cs_set_eq:cN {__um_switchto_#1:} \prg_do_nothing: } - -\cs_new:Nn \um_config_bffrak_latin:n +\cs_new:Nn \__um_new_named_range:n { - \um_set_mathalphabet_latin:Nnn \mathbffrak {up,it}{#1} + \prop_new:c {g__um_named_range_#1_prop} } -\cs_new:Nn \um_config_bfscr_Latin:n +\clist_set:Nn \g__um_named_ranges_clist { - \um_set_mathalphabet_Latin:Nnn \mathbfscr {up,it}{#1} + up, it, tt, bfup, bfit, bb , bbit, scr, bfscr, cal, bfcal, + frak, bffrak, sfup, sfit, bfsfup, bfsfit, bfsf } -\cs_new:Nn \um_config_bfscr_latin:n +\clist_map_inline:Nn \g__um_named_ranges_clist + { \__um_new_named_range:n {#1} } +\clist_new:N \g__um_alphabets_seq +\clist_set:Nn \g__um_alphabets_seq { latin, Latin, greek, Greek, num } +\cs_new:Nn \__um_new_alphabet_config:nnn { - \um_set_mathalphabet_latin:Nnn \mathbfscr {up,it}{#1} - } -\cs_new:Nn \um_config_bfcal_Latin:n + \prop_if_exist:cF {g__um_named_range_#1_prop} + { \__um_warning:nnn {no-named-range} {#1} {#2} } + + \prop_gput:cnn {g__um_named_range_#1_prop} { alpha_tl } + { + \prop_item:cn {g__um_named_range_#1_prop} { alpha_tl } + {#2} + } + % Q: do I need to bother removing duplicates? + + \cs_new:cn { __um_config_#1_#2:n } {#3} + } +\cs_new:Nn \__um_alphabet_config:nnn { \use:c {__um_config_#1_#2:n} {#3} } +\prg_new_conditional:Nnn \__um_if_alphabet_exists:nn {T,TF} + { + \cs_if_exist:cTF {__um_config_#1_#2:n} + \prg_return_true: \prg_return_false: + } +\cs_new:Nn \__um_default_mathalph:nnn + { + \seq_put_right:Nx \g__um_named_ranges_seq { \tl_to_str:n {#1} } + \seq_put_right:Nn \g__um_default_mathalph_seq {{#1}{#2}{#3}} + } +\__um_default_mathalph:nnn {up } {latin,Latin,greek,Greek,num,misc} {up } +\__um_default_mathalph:nnn {it } {latin,Latin,greek,Greek,misc} {it } +\__um_default_mathalph:nnn {bb } {latin,Latin,num,misc} {bb } +\__um_default_mathalph:nnn {bbit } {misc} {bbit } +\__um_default_mathalph:nnn {scr } {latin,Latin} {scr } +\__um_default_mathalph:nnn {cal } {Latin} {scr } +\__um_default_mathalph:nnn {bfcal } {Latin} {bfscr } +\__um_default_mathalph:nnn {frak } {latin,Latin} {frak } +\__um_default_mathalph:nnn {tt } {latin,Latin,num} {tt } +\__um_default_mathalph:nnn {sfup } {latin,Latin,num} {sfup } +\__um_default_mathalph:nnn {sfit } {latin,Latin} {sfit } +\__um_default_mathalph:nnn {bfup } {latin,Latin,greek,Greek,num,misc} {bfup } +\__um_default_mathalph:nnn {bfit } {latin,Latin,greek,Greek,misc} {bfit } +\__um_default_mathalph:nnn {bfscr } {latin,Latin} {bfscr } +\__um_default_mathalph:nnn {bffrak} {latin,Latin} {bffrak} +\__um_default_mathalph:nnn {bfsfup} {latin,Latin,greek,Greek,num,misc} {bfsfup} +\__um_default_mathalph:nnn {bfsfit} {latin,Latin,greek,Greek,misc} {bfsfit} +\clist_map_inline:nn { - \um_set_mathalphabet_Latin:Nnn \mathbfcal {up,it}{#1} + up, it, bfup, bfit, sfup, sfit, bfsfup, bfsfit, bfsf, + tt, bb, bbit, scr, bfscr, cal, bfcal, frak, bffrak, + normal, literal, sf, bf, } -\cs_new:Nn \um_config_bfsfup_num:n + { \__um_prepare_mathstyle:n {#1} } +\clist_map_inline:nn + { rm, it, bf, sf, tt } + { \cs_set_eq:cc { mathtext #1 } { math #1 } } +\clist_map_inline:nn { - \um_set_mathalphabet_numbers:Nnn \mathbfsf {up}{#1} - \um_set_mathalphabet_numbers:Nnn \mathbfsfup {up}{#1} + normal, bb , bbit, scr, bfscr, cal, bfcal, frak, bffrak, tt, + bfup, bfit, sfup, sfit, bfsfup, bfsfit, bfsf } -\cs_new:Nn \um_config_bfsfup_Latin:n { - \bool_if:NTF \g_um_sfliteral_bool - { - \um_map_chars_Latin:nn {bfsfup} {#1} - \um_set_mathalphabet_Latin:Nnn \mathbfsf {up}{#1} - } - { - \bool_if:NT \g_um_upsans_bool - { - \um_map_chars_Latin:nn {bfsfup,bfsfit} {#1} - \um_set_mathalphabet_Latin:Nnn \mathbfsf {up,it}{#1} - } - } - \um_set_mathalphabet_Latin:Nnn \mathbfsfup {up,it}{#1} + \cs_set:cpx { math #1 } { \exp_not:c { sym #1 } } } - -\cs_new:Nn \um_config_bfsfup_latin:n +\AtBeginDocument{ +\clist_map_inline:nn + { rm, it, bf, sf, tt } { - \bool_if:NTF \g_um_sfliteral_bool - { - \um_map_chars_latin:nn {bfsfup} {#1} - \um_set_mathalphabet_latin:Nnn \mathbfsf {up}{#1} - } + \cs_set_protected:cpx { math #1 } { - \bool_if:NT \g_um_upsans_bool - { - \um_map_chars_latin:nn {bfsfup,bfsfit} {#1} - \um_set_mathalphabet_latin:Nnn \mathbfsf {up,it}{#1} - } + \exp_not:n { \bool_if:NTF } \exp_not:c { g__um_ math #1 _text_bool} + { \exp_not:c { mathtext #1 } } + { \exp_not:c { sym #1 } } } - \um_set_mathalphabet_latin:Nnn \mathbfsfup {up,it}{#1} + }} +\cs_set_protected:Npn \mathup { \mathrm } +\cs_set_protected:Npn \symrm { \symup } +\cs_set:Npn \operator@font + { + \__um_switchto_literal: + \@fontswitch {} { \g__um_operator_mathfont_tl } } - -\cs_new:Nn \um_config_bfsfup_Greek:n +\cs_new:Npn \__um_setup_alphabets: { - \bool_if:NTF \g_um_sfliteral_bool - { - \um_map_chars_Greek:nn {bfsfup}{#1} - \um_set_mathalphabet_Greek:Nnn \mathbfsf {up}{#1} - } + \seq_if_empty:NTF \l__um_mathalph_seq { - \bool_if:NT \g_um_upsans_bool - { - \um_map_chars_Greek:nn {bfsfup,bfsfit}{#1} - \um_set_mathalphabet_Greek:Nnn \mathbfsf {up,it}{#1} - } + \__um_log:n {setup-implicit} + \seq_set_eq:NN \l__um_mathalph_seq \g__um_default_mathalph_seq + \bool_set_true:N \l__um_implicit_alph_bool + \__um_maybe_init_alphabet:n {sf} + \__um_maybe_init_alphabet:n {bf} + \__um_maybe_init_alphabet:n {bfsf} } - \um_set_mathalphabet_Greek:Nnn \mathbfsfup {up,it}{#1} - } - -\cs_new:Nn \um_config_bfsfup_greek:n - { - \bool_if:NTF \g_um_sfliteral_bool { - \um_map_chars_greek:nn {bfsfup} {#1} - \um_set_mathalphabet_greek:Nnn \mathbfsf {up} {#1} + \__um_log:n {setup-explicit} + \bool_set_false:N \l__um_implicit_alph_bool + \cs_set_eq:NN \__um_set_mathalphabet_char:nnn \__um_mathmap_noparse:nnn + \cs_set_eq:NN \__um_map_char_single:nn \__um_map_char_noparse:nn } + \seq_map_inline:Nn \l__um_mathalph_seq { - \bool_if:NT \g_um_upsans_bool + \tl_set:No \l__um_style_tl { \use_i:nnn ##1 } + \clist_set:No \l__um_alphabet_clist { \use_ii:nnn ##1 } + \tl_set:No \l__um_remap_style_tl { \use_iii:nnn ##1 } + + \clist_if_empty:NT \l__um_alphabet_clist { - \um_map_chars_greek:nn {bfsfup,bfsfit} {#1} - \um_set_mathalphabet_greek:Nnn \mathbfsf {up,it} {#1} + \cs_set_eq:NN \__um_maybe_init_alphabet:n \__um_init_alphabet:n + \clist_set:Nn \l__um_alphabet_clist { latin, Latin, greek, Greek, num, misc } } + + \__um_setup_math_alphabet:NNN + \l__um_style_tl \l__um_alphabet_clist \l__um_remap_style_tl } - \um_set_mathalphabet_greek:Nnn \mathbfsfup {up,it} {#1} + \seq_if_empty:NF \l__um_missing_alph_seq { \__um_log:n { missing-alphabets } } } -\cs_new:Nn \um_config_bfsfup_misc:n +\cs_new:Nn \__um_setup_math_alphabet:NNN { - \bool_if:NTF \g_um_literal_Nabla_bool + \tl_set_eq:NN \l__um_style_tl #1% actually a no-op but makes the code clearer! + \clist_map_inline:Nn #2 { - \um_map_single:nnn {Nabla}{bfsfup}{#1} - } - { - \bool_if:NT \g_um_upNabla_bool - { - \um_map_single:nnn {Nabla}{bfsfup,bfsfit}{#1} - } - } - \bool_if:NTF \g_um_literal_partial_bool - { - \um_map_single:nnn {partial}{bfsfup}{#1} - } - { - \bool_if:NT \g_um_uppartial_bool + \tl_set:Nn \l__um_alphabet_tl {##1} + \__um_if_alphabet_exists:nnTF \l__um_style_tl \l__um_alphabet_tl { - \um_map_single:nnn {partial}{bfsfup,bfsfit}{#1} - } - } - \um_set_mathalphabet_pos:Nnnn \mathbfsfup {partial} {up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathbfsfup {Nabla} {up,it}{#1} - \bool_if:NTF \g_um_literal_partial_bool - { - \um_set_mathalphabet_pos:Nnnn \mathbfsf {partial} {up}{#1} - } - { - \bool_if:NT \g_um_uppartial_bool - { - \um_set_mathalphabet_pos:Nnnn \mathbfsf {partial} {up,it}{#1} + \str_if_eq_x:nnTF {\l__um_alphabet_tl} {misc} + { + \__um_maybe_init_alphabet:n \l__um_style_tl + \clist_map_break: + } + { + \__um_glyph_if_exist:nT { \__um_to_usv:nn {\l__um_style_tl} {\l__um_alphabet_tl} } + { + \__um_maybe_init_alphabet:n \l__um_style_tl + \clist_map_break: + } + } } + { \msg_warning:nnx {unicode-math} {no-alphabet} { \l__um_style_tl / \l__um_alphabet_tl } } } - \bool_if:NTF \g_um_literal_Nabla_bool - { - \um_set_mathalphabet_pos:Nnnn \mathbfsf {Nabla} {up}{#1} - } + \csname TIC\endcsname + \clist_map_inline:Nn #2 { - \bool_if:NT \g_um_upNabla_bool + \tl_set:Nx \l__um_alphabet_tl { \tl_trim_spaces:n {##1} } + \cs_if_exist:cT {__um_config_ \l__um_style_tl _ \l__um_alphabet_tl :n} { - \um_set_mathalphabet_pos:Nnnn \mathbfsf {Nabla} {up,it}{#1} + \exp_args:No \tl_if_eq:nnTF \l__um_alphabet_tl {misc} + { + \__um_log:nx {setup-alph} {math \l__um_style_tl~(\l__um_alphabet_tl)} + \__um_alphabet_config:nnn {\l__um_style_tl} {\l__um_alphabet_tl} {#3} + } + { + \__um_glyph_if_exist:nTF { \__um_to_usv:nn {\l__um_style_tl} {\l__um_alphabet_tl} } + { + \__um_log:nx {setup-alph} {math \l__um_style_tl~(\l__um_alphabet_tl)} + \__um_alphabet_config:nnn {\l__um_style_tl} {\l__um_alphabet_tl} {#3} + } + { + \bool_if:NTF \l__um_implicit_alph_bool + { + \seq_put_right:Nx \l__um_missing_alph_seq + { + \@backslashchar sym \l__um_style_tl \space + (\tl_use:c{c__um_math_alphabet_name_ \l__um_alphabet_tl _tl}) + } + } + { + \__um_alphabet_config:nnn {\l__um_style_tl} {\l__um_alphabet_tl} {up} + } + } + } } } + \csname TOC\endcsname } -\cs_new:Nn \um_config_bfsfit_Latin:n +\cs_new:Nn \__um_map_char_noparse:nn + { \__um_set_mathcode:nnnn {#1}{\mathalpha}{\__um_symfont_tl}{#2} } +\cs_new:Nn \__um_map_char_parse:nn { - \bool_if:NTF \g_um_sfliteral_bool - { - \um_map_chars_Latin:nn {bfsfit} {#1} - \um_set_mathalphabet_Latin:Nnn \mathbfsf {it}{#1} - } - { - \bool_if:NF \g_um_upsans_bool - { - \um_map_chars_Latin:nn {bfsfup,bfsfit} {#1} - \um_set_mathalphabet_Latin:Nnn \mathbfsf {up,it}{#1} - } - } - \um_set_mathalphabet_Latin:Nnn \mathbfsfit {up,it}{#1} + \__um_if_char_spec:nNNT {#1} {\@nil} {\mathalpha} + { \__um_map_char_noparse:nn {#1}{#2} } } - -\cs_new:Nn \um_config_bfsfit_latin:n +\cs_new:Nn \__um_map_char_single:nnn { - \bool_if:NTF \g_um_sfliteral_bool - { - \um_map_chars_latin:nn {bfsfit} {#1} - \um_set_mathalphabet_latin:Nnn \mathbfsf {it}{#1} - } - { - \bool_if:NF \g_um_upsans_bool + \__um_map_char_single:nn { \__um_to_usv:nn {#1}{#3} } + { \__um_to_usv:nn {#2}{#3} } + } +\cs_set:Nn \__um_map_chars_range:nnn + { + \int_step_inline:nnnn {0}{1}{#1-1} + { \__um_map_char_single:nn {#2+##1}{#3+##1} } + } +\cs_new:Nn \__um_map_chars_range:nnnn + { + \__um_map_chars_range:nnn {#1} { \__um_to_usv:nn {#2}{#4} } + { \__um_to_usv:nn {#3}{#4} } + } +\cs_set:Nn \__um_set_normal_char:nnn + { + \__um_usv_if_exist:nnT {#3} {#1} + { + \clist_map_inline:nn {#2} { - \um_map_chars_latin:nn {bfsfup,bfsfit} {#1} - \um_set_mathalphabet_latin:Nnn \mathbfsf {up,it}{#1} + \__um_set_mathalphabet_pos:nnnn {normal} {#1} {##1} {#3} + \__um_map_char_single:nnn {##1} {#3} {#1} } - } - \um_set_mathalphabet_latin:Nnn \mathbfsfit {up,it}{#1} + } } - -\cs_new:Nn \um_config_bfsfit_Greek:n +\cs_new:Nn \__um_set_normal_Latin:nn { - \bool_if:NTF \g_um_sfliteral_bool - { - \um_map_chars_Greek:nn {bfsfit}{#1} - \um_set_mathalphabet_Greek:Nnn \mathbfsf {it}{#1} - } + \clist_map_inline:nn {#1} { - \bool_if:NF \g_um_upsans_bool - { - \um_map_chars_Greek:nn {bfsfup,bfsfit}{#1} - \um_set_mathalphabet_Greek:Nnn \mathbfsf {up,it}{#1} - } + \__um_set_mathalphabet_Latin:nnn {normal} {##1} {#2} + \__um_map_chars_range:nnnn {26} {##1} {#2} {Latin} } - \um_set_mathalphabet_Greek:Nnn \mathbfsfit {up,it}{#1} } - -\cs_new:Nn \um_config_bfsfit_greek:n +\cs_new:Nn \__um_set_normal_latin:nn { - \bool_if:NTF \g_um_sfliteral_bool + \clist_map_inline:nn {#1} { - \um_map_chars_greek:nn {bfsfit} {#1} - \um_set_mathalphabet_greek:Nnn \mathbfsf {it} {#1} + \__um_set_mathalphabet_latin:nnn {normal} {##1} {#2} + \__um_map_chars_range:nnnn {26} {##1} {#2} {latin} } + } +\cs_new:Nn \__um_set_normal_greek:nn + { + \clist_map_inline:nn {#1} { - \bool_if:NF \g_um_upsans_bool - { - \um_map_chars_greek:nn {bfsfup,bfsfit} {#1} - \um_set_mathalphabet_greek:Nnn \mathbfsf {up,it} {#1} - } + \__um_set_mathalphabet_greek:nnn {normal} {##1} {#2} + \__um_map_chars_range:nnnn {25} {##1} {#2} {greek} + \__um_map_char_single:nnn {##1} {#2} {varepsilon} + \__um_map_char_single:nnn {##1} {#2} {vartheta} + \__um_map_char_single:nnn {##1} {#2} {varkappa} + \__um_map_char_single:nnn {##1} {#2} {varphi} + \__um_map_char_single:nnn {##1} {#2} {varrho} + \__um_map_char_single:nnn {##1} {#2} {varpi} + \__um_set_mathalphabet_pos:nnnn {normal} {varepsilon} {##1} {#2} + \__um_set_mathalphabet_pos:nnnn {normal} {vartheta} {##1} {#2} + \__um_set_mathalphabet_pos:nnnn {normal} {varkappa} {##1} {#2} + \__um_set_mathalphabet_pos:nnnn {normal} {varphi} {##1} {#2} + \__um_set_mathalphabet_pos:nnnn {normal} {varrho} {##1} {#2} + \__um_set_mathalphabet_pos:nnnn {normal} {varpi} {##1} {#2} } - \um_set_mathalphabet_greek:Nnn \mathbfsfit {up,it} {#1} } - -\cs_new:Nn \um_config_bfsfit_misc:n +\cs_new:Nn \__um_set_normal_Greek:nn { - \bool_if:NTF \g_um_literal_Nabla_bool + \clist_map_inline:nn {#1} { - \um_map_single:nnn {Nabla}{bfsfit}{#1} + \__um_set_mathalphabet_Greek:nnn {normal} {##1} {#2} + \__um_map_chars_range:nnnn {25} {##1} {#2} {Greek} + \__um_map_char_single:nnn {##1} {#2} {varTheta} + \__um_set_mathalphabet_pos:nnnn {normal} {varTheta} {##1} {#2} } + } +\cs_new:Nn \__um_set_normal_numbers:nn + { + \__um_set_mathalphabet_numbers:nnn {normal} {#1} {#2} + \__um_map_chars_range:nnnn {10} {#1} {#2} {num} + } +\cs_new:Nn \__um_mathmap_noparse:nnn + { + \clist_map_inline:nn {#2} { - \bool_if:NF \g_um_upNabla_bool + \tl_put_right:cx {__um_switchto_#1:} { - \um_map_single:nnn {Nabla}{bfsfup,bfsfit}{#1} + \__um_set_mathcode:nnnn {##1} {\mathalpha} {\__um_symfont_tl} {#3} } } - \bool_if:NTF \g_um_literal_partial_bool - { - \um_map_single:nnn {partial}{bfsfit}{#1} - } + } +\cs_new:Nn \__um_mathmap_parse:nnn + { + \clist_if_in:NnT \l__um_char_nrange_clist {#3} { - \bool_if:NF \g_um_uppartial_bool - { - \um_map_single:nnn {partial}{bfsfup,bfsfit}{#1} - } + \__um_mathmap_noparse:nnn {#1}{#2}{#3} } - \um_set_mathalphabet_pos:Nnnn \mathbfsfit {partial} {up,it}{#1} - \um_set_mathalphabet_pos:Nnnn \mathbfsfit {Nabla} {up,it}{#1} - \bool_if:NTF \g_um_literal_partial_bool + } +\cs_new:Nn \__um_set_mathalphabet_char:nnnn + { + \__um_set_mathalphabet_char:nnn {#1} { \__um_to_usv:nn {#2} {#4} } + { \__um_to_usv:nn {#3} {#4} } + } +\cs_new:Nn \__um_set_mathalph_range:nnnn + { + \int_step_inline:nnnn {0} {1} {#1-1} + { \__um_set_mathalphabet_char:nnn {#2} { ##1 + #3 } { ##1 + #4 } } + } +\cs_new:Nn \__um_set_mathalph_range:nnnnn + { + \__um_set_mathalph_range:nnnn {#1} {#2} { \__um_to_usv:nn {#3} {#5} } + { \__um_to_usv:nn {#4} {#5} } + } +\cs_new:Nn \__um_set_mathalphabet_pos:nnnn + { + \__um_usv_if_exist:nnT {#4} {#2} { - \um_set_mathalphabet_pos:Nnnn \mathbfsf {partial} {it}{#1} + \clist_map_inline:nn {#3} + { \__um_set_mathalphabet_char:nnnn {#1} {##1} {#4} {#2} } } + } +\cs_new:Nn \__um_set_mathalphabet_numbers:nnn + { + \clist_map_inline:nn {#2} + { \__um_set_mathalph_range:nnnnn {10} {#1} {##1} {#3} {num} } + } +\cs_new:Nn \__um_set_mathalphabet_Latin:nnn + { + \clist_map_inline:nn {#2} + { \__um_set_mathalph_range:nnnnn {26} {#1} {##1} {#3} {Latin} } + } +\cs_new:Nn \__um_set_mathalphabet_latin:nnn + { + \clist_map_inline:nn {#2} { - \bool_if:NF \g_um_uppartial_bool - { - \um_set_mathalphabet_pos:Nnnn \mathbfsf {partial} {up,it}{#1} - } + \__um_set_mathalph_range:nnnnn {26} {#1} {##1} {#3} {latin} + \__um_set_mathalphabet_char:nnnn {#1} {##1} {#3} {h} } - \bool_if:NTF \g_um_literal_Nabla_bool + } +\cs_new:Nn \__um_set_mathalphabet_Greek:nnn + { + \clist_map_inline:nn {#2} { - \um_set_mathalphabet_pos:Nnnn \mathbfsf {Nabla} {it}{#1} + \__um_set_mathalph_range:nnnnn {25} {#1} {##1} {#3} {Greek} + \__um_set_mathalphabet_char:nnnn {#1} {##1} {#3} {varTheta} } + } +\cs_new:Nn \__um_set_mathalphabet_greek:nnn + { + \clist_map_inline:nn {#2} { - \bool_if:NF \g_um_upNabla_bool - { - \um_set_mathalphabet_pos:Nnnn \mathbfsf {Nabla} {up,it}{#1} - } + \__um_set_mathalph_range:nnnnn {25} {#1} {##1} {#3} {greek} + \__um_set_mathalphabet_char:nnnn {#1} {##1} {#3} {varepsilon} + \__um_set_mathalphabet_char:nnnn {#1} {##1} {#3} {vartheta} + \__um_set_mathalphabet_char:nnnn {#1} {##1} {#3} {varkappa} + \__um_set_mathalphabet_char:nnnn {#1} {##1} {#3} {varphi} + \__um_set_mathalphabet_char:nnnn {#1} {##1} {#3} {varrho} + \__um_set_mathalphabet_char:nnnn {#1} {##1} {#3} {varpi} } } -\cs_new:Npn \um_symbol_setup: +\cs_new:Npn \__um_symbol_setup: { \cs_set:Npn \UnicodeMathSymbol ##1##2##3##4 { - \exp_not:n { \_um_sym:nnn {##1} {##2} {##3} } + \exp_not:n { \__um_sym:nnn {##1} {##2} {##3} } } } -\CatchFileEdef \g_um_mathtable_tl {unicode-math-table.tex} {\um_symbol_setup:} -\cs_new:Nn \um_input_math_symbol_table: {\g_um_mathtable_tl} +\CatchFileEdef \g__um_mathtable_tl {unicode-math-table.tex} {\__um_symbol_setup:} +\cs_new:Nn \__um_input_math_symbol_table: {\g__um_mathtable_tl} \group_begin: \char_set_catcode_other:N \^ - \cs_gset:Npn \um_cs_set_eq_active_char:Nw #1 = "#2 \q_nil + \cs_gset:Npn \__um_cs_set_eq_active_char:Nw #1 = "#2 \q_nil { \tex_lowercase:D { @@ -2098,7 +1206,7 @@ } } } - \cs_new:Npn \um_active_char_set:wc "#1 \q_nil #2 + \cs_new:Npn \__um_active_char_set:wc "#1 \q_nil #2 { \tex_lowercase:D { @@ -2107,25 +1215,22 @@ } } \group_end: -\AtBeginDocument{\um_define_math_chars:} -\cs_new:Nn \um_define_math_chars: +\AtBeginDocument{\__um_define_math_chars:} +\cs_new:Nn \__um_define_math_chars: { \group_begin: \char_set_catcode_math_superscript:N \^ - \cs_set:Npn \_um_sym:nnn ##1##2##3 + \cs_set:Npn \__um_sym:nnn ##1##2##3 { - \bool_if:nF { \cs_if_eq_p:NN ##3 \mathaccent || - \cs_if_eq_p:NN ##3 \mathopen || - \cs_if_eq_p:NN ##3 \mathclose || - \cs_if_eq_p:NN ##3 \mathover || - \cs_if_eq_p:NN ##3 \mathunder || - \cs_if_eq_p:NN ##3 \mathbotaccent } + \tl_if_in:nnT + { \mathord \mathalpha \mathbin \mathrel \mathpunct \mathop \mathfence } + {##3} { - \um_cs_set_eq_active_char:Nw ##2 = ##1 \q_nil \ignorespaces + \__um_cs_set_eq_active_char:Nw ##2 = ##1 \q_nil \ignorespaces } } \char_set_catcode_other:N \# - \um_input_math_symbol_table: + \__um_input_math_symbol_table: \group_end: } \group_begin: @@ -2140,171 +1245,169 @@ } } |group_end: -\AtBeginDocument { \um_load_lm_if_necessary: } -\cs_new:Nn \um_load_lm_if_necessary: +\AtBeginDocument { \__um_load_lm_if_necessary: } +\cs_new:Nn \__um_load_lm_if_necessary: { - \cs_if_exist:NF \l_um_fontname_tl + \cs_if_exist:NF \l__um_fontname_tl { - % XXX: update this when lmmath-bold.otf is released - \setmathfont[BoldFont={latinmodern-math.otf}]{latinmodern-math.otf} + % TODO: update this when lmmath-bold.otf is released + \setmathfont{latinmodern-math.otf}[BoldFont={latinmodern-math.otf}] + \bool_set_false:N \g__um_mainfont_already_set_bool } } -\cs_new:Nn \um_arg_i_before_egroup:n {#1\egroup} -\cs_new:Nn \um_superscript:n +\cs_new:Nn \__um_arg_i_before_egroup:n {#1\egroup} +\cs_new:Nn \__um_superscript:n { ^\bgroup #1 - \peek_meaning_remove:NTF ^ \um_arg_i_before_egroup:n \egroup + \peek_meaning_remove:NTF ^ \__um_arg_i_before_egroup:n \egroup } -\muskip_new:N \g_um_primekern_muskip -\muskip_gset:Nn \g_um_primekern_muskip { -\thinmuskip/2 }% arbitrary -\int_new:N \l_um_primecount_int -\cs_new:Nn \um_nprimes:Nn +\cs_new:Nn \__um_nprimes:Nn { - \um_superscript:n + \__um_superscript:n { #1 - \prg_replicate:nn {#2-1} { \mskip \g_um_primekern_muskip #1 } + \prg_replicate:nn {#2-1} { \mskip \g__um_primekern_muskip #1 } } } -\cs_new:Nn \um_nprimes_select:nn +\cs_new:Nn \__um_nprimes_select:nn { - \int_case:nnn {#2} + \int_case:nnF {#2} { - {1} { \um_superscript:n {#1} } + {1} { \__um_superscript:n {#1} } {2} { - \um_glyph_if_exist:nTF {"2033} - { \um_superscript:n {\um_prime_double_mchar} } - { \um_nprimes:Nn #1 {#2} } + \__um_glyph_if_exist:nTF {"2033} + { \__um_superscript:n {\__um_prime_double_mchar} } + { \__um_nprimes:Nn #1 {#2} } } {3} { - \um_glyph_if_exist:nTF {"2034} - { \um_superscript:n {\um_prime_triple_mchar} } - { \um_nprimes:Nn #1 {#2} } + \__um_glyph_if_exist:nTF {"2034} + { \__um_superscript:n {\__um_prime_triple_mchar} } + { \__um_nprimes:Nn #1 {#2} } } {4} { - \um_glyph_if_exist:nTF {"2057} - { \um_superscript:n {\um_prime_quad_mchar} } - { \um_nprimes:Nn #1 {#2} } + \__um_glyph_if_exist:nTF {"2057} + { \__um_superscript:n {\__um_prime_quad_mchar} } + { \__um_nprimes:Nn #1 {#2} } } } { - \um_nprimes:Nn #1 {#2} + \__um_nprimes:Nn #1 {#2} } } -\cs_new:Nn \um_nbackprimes_select:nn +\cs_new:Nn \__um_nbackprimes_select:nn { - \int_case:nnn {#2} + \int_case:nnF {#2} { - {1} { \um_superscript:n {#1} } + {1} { \__um_superscript:n {#1} } {2} { - \um_glyph_if_exist:nTF {"2036} - { \um_superscript:n {\um_backprime_double_mchar} } - { \um_nprimes:Nn #1 {#2} } + \__um_glyph_if_exist:nTF {"2036} + { \__um_superscript:n {\__um_backprime_double_mchar} } + { \__um_nprimes:Nn #1 {#2} } } {3} { - \um_glyph_if_exist:nTF {"2037} - { \um_superscript:n {\um_backprime_triple_mchar} } - { \um_nprimes:Nn #1 {#2} } + \__um_glyph_if_exist:nTF {"2037} + { \__um_superscript:n {\__um_backprime_triple_mchar} } + { \__um_nprimes:Nn #1 {#2} } } } { - \um_nprimes:Nn #1 {#2} + \__um_nprimes:Nn #1 {#2} } } -\cs_new:Npn \um_scan_prime: +\cs_new:Npn \__um_scan_prime: { - \cs_set_eq:NN \um_superscript:n \use:n - \int_zero:N \l_um_primecount_int - \um_scanprime_collect:N \um_prime_single_mchar + \cs_set_eq:NN \__um_superscript:n \use:n + \int_zero:N \l__um_primecount_int + \__um_scanprime_collect:N \__um_prime_single_mchar } -\cs_new:Npn \um_scan_dprime: +\cs_new:Npn \__um_scan_dprime: { - \cs_set_eq:NN \um_superscript:n \use:n - \int_set:Nn \l_um_primecount_int {1} - \um_scanprime_collect:N \um_prime_single_mchar + \cs_set_eq:NN \__um_superscript:n \use:n + \int_set:Nn \l__um_primecount_int {1} + \__um_scanprime_collect:N \__um_prime_single_mchar } -\cs_new:Npn \um_scan_trprime: +\cs_new:Npn \__um_scan_trprime: { - \cs_set_eq:NN \um_superscript:n \use:n - \int_set:Nn \l_um_primecount_int {2} - \um_scanprime_collect:N \um_prime_single_mchar + \cs_set_eq:NN \__um_superscript:n \use:n + \int_set:Nn \l__um_primecount_int {2} + \__um_scanprime_collect:N \__um_prime_single_mchar } -\cs_new:Npn \um_scan_qprime: +\cs_new:Npn \__um_scan_qprime: { - \cs_set_eq:NN \um_superscript:n \use:n - \int_set:Nn \l_um_primecount_int {3} - \um_scanprime_collect:N \um_prime_single_mchar + \cs_set_eq:NN \__um_superscript:n \use:n + \int_set:Nn \l__um_primecount_int {3} + \__um_scanprime_collect:N \__um_prime_single_mchar } -\cs_new:Npn \um_scan_sup_prime: +\cs_new:Npn \__um_scan_sup_prime: { - \int_zero:N \l_um_primecount_int - \um_scanprime_collect:N \um_prime_single_mchar + \int_zero:N \l__um_primecount_int + \__um_scanprime_collect:N \__um_prime_single_mchar } -\cs_new:Npn \um_scan_sup_dprime: +\cs_new:Npn \__um_scan_sup_dprime: { - \int_set:Nn \l_um_primecount_int {1} - \um_scanprime_collect:N \um_prime_single_mchar + \int_set:Nn \l__um_primecount_int {1} + \__um_scanprime_collect:N \__um_prime_single_mchar } -\cs_new:Npn \um_scan_sup_trprime: +\cs_new:Npn \__um_scan_sup_trprime: { - \int_set:Nn \l_um_primecount_int {2} - \um_scanprime_collect:N \um_prime_single_mchar + \int_set:Nn \l__um_primecount_int {2} + \__um_scanprime_collect:N \__um_prime_single_mchar } -\cs_new:Npn \um_scan_sup_qprime: +\cs_new:Npn \__um_scan_sup_qprime: { - \int_set:Nn \l_um_primecount_int {3} - \um_scanprime_collect:N \um_prime_single_mchar + \int_set:Nn \l__um_primecount_int {3} + \__um_scanprime_collect:N \__um_prime_single_mchar } -\cs_new:Nn \um_scanprime_collect:N +\cs_new:Nn \__um_scanprime_collect:N { - \int_incr:N \l_um_primecount_int + \int_incr:N \l__um_primecount_int \peek_meaning_remove:NTF ' - { \um_scanprime_collect:N #1 } + { \__um_scanprime_collect:N #1 } { - \peek_meaning_remove:NTF \um_scan_prime: - { \um_scanprime_collect:N #1 } + \peek_meaning_remove:NTF \__um_scan_prime: + { \__um_scanprime_collect:N #1 } { \peek_meaning_remove:NTF ^^^^2032 - { \um_scanprime_collect:N #1 } + { \__um_scanprime_collect:N #1 } { - \peek_meaning_remove:NTF \um_scan_dprime: + \peek_meaning_remove:NTF \__um_scan_dprime: { - \int_incr:N \l_um_primecount_int - \um_scanprime_collect:N #1 + \int_incr:N \l__um_primecount_int + \__um_scanprime_collect:N #1 } { \peek_meaning_remove:NTF ^^^^2033 { - \int_incr:N \l_um_primecount_int - \um_scanprime_collect:N #1 + \int_incr:N \l__um_primecount_int + \__um_scanprime_collect:N #1 } { - \peek_meaning_remove:NTF \um_scan_trprime: + \peek_meaning_remove:NTF \__um_scan_trprime: { - \int_add:Nn \l_um_primecount_int {2} - \um_scanprime_collect:N #1 + \int_add:Nn \l__um_primecount_int {2} + \__um_scanprime_collect:N #1 } { \peek_meaning_remove:NTF ^^^^2034 { - \int_add:Nn \l_um_primecount_int {2} - \um_scanprime_collect:N #1 + \int_add:Nn \l__um_primecount_int {2} + \__um_scanprime_collect:N #1 } { - \peek_meaning_remove:NTF \um_scan_qprime: + \peek_meaning_remove:NTF \__um_scan_qprime: { - \int_add:Nn \l_um_primecount_int {3} - \um_scanprime_collect:N #1 + \int_add:Nn \l__um_primecount_int {3} + \__um_scanprime_collect:N #1 } { \peek_meaning_remove:NTF ^^^^2057 { - \int_add:Nn \l_um_primecount_int {3} - \um_scanprime_collect:N #1 + \int_add:Nn \l__um_primecount_int {3} + \__um_scanprime_collect:N #1 } { - \um_nprimes_select:nn {#1} {\l_um_primecount_int} + \__um_nprimes_select:nn {#1} {\l__um_primecount_int} } } } @@ -2315,82 +1418,82 @@ } } } -\cs_new:Npn \um_scan_backprime: +\cs_new:Npn \__um_scan_backprime: { - \cs_set_eq:NN \um_superscript:n \use:n - \int_zero:N \l_um_primecount_int - \um_scanbackprime_collect:N \um_backprime_single_mchar + \cs_set_eq:NN \__um_superscript:n \use:n + \int_zero:N \l__um_primecount_int + \__um_scanbackprime_collect:N \__um_backprime_single_mchar } -\cs_new:Npn \um_scan_backdprime: +\cs_new:Npn \__um_scan_backdprime: { - \cs_set_eq:NN \um_superscript:n \use:n - \int_set:Nn \l_um_primecount_int {1} - \um_scanbackprime_collect:N \um_backprime_single_mchar + \cs_set_eq:NN \__um_superscript:n \use:n + \int_set:Nn \l__um_primecount_int {1} + \__um_scanbackprime_collect:N \__um_backprime_single_mchar } -\cs_new:Npn \um_scan_backtrprime: +\cs_new:Npn \__um_scan_backtrprime: { - \cs_set_eq:NN \um_superscript:n \use:n - \int_set:Nn \l_um_primecount_int {2} - \um_scanbackprime_collect:N \um_backprime_single_mchar + \cs_set_eq:NN \__um_superscript:n \use:n + \int_set:Nn \l__um_primecount_int {2} + \__um_scanbackprime_collect:N \__um_backprime_single_mchar } -\cs_new:Npn \um_scan_sup_backprime: +\cs_new:Npn \__um_scan_sup_backprime: { - \int_zero:N \l_um_primecount_int - \um_scanbackprime_collect:N \um_backprime_single_mchar + \int_zero:N \l__um_primecount_int + \__um_scanbackprime_collect:N \__um_backprime_single_mchar } -\cs_new:Npn \um_scan_sup_backdprime: +\cs_new:Npn \__um_scan_sup_backdprime: { - \int_set:Nn \l_um_primecount_int {1} - \um_scanbackprime_collect:N \um_backprime_single_mchar + \int_set:Nn \l__um_primecount_int {1} + \__um_scanbackprime_collect:N \__um_backprime_single_mchar } -\cs_new:Npn \um_scan_sup_backtrprime: +\cs_new:Npn \__um_scan_sup_backtrprime: { - \int_set:Nn \l_um_primecount_int {2} - \um_scanbackprime_collect:N \um_backprime_single_mchar + \int_set:Nn \l__um_primecount_int {2} + \__um_scanbackprime_collect:N \__um_backprime_single_mchar } -\cs_new:Nn \um_scanbackprime_collect:N +\cs_new:Nn \__um_scanbackprime_collect:N { - \int_incr:N \l_um_primecount_int + \int_incr:N \l__um_primecount_int \peek_meaning_remove:NTF ` { - \um_scanbackprime_collect:N #1 + \__um_scanbackprime_collect:N #1 } { - \peek_meaning_remove:NTF \um_scan_backprime: + \peek_meaning_remove:NTF \__um_scan_backprime: { - \um_scanbackprime_collect:N #1 + \__um_scanbackprime_collect:N #1 } { \peek_meaning_remove:NTF ^^^^2035 { - \um_scanbackprime_collect:N #1 + \__um_scanbackprime_collect:N #1 } { - \peek_meaning_remove:NTF \um_scan_backdprime: + \peek_meaning_remove:NTF \__um_scan_backdprime: { - \int_incr:N \l_um_primecount_int - \um_scanbackprime_collect:N #1 + \int_incr:N \l__um_primecount_int + \__um_scanbackprime_collect:N #1 } { \peek_meaning_remove:NTF ^^^^2036 { - \int_incr:N \l_um_primecount_int - \um_scanbackprime_collect:N #1 + \int_incr:N \l__um_primecount_int + \__um_scanbackprime_collect:N #1 } { - \peek_meaning_remove:NTF \um_scan_backtrprime: + \peek_meaning_remove:NTF \__um_scan_backtrprime: { - \int_add:Nn \l_um_primecount_int {2} - \um_scanbackprime_collect:N #1 + \int_add:Nn \l__um_primecount_int {2} + \__um_scanbackprime_collect:N #1 } { \peek_meaning_remove:NTF ^^^^2037 { - \int_add:Nn \l_um_primecount_int {2} - \um_scanbackprime_collect:N #1 + \int_add:Nn \l__um_primecount_int {2} + \__um_scanbackprime_collect:N #1 } { - \um_nbackprimes_select:nn {#1} {\l_um_primecount_int} + \__um_nbackprimes_select:nn {#1} {\l__um_primecount_int} } } } @@ -2399,16 +1502,16 @@ } } } -\AtBeginDocument{\um_define_prime_commands: \um_define_prime_chars:} -\cs_new:Nn \um_define_prime_commands: +\AtBeginDocument{\__um_define_prime_commands: \__um_define_prime_chars:} +\cs_new:Nn \__um_define_prime_commands: { - \cs_set_eq:NN \prime \um_prime_single_mchar - \cs_set_eq:NN \dprime \um_prime_double_mchar - \cs_set_eq:NN \trprime \um_prime_triple_mchar - \cs_set_eq:NN \qprime \um_prime_quad_mchar - \cs_set_eq:NN \backprime \um_backprime_single_mchar - \cs_set_eq:NN \backdprime \um_backprime_double_mchar - \cs_set_eq:NN \backtrprime \um_backprime_triple_mchar + \cs_set_eq:NN \prime \__um_prime_single_mchar + \cs_set_eq:NN \dprime \__um_prime_double_mchar + \cs_set_eq:NN \trprime \__um_prime_triple_mchar + \cs_set_eq:NN \qprime \__um_prime_quad_mchar + \cs_set_eq:NN \backprime \__um_backprime_single_mchar + \cs_set_eq:NN \backdprime \__um_backprime_double_mchar + \cs_set_eq:NN \backtrprime \__um_backprime_triple_mchar } \group_begin: \char_set_catcode_active:N \' @@ -2420,21 +1523,21 @@ \char_set_catcode_active:n {"2035} \char_set_catcode_active:n {"2036} \char_set_catcode_active:n {"2037} - \cs_gset:Nn \um_define_prime_chars: - { - \cs_set_eq:NN ' \um_scan_sup_prime: - \cs_set_eq:NN ^^^^2032 \um_scan_sup_prime: - \cs_set_eq:NN ^^^^2033 \um_scan_sup_dprime: - \cs_set_eq:NN ^^^^2034 \um_scan_sup_trprime: - \cs_set_eq:NN ^^^^2057 \um_scan_sup_qprime: - \cs_set_eq:NN ` \um_scan_sup_backprime: - \cs_set_eq:NN ^^^^2035 \um_scan_sup_backprime: - \cs_set_eq:NN ^^^^2036 \um_scan_sup_backdprime: - \cs_set_eq:NN ^^^^2037 \um_scan_sup_backtrprime: + \cs_gset:Nn \__um_define_prime_chars: + { + \cs_set_eq:NN ' \__um_scan_sup_prime: + \cs_set_eq:NN ^^^^2032 \__um_scan_sup_prime: + \cs_set_eq:NN ^^^^2033 \__um_scan_sup_dprime: + \cs_set_eq:NN ^^^^2034 \__um_scan_sup_trprime: + \cs_set_eq:NN ^^^^2057 \__um_scan_sup_qprime: + \cs_set_eq:NN ` \__um_scan_sup_backprime: + \cs_set_eq:NN ^^^^2035 \__um_scan_sup_backprime: + \cs_set_eq:NN ^^^^2036 \__um_scan_sup_backdprime: + \cs_set_eq:NN ^^^^2037 \__um_scan_sup_backtrprime: } \group_end: -\AtBeginDocument{\um_redefine_radical:} -\cs_new:Nn \um_redefine_radical: +\AtBeginDocument{\__um_redefine_radical:} +\cs_new:Nn \__um_redefine_radical: { \@ifpackageloaded { amsmath } { } { @@ -2448,140 +1551,143 @@ \sqrtsign { ##2 } \c_math_toggle_token } - \um_mathstyle_scale:Nnn ##1 { \kern } - { \fontdimen 63 \l_um_font } + \__um_mathstyle_scale:Nnn ##1 { \kern } + { \fontdimen 63 \l__um_font } \box_move_up:nn { (\box_ht:N \l_tmpa_box - \box_dp:N \l_tmpa_box) - * \number \fontdimen 65 \l_um_font / 100 + * \number \fontdimen 65 \l__um_font / 100 } { \box_use:N \rootbox } - \um_mathstyle_scale:Nnn ##1 { \kern } - { \fontdimen 64 \l_um_font } + \__um_mathstyle_scale:Nnn ##1 { \kern } + { \fontdimen 64 \l__um_font } \box_use_clear:N \l_tmpa_box } } } -\cs_new:Nn \um_fontdimen_to_percent:nn +\cs_new:Nn \__um_fontdimen_to_percent:nn { - \strip@pt\dimexpr\fontdimen#1#2*65536/100\relax + \fp_eval:n { \dim_to_decimal:n { \fontdimen #1 #2 } * 65536 / 100 } } -\cs_new:Nn \um_fontdimen_to_scale:nn +\cs_new:Nn \__um_fontdimen_to_scale:nn { - \um_fontdimen_to_percent:nn {#1} {#2} \dimexpr \f@size pt\relax + \fp_eval:n {\__um_fontdimen_to_percent:nn {#1} {#2} * \f@size } pt } -\cs_new:Nn \um_mathstyle_scale:Nnn +\cs_new:Nn \__um_mathstyle_scale:Nnn { \ifx#1\scriptstyle - #2 \um_fontdimen_to_percent:nn {10} \l_um_font #3 + #2 \__um_fontdimen_to_percent:nn {10} \l__um_font #3 \else \ifx#1\scriptscriptstyle - #2 \um_fontdimen_to_percent:nn {11} \l_um_font #3 + #2 \__um_fontdimen_to_percent:nn {11} \l__um_font #3 \else #2 #3 \fi \fi } -\prop_new:N \g_um_supers_prop -\prop_new:N \g_um_subs_prop \group_begin: -\cs_new:Nn \um_setup_active_superscript:nn +\cs_new:Nn \__um_setup_active_superscript:nn { - \prop_gput:Nxn \g_um_supers_prop {\meaning #1} {#2} + \prop_gput:Non \g__um_supers_prop {\meaning #1} {#2} \char_set_catcode_active:N #1 - \char_gmake_mathactive:N #1 + \__um_char_gmake_mathactive:N #1 \scantokens { \cs_gset:Npn #1 { - \tl_set:Nn \l_um_ss_chain_tl {#2} - \cs_set_eq:NN \um_sub_or_super:n \sp - \tl_set:Nn \l_um_tmpa_tl {supers} - \um_scan_sscript: - } - } - } -\um_setup_active_superscript:nn {^^^^2070} {0} -\um_setup_active_superscript:nn {^^^^00b9} {1} -\um_setup_active_superscript:nn {^^^^00b2} {2} -\um_setup_active_superscript:nn {^^^^00b3} {3} -\um_setup_active_superscript:nn {^^^^2074} {4} -\um_setup_active_superscript:nn {^^^^2075} {5} -\um_setup_active_superscript:nn {^^^^2076} {6} -\um_setup_active_superscript:nn {^^^^2077} {7} -\um_setup_active_superscript:nn {^^^^2078} {8} -\um_setup_active_superscript:nn {^^^^2079} {9} -\um_setup_active_superscript:nn {^^^^207a} {+} -\um_setup_active_superscript:nn {^^^^207b} {-} -\um_setup_active_superscript:nn {^^^^207c} {=} -\um_setup_active_superscript:nn {^^^^207d} {(} -\um_setup_active_superscript:nn {^^^^207e} {)} -\um_setup_active_superscript:nn {^^^^2071} {i} -\um_setup_active_superscript:nn {^^^^207f} {n} -\cs_new:Nn \um_setup_active_subscript:nn - { - \prop_gput:Nxn \g_um_subs_prop {\meaning #1} {#2} + \tl_set:Nn \l__um_ss_chain_tl {#2} + \cs_set_eq:NN \__um_sub_or_super:n \sp + \tl_set:Nn \l__um_tmpa_tl {supers} + \__um_scan_sscript: + } + } + } +\__um_setup_active_superscript:nn {^^^^2070} {0} +\__um_setup_active_superscript:nn {^^^^00b9} {1} +\__um_setup_active_superscript:nn {^^^^00b2} {2} +\__um_setup_active_superscript:nn {^^^^00b3} {3} +\__um_setup_active_superscript:nn {^^^^2074} {4} +\__um_setup_active_superscript:nn {^^^^2075} {5} +\__um_setup_active_superscript:nn {^^^^2076} {6} +\__um_setup_active_superscript:nn {^^^^2077} {7} +\__um_setup_active_superscript:nn {^^^^2078} {8} +\__um_setup_active_superscript:nn {^^^^2079} {9} +\__um_setup_active_superscript:nn {^^^^207a} {+} +\__um_setup_active_superscript:nn {^^^^207b} {-} +\__um_setup_active_superscript:nn {^^^^207c} {=} +\__um_setup_active_superscript:nn {^^^^207d} {(} +\__um_setup_active_superscript:nn {^^^^207e} {)} +\__um_setup_active_superscript:nn {^^^^2071} {i} +\__um_setup_active_superscript:nn {^^^^207f} {n} +\__um_setup_active_superscript:nn {^^^^02b0} {h} +\__um_setup_active_superscript:nn {^^^^02b2} {j} +\__um_setup_active_superscript:nn {^^^^02b3} {r} +\__um_setup_active_superscript:nn {^^^^02b7} {w} +\__um_setup_active_superscript:nn {^^^^02b8} {y} +\cs_new:Nn \__um_setup_active_subscript:nn + { + \prop_gput:Non \g__um_subs_prop {\meaning #1} {#2} \char_set_catcode_active:N #1 - \char_gmake_mathactive:N #1 + \__um_char_gmake_mathactive:N #1 \scantokens { \cs_gset:Npn #1 { - \tl_set:Nn \l_um_ss_chain_tl {#2} - \cs_set_eq:NN \um_sub_or_super:n \sb - \tl_set:Nn \l_um_tmpa_tl {subs} - \um_scan_sscript: - } - } - } -\um_setup_active_subscript:nn {^^^^2080} {0} -\um_setup_active_subscript:nn {^^^^2081} {1} -\um_setup_active_subscript:nn {^^^^2082} {2} -\um_setup_active_subscript:nn {^^^^2083} {3} -\um_setup_active_subscript:nn {^^^^2084} {4} -\um_setup_active_subscript:nn {^^^^2085} {5} -\um_setup_active_subscript:nn {^^^^2086} {6} -\um_setup_active_subscript:nn {^^^^2087} {7} -\um_setup_active_subscript:nn {^^^^2088} {8} -\um_setup_active_subscript:nn {^^^^2089} {9} -\um_setup_active_subscript:nn {^^^^208a} {+} -\um_setup_active_subscript:nn {^^^^208b} {-} -\um_setup_active_subscript:nn {^^^^208c} {=} -\um_setup_active_subscript:nn {^^^^208d} {(} -\um_setup_active_subscript:nn {^^^^208e} {)} -\um_setup_active_subscript:nn {^^^^2090} {a} -\um_setup_active_subscript:nn {^^^^2091} {e} -\um_setup_active_subscript:nn {^^^^1d62} {i} -\um_setup_active_subscript:nn {^^^^2092} {o} -\um_setup_active_subscript:nn {^^^^1d63} {r} -\um_setup_active_subscript:nn {^^^^1d64} {u} -\um_setup_active_subscript:nn {^^^^1d65} {v} -\um_setup_active_subscript:nn {^^^^2093} {x} -\um_setup_active_subscript:nn {^^^^1d66} {\beta} -\um_setup_active_subscript:nn {^^^^1d67} {\gamma} -\um_setup_active_subscript:nn {^^^^1d68} {\rho} -\um_setup_active_subscript:nn {^^^^1d69} {\phi} -\um_setup_active_subscript:nn {^^^^1d6a} {\chi} + \tl_set:Nn \l__um_ss_chain_tl {#2} + \cs_set_eq:NN \__um_sub_or_super:n \sb + \tl_set:Nn \l__um_tmpa_tl {subs} + \__um_scan_sscript: + } + } + } +\__um_setup_active_subscript:nn {^^^^2080} {0} +\__um_setup_active_subscript:nn {^^^^2081} {1} +\__um_setup_active_subscript:nn {^^^^2082} {2} +\__um_setup_active_subscript:nn {^^^^2083} {3} +\__um_setup_active_subscript:nn {^^^^2084} {4} +\__um_setup_active_subscript:nn {^^^^2085} {5} +\__um_setup_active_subscript:nn {^^^^2086} {6} +\__um_setup_active_subscript:nn {^^^^2087} {7} +\__um_setup_active_subscript:nn {^^^^2088} {8} +\__um_setup_active_subscript:nn {^^^^2089} {9} +\__um_setup_active_subscript:nn {^^^^208a} {+} +\__um_setup_active_subscript:nn {^^^^208b} {-} +\__um_setup_active_subscript:nn {^^^^208c} {=} +\__um_setup_active_subscript:nn {^^^^208d} {(} +\__um_setup_active_subscript:nn {^^^^208e} {)} +\__um_setup_active_subscript:nn {^^^^2090} {a} +\__um_setup_active_subscript:nn {^^^^2091} {e} +\__um_setup_active_subscript:nn {^^^^1d62} {i} +\__um_setup_active_subscript:nn {^^^^2092} {o} +\__um_setup_active_subscript:nn {^^^^1d63} {r} +\__um_setup_active_subscript:nn {^^^^1d64} {u} +\__um_setup_active_subscript:nn {^^^^1d65} {v} +\__um_setup_active_subscript:nn {^^^^2093} {x} +\__um_setup_active_subscript:nn {^^^^1d66} {\beta} +\__um_setup_active_subscript:nn {^^^^1d67} {\gamma} +\__um_setup_active_subscript:nn {^^^^1d68} {\rho} +\__um_setup_active_subscript:nn {^^^^1d69} {\phi} +\__um_setup_active_subscript:nn {^^^^1d6a} {\chi} \group_end: -\cs_new:Npn \um_scan_sscript: +\cs_new:Npn \__um_scan_sscript: { - \um_scan_sscript:TF + \__um_scan_sscript:TF { - \um_scan_sscript: + \__um_scan_sscript: } { - \um_sub_or_super:n {\l_um_ss_chain_tl} + \__um_sub_or_super:n {\l__um_ss_chain_tl} } } -\cs_new:Npn \um_scan_sscript:TF #1#2 +\cs_new:Npn \__um_scan_sscript:TF #1#2 { \tl_set:Nx \__peek_true_aux:w { \exp_not:n{ #1 } } \tl_set_eq:NN \__peek_true:w \__peek_true_remove:w \tl_set:Nx \__peek_false:w { \exp_not:n { \group_align_safe_end: #2 } } \group_align_safe_begin: - \peek_after:Nw \um_peek_execute_branches_ss: + \peek_after:Nw \__um_peek_execute_branches_ss: } -\cs_new:Npn \um_peek_execute_branches_ss: +\cs_new:Npn \__um_peek_execute_branches_ss: { \bool_if:nTF { @@ -2590,24 +1696,24 @@ \token_if_eq_meaning_p:NN \l_peek_token \c_space_token } { \__peek_false:w } - { \um_peek_execute_branches_ss_aux: } + { \__um_peek_execute_branches_ss_aux: } } -\cs_new:Npn \um_peek_execute_branches_ss_aux: +\cs_new:Npn \__um_peek_execute_branches_ss_aux: { - \prop_if_in:cxTF - {g_um_\l_um_tmpa_tl _prop} {\meaning\l_peek_token} + \prop_if_in:coTF + {g__um_\l__um_tmpa_tl _prop} {\meaning\l_peek_token} { - \prop_get:cxN - {g_um_\l_um_tmpa_tl _prop} {\meaning\l_peek_token} \l_um_tmpb_tl - \tl_put_right:NV \l_um_ss_chain_tl \l_um_tmpb_tl + \prop_get:coN + {g__um_\l__um_tmpa_tl _prop} {\meaning\l_peek_token} \l__um_tmpb_tl + \tl_put_right:NV \l__um_ss_chain_tl \l__um_tmpb_tl \__peek_true:w } { \__peek_false:w } } -\cs_new:Npn \um_define_active_frac:Nw #1 #2/#3 +\cs_new:Npn \__um_define_active_frac:Nw #1 #2/#3 { \char_set_catcode_active:N #1 - \char_gmake_mathactive:N #1 + \__um_char_gmake_mathactive:N #1 \tl_rescan:nn { \catcode`\_=11\relax @@ -2616,36 +1722,36 @@ { \cs_gset:Npx #1 { - \bool_if:NTF \l_um_smallfrac_bool {\exp_not:N\tfrac} {\exp_not:N\frac} + \bool_if:NTF \l__um_smallfrac_bool {\exp_not:N\tfrac} {\exp_not:N\frac} {#2} {#3} } } } -\cs_new:Npn \um_setup_active_frac: +\cs_new:Npn \__um_setup_active_frac: { \group_begin: - \um_define_active_frac:Nw ^^^^2189 0/3 - \um_define_active_frac:Nw ^^^^2152 1/{10} - \um_define_active_frac:Nw ^^^^2151 1/9 - \um_define_active_frac:Nw ^^^^215b 1/8 - \um_define_active_frac:Nw ^^^^2150 1/7 - \um_define_active_frac:Nw ^^^^2159 1/6 - \um_define_active_frac:Nw ^^^^2155 1/5 - \um_define_active_frac:Nw ^^^^00bc 1/4 - \um_define_active_frac:Nw ^^^^2153 1/3 - \um_define_active_frac:Nw ^^^^215c 3/8 - \um_define_active_frac:Nw ^^^^2156 2/5 - \um_define_active_frac:Nw ^^^^00bd 1/2 - \um_define_active_frac:Nw ^^^^2157 3/5 - \um_define_active_frac:Nw ^^^^215d 5/8 - \um_define_active_frac:Nw ^^^^2154 2/3 - \um_define_active_frac:Nw ^^^^00be 3/4 - \um_define_active_frac:Nw ^^^^2158 4/5 - \um_define_active_frac:Nw ^^^^215a 5/6 - \um_define_active_frac:Nw ^^^^215e 7/8 + \__um_define_active_frac:Nw ^^^^2189 0/3 + \__um_define_active_frac:Nw ^^^^2152 1/{10} + \__um_define_active_frac:Nw ^^^^2151 1/9 + \__um_define_active_frac:Nw ^^^^215b 1/8 + \__um_define_active_frac:Nw ^^^^2150 1/7 + \__um_define_active_frac:Nw ^^^^2159 1/6 + \__um_define_active_frac:Nw ^^^^2155 1/5 + \__um_define_active_frac:Nw ^^^^00bc 1/4 + \__um_define_active_frac:Nw ^^^^2153 1/3 + \__um_define_active_frac:Nw ^^^^215c 3/8 + \__um_define_active_frac:Nw ^^^^2156 2/5 + \__um_define_active_frac:Nw ^^^^00bd 1/2 + \__um_define_active_frac:Nw ^^^^2157 3/5 + \__um_define_active_frac:Nw ^^^^215d 5/8 + \__um_define_active_frac:Nw ^^^^2154 2/3 + \__um_define_active_frac:Nw ^^^^00be 3/4 + \__um_define_active_frac:Nw ^^^^2158 4/5 + \__um_define_active_frac:Nw ^^^^215a 5/6 + \__um_define_active_frac:Nw ^^^^215e 7/8 \group_end: } -\um_setup_active_frac: +\__um_setup_active_frac: \def\to{\rightarrow} \def\le{\leq} \def\ge{\geq} @@ -2668,7 +1774,16 @@ \def\longdivision{\longdivisionsign} \def\backepsilon{\upbackepsilon} \def\eth{\matheth} -\def\smallint{{\textstyle\int}\limits} +\def\dbkarow {\dbkarrow} +\def\drbkarow{\drbkarrow} +\def\hksearow{\hksearrow} +\def\hkswarow{\hkswarrow} +\def\smallint{\mathop{\textstyle\int}\limits} +\cs_set_eq:NN \latexe_underbar:n \underbar +\renewcommand\underbar + { + \mode_if_math:TF \mathunderbar \latexe_underbar:n + } \@ifpackageloaded{amsmath} { % define their own colon, perhaps I should just steal it. (It does look much better.) @@ -2676,23 +1791,65 @@ { \cs_set_protected:Npn \colon { - \bool_if:NTF \g_um_literal_colon_bool {:} { \mathpunct{:} } + \bool_if:NTF \g__um_literal_colon_bool {:} { \mathpunct{:} } } } -\def\mathrm{\mathup} \let\mathfence\mathord \def\digamma{\updigamma} \def\Digamma{\upDigamma} -\def\operator@font{\um_switchto_mathup:} -\cs_new_protected_nopar:Nn \um_check_and_fix:NNnnnn +\cs_set:Npn \| {\Vert} +\cs_set:Npn \mathellipsis {\mathinner{\unicodeellipsis}} +\cs_set:Npn \cdots {\mathinner{\unicodecdots}} +\cs_set_eq:NN \__um_text_slash: \slash +\cs_set_protected:Npn \slash + { + \mode_if_math:TF {\mathslash} {\__um_text_slash:} + } +\cs_new:Npn \__um_newnot:N #1 + { + \tl_set:Nx \l_not_token_name_tl { \token_to_str:N #1 } + \exp_args:Nx \tl_if_empty:nF { \tl_tail:V \l_not_token_name_tl } + { + \tl_set:Nx \l_not_token_name_tl { \tl_tail:V \l_not_token_name_tl } + } + \cs_if_exist:cTF { n \l_not_token_name_tl } + { + \use:c { n \l_not_token_name_tl } + } + { + \cs_if_exist:cTF { not \l_not_token_name_tl } + { + \use:c { not \l_not_token_name_tl } + } + { + \__um_oldnot: #1 + } + } + } +\cs_set_eq:NN \__um_oldnot: \not +\AtBeginDocument{\cs_set_eq:NN \not \__um_newnot:N} +\cs_new_protected_nopar:Nn \__um_setup_negations: + { + \cs_gset:cpn { not= } { \neq } + \cs_gset:cpn { not< } { \nless } + \cs_gset:cpn { not> } { \ngtr } + \cs_gset:Npn \ngets { \nleftarrow } + \cs_gset:Npn \nsimeq { \nsime } + \cs_gset:Npn \nequal { \ne } + \cs_gset:Npn \nle { \nleq } + \cs_gset:Npn \nge { \ngeq } + \cs_gset:Npn \ngreater { \ngtr } + \cs_gset:Npn \nforksnot { \forks } + } +\cs_new_protected_nopar:Nn \__um_check_and_fix:NNnnnn { \cs_if_exist:NT #1 { \token_if_macro:NTF #1 { \group_begin: - #2 \um_tmpa:w #3 { #4 } - \cs_if_eq:NNTF #1 \um_tmpa:w + #2 \__um_tmpa:w #3 { #4 } + \cs_if_eq:NNTF #1 \__um_tmpa:w { \msg_info:nnx { unicode-math } { patch-macro } { \token_to_str:N #1 } @@ -2703,7 +1860,7 @@ { \msg_warning:nnxxx { unicode-math } { wrong-meaning } { \token_to_str:N #1 } { \token_to_meaning:N #1 } - { \token_to_meaning:N \um_tmpa:w } + { \token_to_meaning:N \__um_tmpa:w } \group_end: } } @@ -2713,21 +1870,17 @@ } } } -\cs_new_protected_nopar:Nn \um_check_and_fix:NNnnn +\cs_new_protected_nopar:Nn \__um_check_and_fix:NNnnn { - \um_check_and_fix:NNnnnn #1 #2 { #3 } { #4 } { #5 } { #5 } + \__um_check_and_fix:NNnnnn #1 #2 { #3 } { #4 } { #5 } { #5 } } -\cs_new_protected_nopar:Nn \um_check_and_fix_luatex:NNnnn +\cs_new_protected_nopar:Nn \__um_check_and_fix_luatex:NNnnn { - \luatex_if_engine:T - { - \um_check_and_fix:NNnnn #1 #2 { #3 } { #4 } { #5 } - } } -\cs_generate_variant:Nn \um_check_and_fix_luatex:NNnnn { c } +\cs_generate_variant:Nn \__um_check_and_fix_luatex:NNnnn { c } \AtEndOfPackageFile * {url} { - \tl_put_left:Nn \Url@FormatString { \um_switchto_mathup: } + \tl_put_left:Nn \Url@FormatString { \__um_switchto_up: } \tl_put_right:Nn \UrlSpecials { \do\`{\mathchar`\`} @@ -2752,7 +1905,7 @@ \setbox\z@\hbox{$($}%) \ht\Mathstrutbox@\ht\z@ \dp\Mathstrutbox@\dp\z@ } - \um_check_and_fix:NNnnn \subarray \cs_set:Npn { #1 } + \__um_check_and_fix:NNnnn \subarray \cs_set:Npn { #1 } { \vcenter \bgroup @@ -2778,10 +1931,10 @@ \default@tag \skip_set:Nn \baselineskip { - \um_stack_num_up:N \scriptstyle - + \um_stack_denom_down:N \scriptstyle + \__um_stack_num_up:N \scriptstyle + + \__um_stack_denom_down:N \scriptstyle } - \lineskip \um_stack_vgap:N \scriptstyle + \lineskip \__um_stack_vgap:N \scriptstyle \lineskiplimit \lineskip \ialign \c_group_begin_token @@ -2794,7 +1947,7 @@ \hfil \crcr } - \um_check_and_fix_luatex:NNnnn \plainroot@ \cs_set_nopar:Npn { #1 \of #2 } + \__um_check_and_fix_luatex:NNnnn \plainroot@ \cs_set_nopar:Npn { #1 \of #2 } { \setbox \rootbox \hbox { @@ -2814,7 +1967,7 @@ && \int_compare_p:nNn { \leftroot@ } = { \c_zero } } { - \luatexUroot \l_um_radical_sqrt_tl { #1 } { #2 } + \luatexUroot \l__um_radical_sqrt_tl { #1 } { #2 } } { \hbox_set:Nn \rootbox @@ -2832,7 +1985,7 @@ } \c_group_end_token } - \um_check_and_fix:NNnnnn \r@@t \cs_set_nopar:Npn { #1 #2 } + \__um_check_and_fix:NNnnnn \r@@t \cs_set_nopar:Npn { #1 #2 } { \setboxz@h { $ \m@th #1 \sqrtsign { #2 } $ } \dimen@ \ht\z@ @@ -2855,7 +2008,7 @@ \mskip \uproot@ mu \c_math_toggle_token } - \luatexUroot \l_um_radical_sqrt_tl + \luatexUroot \l__um_radical_sqrt_tl { \box_move_up:nn { \box_wd:N \l_tmpa_box } { @@ -2890,22 +2043,22 @@ \c_math_toggle_token } \mkern -\leftroot@ mu - \um_mathstyle_scale:Nnn #1 { \kern } + \__um_mathstyle_scale:Nnn #1 { \kern } { - \fontdimen 63 \l_um_font + \fontdimen 63 \l__um_font } \box_move_up:nn { \box_wd:N \l_tmpb_box + (\box_ht:N \l_tmpa_box - \box_dp:N \l_tmpa_box) - * \number \fontdimen 65 \l_um_font / 100 + * \number \fontdimen 65 \l__um_font / 100 } { \box_use:N \rootbox } - \um_mathstyle_scale:Nnn #1 { \kern } + \__um_mathstyle_scale:Nnn #1 { \kern } { - \fontdimen 64 \l_um_font + \fontdimen 64 \l__um_font } \mkern \leftroot@ mu \box_use_clear:N \l_tmpa_box @@ -2926,105 +2079,10 @@ \mathcode`\:"603A\scan_stop: } } -\cs_set:Npn \| {\Vert} -\cs_set:Npn \mathellipsis {\mathinner{\unicodeellipsis}} -\cs_set:Npn \cdots {\mathinner{\unicodecdots}} -\cs_new_protected_nopar:Nn \um_setup_accents: - { - \cs_gset_protected_nopar:Npx \widehat - { - \um_accent:nnn {} { \um_symfont_tl } { "0302 } - } - \cs_gset_protected_nopar:Npx \widetilde - { - \um_accent:nnn {} { \um_symfont_tl } { "0303 } - } - \cs_gset_protected_nopar:Npx \overleftarrow - { - \um_accent:nnn {} { \um_symfont_tl } { "20D6 } - } - \cs_gset_protected_nopar:Npx \overrightarrow - { - \um_accent:nnn {} { \um_symfont_tl } { "20D7 } - } - \cs_gset_protected_nopar:Npx \overleftrightarrow - { - \um_accent:nnn {} { \um_symfont_tl } { "20E1 } - } - \cs_gset_protected_nopar:Npx \wideutilde - { - \um_accent:nnn {bottom} { \um_symfont_tl } { "0330 } - } - \cs_gset_protected_nopar:Npx \underrightharpoondown - { - \um_accent:nnn {bottom} { \um_symfont_tl } { "20EC } - } - \cs_gset_protected_nopar:Npx \underleftharpoondown - { - \um_accent:nnn {bottom} { \um_symfont_tl } { "20ED } - } - \cs_gset_protected_nopar:Npx \underleftarrow - { - \um_accent:nnn {bottom} { \um_symfont_tl } { "20EE } - } - \cs_gset_protected_nopar:Npx \underrightarrow - { - \um_accent:nnn {bottom} { \um_symfont_tl } { "20EF } - } - \cs_gset_protected_nopar:Npx \underleftrightarrow - { - \um_accent:nnn {bottom} { \um_symfont_tl } { "034D } - } - } -\cs_set_eq:NN \um_text_slash: \slash -\cs_set_protected:Npn \slash - { - \mode_if_math:TF {\mathslash} {\um_text_slash:} - } -\tl_new:N \l_not_token_name_tl - -\cs_new:Npn \not_newnot:N #1 - { - \tl_set:Nx \l_not_token_name_tl { \token_to_str:N #1 } - \exp_args:Nx \tl_if_empty:nF { \tl_tail:V \l_not_token_name_tl } - { - \tl_set:Nx \l_not_token_name_tl { \tl_tail:V \l_not_token_name_tl } - } - \cs_if_exist:cTF { n \l_not_token_name_tl } - { - \use:c { n \l_not_token_name_tl } - } - { - \cs_if_exist:cTF { not \l_not_token_name_tl } - { - \use:c { not \l_not_token_name_tl } - } - { - \not_oldnot: #1 %\l_not_token_name_tl - } - } - } - -\cs_set_eq:NN \not_oldnot: \not -\cs_set_eq:NN \not \not_newnot:N - -\cs_new_protected_nopar:Nn \um_setup_negations: - { - \cs_gset:cpn { not= } { \neq } - \cs_gset:cpn { not< } { \nless } - \cs_gset:cpn { not> } { \ngtr } - \cs_gset:Npn \ngets { \nleftarrow } - \cs_gset:Npn \nsimeq { \nsime } - \cs_gset:Npn \nequal { \ne } - \cs_gset:Npn \nle { \nleq } - \cs_gset:Npn \nge { \ngeq } - \cs_gset:Npn \ngreater { \ngtr } - \cs_gset:Npn \nforksnot { \forks } - } \AtEndOfPackageFile * { mathtools } { - \newfam \g_um_empty_fam - \um_check_and_fix:NNnnn + \newfam \g__um_empty_fam + \__um_check_and_fix:NNnnn \MT_cramped_internal:Nn \cs_set_nopar:Npn { #1 #2 } { \sbox \z@ @@ -3064,14 +2122,14 @@ \m@th #1 \dim_zero:N \nulldelimiterspace - \XeTeXradical \g_um_empty_fam \c_zero { #2 } + \XeTeXradical \g__um_empty_fam \c_zero { #2 } \c_math_toggle_token \color@endgroup } \box_set_ht:Nn \l_tmpa_box { \box_ht:N \l_tmpa_box - - \um_radical_vgap:N #1 + - \__um_radical_vgap:N #1 } \box_use_clear:N \l_tmpa_box } @@ -3120,4 +2178,3 @@ \RenewDocumentCommand \equalscolon { } { \eqcolon } \RenewDocumentCommand \coloncolonequals { } { \Coloneq } } -\ExplSyntaxOff diff --git a/Master/texmf-dist/tex/latex/unicode-math/unicode-math.sty b/Master/texmf-dist/tex/latex/unicode-math/unicode-math.sty index 87163c8219e..f0422ef27c9 100644 --- a/Master/texmf-dist/tex/latex/unicode-math/unicode-math.sty +++ b/Master/texmf-dist/tex/latex/unicode-math/unicode-math.sty @@ -5,11 +5,13 @@ %% The original source files were: %% %% unicode-math.dtx (with options: `preamble') -%% unicode-math.dtx (with options: `msg') +%% unicode-math-msg.dtx (with options: `msg') +%% unicode-math-usv.dtx (with options: `usv') %% unicode-math.dtx (with options: `load') -%% Copyright 2006-2013 Will Robertson +%% unicode-math-alphabets.dtx (with options: `alphabets') +%% Copyright 2006-2015 Will Robertson %% Copyright 2010-2013 Philipp Stephani -%% Copyright 2012-2013 Khaled Hosny +%% Copyright 2012-2015 Khaled Hosny %% %% This package is free software and may be redistributed and/or modified under %% the conditions of the LaTeX Project Public License, version 1.3c or higher @@ -17,7 +19,7 @@ %% %% This work is "maintained" by Will Robertson. \ProvidesPackage{unicode-math} - [2014/06/30 v0.7f Unicode maths in XeLaTeX and LuaLaTeX] + [2014/07/30 v0.8 Unicode maths in XeLaTeX and LuaLaTeX] \usepackage{ifxetex,ifluatex} \ifxetex \ifdim\number\XeTeXversion\XeTeXrevision in<0.9998in% @@ -39,122 +41,145 @@ Use XeLaTeX or LuaLaTeX instead.% }\@ehd \fi\fi -\RequirePackage{expl3}[2011/07/01] -\RequirePackage{xparse}[2009/08/31] +\RequirePackage{expl3}[2015/03/01] +\RequirePackage{xparse} \RequirePackage{l3keys2e} -\RequirePackage{fontspec}[2010/10/25] +\RequirePackage{fontspec}[2015/03/14] \RequirePackage{catchfile} \RequirePackage{fix-cm} % avoid some warnings -\RequirePackage{filehook}[2011/01/03] -\def\@DeclareMathSizes #1#2#3#4#5{% - \@defaultunits\dimen@ #2pt\relax\@nnil - \if $#3$% - \expandafter\let\csname S@\strip@pt\dimen@\endcsname\math@fontsfalse - \else - \@defaultunits\dimen@ii #3pt\relax\@nnil - \@defaultunits\@tempdima #4pt\relax\@nnil - \@defaultunits\@tempdimb #5pt\relax\@nnil - \toks@{#1}% - \expandafter\xdef\csname S@\strip@pt\dimen@\endcsname{% - \gdef\noexpand\tf@size{\strip@pt\dimen@ii}% - \gdef\noexpand\sf@size{\strip@pt\@tempdima}% - \gdef\noexpand\ssf@size{\strip@pt\@tempdimb}% - \the\toks@ - }% - \fi -} +\RequirePackage{filehook} \ExplSyntaxOn -\cs_generate_variant:Nn \tl_put_right:Nn {cx} -\cs_generate_variant:Nn \seq_if_in:NnTF {NV} -\cs_generate_variant:Nn \prop_gput:Nnn {Nxn} -\cs_generate_variant:Nn \prop_get:NnN {cxN} -\cs_generate_variant:Nn \prop_if_in:NnTF {cx} -\cs_set:Npn \exp_args:NNcc #1#2#3#4 { - \exp_after:wN #1 \exp_after:wN #2 - \cs:w #3 \exp_after:wN \cs_end: - \cs:w #4 \cs_end: -} \cs_generate_variant:Nn \fontspec_set_family:Nnn {Nx} \cs_generate_variant:Nn \fontspec_set_fontface:NNnn {NNx} -\bool_new:N \l_um_ot_math_bool -\bool_new:N \l_um_init_bool -\bool_new:N \l_um_implicit_alph_bool -\bool_new:N \g_um_mainfont_already_set_bool -\bool_new:N \g_um_literal_bool -\bool_new:N \g_um_upLatin_bool -\bool_new:N \g_um_uplatin_bool -\bool_new:N \g_um_upGreek_bool -\bool_new:N \g_um_upgreek_bool -\bool_new:N \g_um_bfliteral_bool -\bool_new:N \g_um_bfupLatin_bool -\bool_new:N \g_um_bfuplatin_bool -\bool_new:N \g_um_bfupGreek_bool -\bool_new:N \g_um_bfupgreek_bool -\bool_new:N \g_um_upsans_bool -\bool_new:N \g_um_sfliteral_bool -\bool_new:N \g_um_upNabla_bool -\bool_new:N \g_um_uppartial_bool -\bool_new:N \g_um_literal_Nabla_bool -\bool_new:N \g_um_literal_partial_bool -\bool_new:N \g_um_texgreek_bool -\bool_set_true:N \g_um_texgreek_bool -\bool_new:N \l_um_smallfrac_bool -\bool_new:N \g_um_literal_colon_bool -\int_new:N \g_um_fam_int -\tl_const:Nn \c_um_math_alphabet_name_latin_tl {Latin,~lowercase} -\tl_const:Nn \c_um_math_alphabet_name_Latin_tl {Latin,~uppercase} -\tl_const:Nn \c_um_math_alphabet_name_greek_tl {Greek,~lowercase} -\tl_const:Nn \c_um_math_alphabet_name_Greek_tl {Greek,~uppercase} -\tl_const:Nn \c_um_math_alphabet_name_num_tl {Numerals} -\tl_const:Nn \c_um_math_alphabet_name_misc_tl {Misc.} -\prg_new_conditional:Nnn \um_glyph_if_exist:n {p,TF,T,F} - { - \etex_iffontchar:D \l_um_font #1 \scan_stop: +\bool_new:N \l__um_ot_math_bool +\bool_new:N \l__um_init_bool +\bool_new:N \l__um_implicit_alph_bool +\bool_new:N \g__um_mainfont_already_set_bool +\bool_new:N \g__um_literal_bool +\bool_new:N \g__um_upLatin_bool +\bool_new:N \g__um_uplatin_bool +\bool_new:N \g__um_upGreek_bool +\bool_new:N \g__um_upgreek_bool +\bool_new:N \g__um_bfliteral_bool +\bool_new:N \g__um_bfupLatin_bool +\bool_new:N \g__um_bfuplatin_bool +\bool_new:N \g__um_bfupGreek_bool +\bool_new:N \g__um_bfupgreek_bool +\bool_new:N \g__um_upsans_bool +\bool_new:N \g__um_sfliteral_bool +\bool_new:N \g__um_upNabla_bool +\bool_new:N \g__um_uppartial_bool +\bool_new:N \g__um_literal_Nabla_bool +\bool_new:N \g__um_literal_partial_bool +\bool_new:N \g__um_texgreek_bool +\bool_set_true:N \g__um_texgreek_bool +\bool_new:N \l__um_smallfrac_bool +\bool_new:N \g__um_literal_colon_bool +\bool_new:N \g__um_mathrm_text_bool +\bool_new:N \g__um_mathit_text_bool +\bool_new:N \g__um_mathbf_text_bool +\bool_new:N \g__um_mathsf_text_bool +\bool_new:N \g__um_mathtt_text_bool +\int_new:N \g__um_fam_int +\tl_const:Nn \c__um_math_alphabet_name_latin_tl {Latin,~lowercase} +\tl_const:Nn \c__um_math_alphabet_name_Latin_tl {Latin,~uppercase} +\tl_const:Nn \c__um_math_alphabet_name_greek_tl {Greek,~lowercase} +\tl_const:Nn \c__um_math_alphabet_name_Greek_tl {Greek,~uppercase} +\tl_const:Nn \c__um_math_alphabet_name_num_tl {Numerals} +\tl_const:Nn \c__um_math_alphabet_name_misc_tl {Misc.} +\tl_new:N \l__um_mathstyle_tl +\tl_new:N \g__um_operator_mathfont_tl +\seq_new:N \l__um_missing_alph_seq +\seq_new:N \l__um_mathalph_seq +\seq_new:N \l__um_char_range_seq +\seq_new:N \l__um_mclass_range_seq +\seq_new:N \l__um_cmd_range_seq +\seq_new:N \g__um_mathclasses_seq +\seq_set_from_clist:Nn \g__um_mathclasses_seq + { + \mathord,\mathalpha,\mathbin,\mathrel,\mathpunct, + \mathop, + \mathopen,\mathclose, + \mathfence,\mathover,\mathunder, + \mathaccent,\mathbotaccent,\mathaccentwide,\mathbotaccentwide + } + +\seq_new:N \g__um_default_mathalph_seq +\seq_new:N \g__um_named_ranges_seq +\seq_new:N \g__um_mathstyles_seq +\muskip_new:N \g__um_primekern_muskip +\muskip_gset:Nn \g__um_primekern_muskip { -\thinmuskip/2 }% arbitrary +\int_new:N \l__um_primecount_int +\prop_new:N \g__um_supers_prop +\prop_new:N \g__um_subs_prop +\tl_new:N \l_not_token_name_tl +\prg_new_conditional:Nnn \__um_glyph_if_exist:n {p,TF,T,F} + { + \etex_iffontchar:D \l__um_font #1 \scan_stop: \prg_return_true: \else: \prg_return_false: \fi: } -\cs_generate_variant:Nn \um_glyph_if_exist_p:n {c} -\cs_generate_variant:Nn \um_glyph_if_exist:nTF {c} -\cs_generate_variant:Nn \um_glyph_if_exist:nT {c} -\cs_generate_variant:Nn \um_glyph_if_exist:nF {c} -\cs_set:Npn \um_set_mathcode:nnnn #1#2#3#4 { +\cs_set:Npn \__um_set_mathcode:nnnn #1#2#3#4 { \Umathcode \int_eval:n {#1} = \mathchar@type#2 \csname sym#3\endcsname \int_eval:n {#4} \scan_stop: } -\cs_set:Npn \um_set_mathcode:nnn #1#2#3 { +\cs_set:Npn \__um_set_mathcode:nnn #1#2#3 { \Umathcode \int_eval:n {#1} = \mathchar@type#2 \csname sym#3\endcsname \int_eval:n {#1} \scan_stop: } -\cs_set:Npn \um_set_mathchar:NNnn #1#2#3#4 { +\cs_set:Npn \__um_set_mathchar:NNnn #1#2#3#4 { \Umathchardef #1 = \mathchar@type#2 \csname sym#3\endcsname \int_eval:n {#4} \scan_stop: } -\cs_new:Nn \um_set_delcode:nnn { +\cs_new:Nn \__um_set_delcode:nnn { \Udelcode#2 = \csname sym#1\endcsname #3 \scan_stop: } -\cs_new:Nn \um_radical:nn { +\cs_new:Nn \__um_radical:nn { \Uradical \csname sym#1\endcsname #2 \scan_stop: } -\cs_new:Nn \um_delimiter:Nnn { +\cs_new:Nn \__um_delimiter:Nnn { \Udelimiter \mathchar@type#1 \csname sym#2\endcsname #3 \scan_stop: } -\cs_new:Nn \um_accent:nnn { +\cs_new:Nn \__um_accent:nnn { \Umathaccent #1~ \mathchar@type\mathaccent \use:c { sym #2 } #3 \scan_stop: } -\cs_generate_variant:Nn \um_set_mathchar:NNnn {c} -\cs_new:Nn \char_gmake_mathactive:N { +\cs_generate_variant:Nn \__um_set_mathchar:NNnn {c} +\cs_new:Nn \__um_char_gmake_mathactive:N + { \global\mathcode `#1 = "8000 \scan_stop: -} -\cs_new:Nn \char_gmake_mathactive:n { + } +\cs_new:Nn \__um_char_gmake_mathactive:n + { \global\mathcode #1 = "8000 \scan_stop: -} + } +\cs_new:Nn \usv_set:nnn + { \tl_set:cn { g__um_#1_#2_usv } {#3} } +\cs_new:Nn \__um_to_usv:nn + { \use:c { g__um_#1_#2_usv } } +\prg_new_conditional:Nnn \__um_usv_if_exist:nn {T,F,TF} + { + \cs_if_exist:cTF { g__um_#1_#2_usv } + \prg_return_true: \prg_return_false: + } \DeclareDocumentCommand \unimathsetup {m} + { \keys_set:nn {unicode-math} {#1} } +\cs_new:Nn \__um_keys_choices:nn { - \keys_set:nn {unicode-math} {#1} + \cs_set:Npn \__um_keys_choices_fn:nn { \__um_keys_choices_aux:nnn {#1} } + \use:x + { + \exp_not:N \keys_define:nn {unicode-math} + { + #1 .choice: , + \__um_tl_map_dbl:nN {#2} \__um_keys_choices_fn:nn + } + } } -\cs_new:Nn \um_tl_map_dbl:nN +\cs_new:Nn \__um_keys_choices_aux:nnn { #1 / #2 .code:n = { \exp_not:n {#3} } , } + +\cs_new:Nn \__um_tl_map_dbl:nN { \__um_tl_map_dbl:Nnn #2 #1 \q_recursion_tail {}{} \q_recursion_stop } @@ -165,145 +190,183 @@ #1 {#2} {#3} \__um_tl_map_dbl:Nnn #1 } -\cs_new:Nn \um_keys_choices:nn +\__um_keys_choices:nn {mathup} { - \cs_set:Npn \um_keys_choices_fn:nn { \um_keys_choices_aux:nnn {#1} } - \use:x - { - \exp_not:N \keys_define:nn {unicode-math} - { - #1 .choice: , - \um_tl_map_dbl:nN {#2} \um_keys_choices_fn:nn - } - } + {sym} { \bool_set_false:N \g__um_mathrm_text_bool } + {text} { \bool_set_true:N \g__um_mathrm_text_bool } } -\cs_new:Nn \um_keys_choices_aux:nnn { #1 / #2 .code:n = { \exp_not:n {#3} } , } -\um_keys_choices:nn {normal-style} +\__um_keys_choices:nn {mathrm} { - {ISO} { - \bool_set_false:N \g_um_literal_bool - \bool_set_false:N \g_um_upGreek_bool - \bool_set_false:N \g_um_upgreek_bool - \bool_set_false:N \g_um_upLatin_bool - \bool_set_false:N \g_um_uplatin_bool } - {TeX} { - \bool_set_false:N \g_um_literal_bool - \bool_set_true:N \g_um_upGreek_bool - \bool_set_false:N \g_um_upgreek_bool - \bool_set_false:N \g_um_upLatin_bool - \bool_set_false:N \g_um_uplatin_bool } - {french} { - \bool_set_false:N \g_um_literal_bool - \bool_set_true:N \g_um_upGreek_bool - \bool_set_true:N \g_um_upgreek_bool - \bool_set_true:N \g_um_upLatin_bool - \bool_set_false:N \g_um_uplatin_bool } + {sym} { \bool_set_false:N \g__um_mathrm_text_bool } + {text} { \bool_set_true:N \g__um_mathrm_text_bool } + } +\__um_keys_choices:nn {mathit} + { + {sym} { \bool_set_false:N \g__um_mathit_text_bool } + {text} { \bool_set_true:N \g__um_mathit_text_bool } + } +\__um_keys_choices:nn {mathbf} + { + {sym} { \bool_set_false:N \g__um_mathbf_text_bool } + {text} { \bool_set_true:N \g__um_mathbf_text_bool } + } +\__um_keys_choices:nn {mathsf} + { + {sym} { \bool_set_false:N \g__um_mathsf_text_bool } + {text} { \bool_set_true:N \g__um_mathsf_text_bool } + } +\__um_keys_choices:nn {mathtt} + { + {sym} { \bool_set_false:N \g__um_mathtt_text_bool } + {text} { \bool_set_true:N \g__um_mathtt_text_bool } + } +\__um_keys_choices:nn {normal-style} + { + {ISO} { + \bool_set_false:N \g__um_literal_bool + \bool_set_false:N \g__um_upGreek_bool + \bool_set_false:N \g__um_upgreek_bool + \bool_set_false:N \g__um_upLatin_bool + \bool_set_false:N \g__um_uplatin_bool + } + {TeX} { + \bool_set_false:N \g__um_literal_bool + \bool_set_true:N \g__um_upGreek_bool + \bool_set_false:N \g__um_upgreek_bool + \bool_set_false:N \g__um_upLatin_bool + \bool_set_false:N \g__um_uplatin_bool + } + {french} { + \bool_set_false:N \g__um_literal_bool + \bool_set_true:N \g__um_upGreek_bool + \bool_set_true:N \g__um_upgreek_bool + \bool_set_true:N \g__um_upLatin_bool + \bool_set_false:N \g__um_uplatin_bool + } {upright} { - \bool_set_false:N \g_um_literal_bool - \bool_set_true:N \g_um_upGreek_bool - \bool_set_true:N \g_um_upgreek_bool - \bool_set_true:N \g_um_upLatin_bool - \bool_set_true:N \g_um_uplatin_bool } + \bool_set_false:N \g__um_literal_bool + \bool_set_true:N \g__um_upGreek_bool + \bool_set_true:N \g__um_upgreek_bool + \bool_set_true:N \g__um_upLatin_bool + \bool_set_true:N \g__um_uplatin_bool + } {literal} { - \bool_set_true:N \g_um_literal_bool } - } -\um_keys_choices:nn {math-style} - { - {ISO} { - \unimathsetup { nabla=upright, partial=italic, - normal-style=ISO, bold-style=ISO, sans-style=italic } } - {TeX} { - \unimathsetup { nabla=upright, partial=italic, - normal-style=TeX, bold-style=TeX, sans-style=upright } } - {french} { - \unimathsetup { nabla=upright, partial=upright, - normal-style=french, bold-style=upright, sans-style=upright } } + \bool_set_true:N \g__um_literal_bool + } + } +\__um_keys_choices:nn {math-style} + { + {ISO} { + \unimathsetup { nabla=upright, partial=italic, + normal-style=ISO, bold-style=ISO, sans-style=italic } + } + {TeX} { + \unimathsetup { nabla=upright, partial=italic, + normal-style=TeX, bold-style=TeX, sans-style=upright } + } + {french} { + \unimathsetup { nabla=upright, partial=upright, + normal-style=french, bold-style=upright, sans-style=upright } + } {upright} { - \unimathsetup { nabla=upright, partial=upright, - normal-style=upright, bold-style=upright, sans-style=upright } } + \unimathsetup { nabla=upright, partial=upright, + normal-style=upright, bold-style=upright, sans-style=upright } + } {literal} { - \unimathsetup { colon=literal, nabla=literal, partial=literal, - normal-style=literal, bold-style=literal, sans-style=literal } } - } -\um_keys_choices:nn {bold-style} - { - {ISO} { - \bool_set_false:N \g_um_bfliteral_bool - \bool_set_false:N \g_um_bfupGreek_bool - \bool_set_false:N \g_um_bfupgreek_bool - \bool_set_false:N \g_um_bfupLatin_bool - \bool_set_false:N \g_um_bfuplatin_bool } - {TeX} { - \bool_set_false:N \g_um_bfliteral_bool - \bool_set_true:N \g_um_bfupGreek_bool - \bool_set_false:N \g_um_bfupgreek_bool - \bool_set_true:N \g_um_bfupLatin_bool - \bool_set_true:N \g_um_bfuplatin_bool } + \unimathsetup { colon=literal, nabla=literal, partial=literal, + normal-style=literal, bold-style=literal, sans-style=literal } + } + } +\__um_keys_choices:nn {bold-style} + { + {ISO} { + \bool_set_false:N \g__um_bfliteral_bool + \bool_set_false:N \g__um_bfupGreek_bool + \bool_set_false:N \g__um_bfupgreek_bool + \bool_set_false:N \g__um_bfupLatin_bool + \bool_set_false:N \g__um_bfuplatin_bool + } + {TeX} { + \bool_set_false:N \g__um_bfliteral_bool + \bool_set_true:N \g__um_bfupGreek_bool + \bool_set_false:N \g__um_bfupgreek_bool + \bool_set_true:N \g__um_bfupLatin_bool + \bool_set_true:N \g__um_bfuplatin_bool + } {upright} { - \bool_set_false:N \g_um_bfliteral_bool - \bool_set_true:N \g_um_bfupGreek_bool - \bool_set_true:N \g_um_bfupgreek_bool - \bool_set_true:N \g_um_bfupLatin_bool - \bool_set_true:N \g_um_bfuplatin_bool } + \bool_set_false:N \g__um_bfliteral_bool + \bool_set_true:N \g__um_bfupGreek_bool + \bool_set_true:N \g__um_bfupgreek_bool + \bool_set_true:N \g__um_bfupLatin_bool + \bool_set_true:N \g__um_bfuplatin_bool + } {literal} { - \bool_set_true:N \g_um_bfliteral_bool } + \bool_set_true:N \g__um_bfliteral_bool + } } -\um_keys_choices:nn {sans-style} +\__um_keys_choices:nn {sans-style} { - {italic} { \bool_set_false:N \g_um_upsans_bool } - {upright} { \bool_set_true:N \g_um_upsans_bool } - {literal} { \bool_set_true:N \g_um_sfliteral_bool } + {italic} { \bool_set_false:N \g__um_upsans_bool } + {upright} { \bool_set_true:N \g__um_upsans_bool } + {literal} { \bool_set_true:N \g__um_sfliteral_bool } } -\um_keys_choices:nn {nabla} +\__um_keys_choices:nn {nabla} { - {upright} { \bool_set_false:N \g_um_literal_Nabla_bool - \bool_set_true:N \g_um_upNabla_bool } - {italic} { \bool_set_false:N \g_um_literal_Nabla_bool - \bool_set_false:N \g_um_upNabla_bool } - {literal} { \bool_set_true:N \g_um_literal_Nabla_bool } + {upright} { + \bool_set_false:N \g__um_literal_Nabla_bool + \bool_set_true:N \g__um_upNabla_bool + } + {italic} { + \bool_set_false:N \g__um_literal_Nabla_bool + \bool_set_false:N \g__um_upNabla_bool + } + {literal} { \bool_set_true:N \g__um_literal_Nabla_bool } } -\um_keys_choices:nn {partial} +\__um_keys_choices:nn {partial} { - {upright} { \bool_set_false:N \g_um_literal_partial_bool - \bool_set_true:N \g_um_uppartial_bool } - {italic} { \bool_set_false:N \g_um_literal_partial_bool - \bool_set_false:N \g_um_uppartial_bool } - {literal} { \bool_set_true:N \g_um_literal_partial_bool } + {upright} { + \bool_set_false:N \g__um_literal_partial_bool + \bool_set_true:N \g__um_uppartial_bool + } + {italic} { + \bool_set_false:N \g__um_literal_partial_bool + \bool_set_false:N \g__um_uppartial_bool + } + {literal} { \bool_set_true:N \g__um_literal_partial_bool } } -\um_keys_choices:nn {vargreek-shape} +\__um_keys_choices:nn {vargreek-shape} { - {unicode} {\bool_set_false:N \g_um_texgreek_bool} - {TeX} {\bool_set_true:N \g_um_texgreek_bool} + {unicode} { \bool_set_false:N \g__um_texgreek_bool } + {TeX} { \bool_set_true:N \g__um_texgreek_bool } } -\um_keys_choices:nn {colon} +\__um_keys_choices:nn {colon} { - {literal} {\bool_set_true:N \g_um_literal_colon_bool} - {TeX} {\bool_set_false:N \g_um_literal_colon_bool} + {literal} { \bool_set_true:N \g__um_literal_colon_bool } + {TeX} { \bool_set_false:N \g__um_literal_colon_bool } } -\um_keys_choices:nn {slash-delimiter} +\__um_keys_choices:nn {slash-delimiter} { - {ascii} {\tl_set:Nn \g_um_slash_delimiter_usv {"002F}} - {frac} {\tl_set:Nn \g_um_slash_delimiter_usv {"2044}} - {div} {\tl_set:Nn \g_um_slash_delimiter_usv {"2215}} + {ascii} { \tl_set:Nn \g__um_slash_delimiter_usv {"002F} } + {frac} { \tl_set:Nn \g__um_slash_delimiter_usv {"2044} } + {div} { \tl_set:Nn \g__um_slash_delimiter_usv {"2215} } } -\um_keys_choices:nn {active-frac} +\__um_keys_choices:nn {active-frac} { {small} { \cs_if_exist:NTF \tfrac + { \bool_set_true:N \l__um_smallfrac_bool } { - \bool_set_true:N \l_um_smallfrac_bool - }{ - \um_warning:n {no-tfrac} - \bool_set_false:N \l_um_smallfrac_bool + \__um_warning:n {no-tfrac} + \bool_set_false:N \l__um_smallfrac_bool } - \use:c {um_setup_active_frac:} + \use:c {__um_setup_active_frac:} } {normalsize} { - \bool_set_false:N \l_um_smallfrac_bool - \use:c {um_setup_active_frac:} + \bool_set_false:N \l__um_smallfrac_bool + \use:c {__um_setup_active_frac:} } } \keys_define:nn {unicode-math} @@ -314,7 +377,7 @@ { \msg_redirect_name:nnn { unicode-math } { ##1 } { none } } } } -\um_keys_choices:nn {trace} +\__um_keys_choices:nn {trace} { {on} {} % default {debug} { \msg_redirect_module:nnn { unicode-math } { log } { warning } } @@ -323,11 +386,19 @@ \unimathsetup {math-style=TeX} \unimathsetup {slash-delimiter=ascii} \unimathsetup {trace=off} +\unimathsetup {mathrm=text,mathit=text,mathbf=text,mathsf=text,mathtt=text} \cs_if_exist:NT \tfrac { \unimathsetup {active-frac=small} } \ProcessKeysOptions {unicode-math} -\cs_new:Npn \um_warning:n { \msg_warning:nn {unicode-math} } -\cs_new:Npn \um_log:n { \msg_log:nn {unicode-math} } -\cs_new:Npn \um_log:nx { \msg_log:nnx {unicode-math} } +\cs_new:Nn \unimath_get_mathstyle: + { + \tl_use:N \l__um_mathstyle_tl + } + +\cs_new:Npn \__um_error:n { \msg_error:nn {unicode-math} } +\cs_new:Npn \__um_warning:n { \msg_warning:nn {unicode-math} } +\cs_new:Npn \__um_warning:nnn { \msg_warning:nnxx {unicode-math} } +\cs_new:Npn \__um_log:n { \msg_log:nn {unicode-math} } +\cs_new:Npn \__um_log:nx { \msg_log:nnx {unicode-math} } \msg_new:nnn {unicode-math} {no-tfrac} { Small~ fraction~ command~ \protect\tfrac\ not~ defined.\\ @@ -335,7 +406,7 @@ } \msg_new:nnn {unicode-math} {default-math-font} { - Defining~ the~ default~ maths~ font~ as~ '\l_um_fontname_tl'. + Defining~ the~ default~ maths~ font~ as~ '\l__um_fontname_tl'. } \msg_new:nnn {unicode-math} {setup-implicit} { @@ -353,12 +424,21 @@ { Setup~ alphabet:~ #1. } +\msg_new:nnn {unicode-math} {no-alphabet} +{ + I~ am~ trying~ to~ set~ up~ alphabet~"#1"~ but~ there~ are~ no~ configuration~ settings~ for~ it. + See~ file~ "unicode-math-alphabets.dtx". +} +\msg_new:nnn { unicode-math } { no-named-range } + { + I~ am~ trying~ to~ define~ new~ alphabet~ "#2"~ in~ range~ "#1",~ but~ range~ "#1"~ hasn't~ been~ defined~ yet. + } \msg_new:nnn { unicode-math } { missing-alphabets } - { - Missing~math~alphabets~in~font~ "\fontname\l_um_font" \\ \\ - \seq_map_function:NN \l_um_missing_alph_seq \um_print_indent:n - } -\cs_new:Nn \um_print_indent:n { \space\space\space\space #1 \\ } + { + Missing~math~alphabets~in~font~ "\fontname\l__um_font" \\ \\ + \seq_map_function:NN \l__um_missing_alph_seq \__um_print_indent:n + } +\cs_new:Nn \__um_print_indent:n { \space\space\space\space #1 \\ } \msg_new:nnn {unicode-math} {macro-expected} { I've~ expected~ that~ #1~ is~ a~ macro,~ but~ it~ isn't. @@ -405,5 +485,1075 @@ or~ \token_to_str:N \doublecolonsep \c_space_tl won't~ have~ any~ effect~ on~ the~ re-defined~ commands. } -\luatex_if_engine:T { \RequirePackage{unicode-math-luatex} \endinput } -\xetex_if_engine:T { \RequirePackage{unicode-math-xetex} \endinput } + +\usv_set:nnn {normal} {num} {48} +\usv_set:nnn {normal} {Latin}{"1D434} +\usv_set:nnn {normal} {latin}{"1D44E} +\usv_set:nnn {normal} {Greek}{"1D6E2} +\usv_set:nnn {normal} {greek}{"1D6FC} +\usv_set:nnn {normal}{varTheta} {"1D6F3} +\usv_set:nnn {normal}{varepsilon}{"1D716} +\usv_set:nnn {normal}{vartheta} {"1D717} +\usv_set:nnn {normal}{varkappa} {"1D718} +\usv_set:nnn {normal}{varphi} {"1D719} +\usv_set:nnn {normal}{varrho} {"1D71A} +\usv_set:nnn {normal}{varpi} {"1D71B} +\usv_set:nnn {normal} {Nabla}{"1D6FB} +\usv_set:nnn {normal} {partial}{"1D715} + +\usv_set:nnn {up} {num} {48} +\usv_set:nnn {up} {Latin}{65} +\usv_set:nnn {up} {latin}{97} +\usv_set:nnn {up} {Greek}{"391} +\usv_set:nnn {up} {greek}{"3B1} +\usv_set:nnn {it} {Latin}{"1D434} +\usv_set:nnn {it} {latin}{"1D44E} +\usv_set:nnn {it} {Greek}{"1D6E2} +\usv_set:nnn {it} {greek}{"1D6FC} +\usv_set:nnn {bb} {num} {"1D7D8} +\usv_set:nnn {bb} {Latin}{"1D538} +\usv_set:nnn {bb} {latin}{"1D552} +\usv_set:nnn {scr} {Latin}{"1D49C} +\usv_set:nnn {cal} {Latin}{"1D49C} +\usv_set:nnn {scr} {latin}{"1D4B6} +\usv_set:nnn {frak}{Latin}{"1D504} +\usv_set:nnn {frak}{latin}{"1D51E} +\usv_set:nnn {sf} {num} {"1D7E2} +\usv_set:nnn {sfup}{num} {"1D7E2} +\usv_set:nnn {sfit}{num} {"1D7E2} +\usv_set:nnn {sfup}{Latin}{"1D5A0} +\usv_set:nnn {sf} {Latin}{"1D5A0} +\usv_set:nnn {sfup}{latin}{"1D5BA} +\usv_set:nnn {sf} {latin}{"1D5BA} +\usv_set:nnn {sfit}{Latin}{"1D608} +\usv_set:nnn {sfit}{latin}{"1D622} +\usv_set:nnn {tt} {num} {"1D7F6} +\usv_set:nnn {tt} {Latin}{"1D670} +\usv_set:nnn {tt} {latin}{"1D68A} +\usv_set:nnn {bf} {num} {"1D7CE} +\usv_set:nnn {bfup} {num} {"1D7CE} +\usv_set:nnn {bfit} {num} {"1D7CE} +\usv_set:nnn {bfup} {Latin}{"1D400} +\usv_set:nnn {bfup} {latin}{"1D41A} +\usv_set:nnn {bfup} {Greek}{"1D6A8} +\usv_set:nnn {bfup} {greek}{"1D6C2} +\usv_set:nnn {bfit} {Latin}{"1D468} +\usv_set:nnn {bfit} {latin}{"1D482} +\usv_set:nnn {bfit} {Greek}{"1D71C} +\usv_set:nnn {bfit} {greek}{"1D736} +\usv_set:nnn {bffrak}{Latin}{"1D56C} +\usv_set:nnn {bffrak}{latin}{"1D586} +\usv_set:nnn {bfscr} {Latin}{"1D4D0} +\usv_set:nnn {bfcal} {Latin}{"1D4D0} +\usv_set:nnn {bfscr} {latin}{"1D4EA} +\usv_set:nnn {bfsf} {num} {"1D7EC} +\usv_set:nnn {bfsfup}{num} {"1D7EC} +\usv_set:nnn {bfsfit}{num} {"1D7EC} +\usv_set:nnn {bfsfup}{Latin}{"1D5D4} +\usv_set:nnn {bfsfup}{latin}{"1D5EE} +\usv_set:nnn {bfsfup}{Greek}{"1D756} +\usv_set:nnn {bfsfup}{greek}{"1D770} +\usv_set:nnn {bfsfit}{Latin}{"1D63C} +\usv_set:nnn {bfsfit}{latin}{"1D656} +\usv_set:nnn {bfsfit}{Greek}{"1D790} +\usv_set:nnn {bfsfit}{greek}{"1D7AA} +\usv_set:nnn {bfsf}{Latin}{ \bool_if:NTF \g__um_upLatin_bool \g__um_bfsfup_Latin_usv \g__um_bfsfit_Latin_usv } +\usv_set:nnn {bfsf}{latin}{ \bool_if:NTF \g__um_uplatin_bool \g__um_bfsfup_latin_usv \g__um_bfsfit_latin_usv } +\usv_set:nnn {bfsf}{Greek}{ \bool_if:NTF \g__um_upGreek_bool \g__um_bfsfup_Greek_usv \g__um_bfsfit_Greek_usv } +\usv_set:nnn {bfsf}{greek}{ \bool_if:NTF \g__um_upgreek_bool \g__um_bfsfup_greek_usv \g__um_bfsfit_greek_usv } +\usv_set:nnn {bf} {Latin}{ \bool_if:NTF \g__um_bfupLatin_bool \g__um_bfup_Latin_usv \g__um_bfit_Latin_usv } +\usv_set:nnn {bf} {latin}{ \bool_if:NTF \g__um_bfuplatin_bool \g__um_bfup_latin_usv \g__um_bfit_latin_usv } +\usv_set:nnn {bf} {Greek}{ \bool_if:NTF \g__um_bfupGreek_bool \g__um_bfup_Greek_usv \g__um_bfit_Greek_usv } +\usv_set:nnn {bf} {greek}{ \bool_if:NTF \g__um_bfupgreek_bool \g__um_bfup_greek_usv \g__um_bfit_greek_usv } +\usv_set:nnn {up}{varTheta} {"3F4} +\usv_set:nnn {up}{Digamma} {"3DC} +\usv_set:nnn {up}{varepsilon}{"3F5} +\usv_set:nnn {up}{vartheta} {"3D1} +\usv_set:nnn {up}{varkappa} {"3F0} +\usv_set:nnn {up}{varphi} {"3D5} +\usv_set:nnn {up}{varrho} {"3F1} +\usv_set:nnn {up}{varpi} {"3D6} +\usv_set:nnn {up}{digamma} {"3DD} +\usv_set:nnn {bfup}{varTheta} {"1D6B9} +\usv_set:nnn {bfup}{Digamma} {"1D7CA} +\usv_set:nnn {bfup}{varepsilon}{"1D6DC} +\usv_set:nnn {bfup}{vartheta} {"1D6DD} +\usv_set:nnn {bfup}{varkappa} {"1D6DE} +\usv_set:nnn {bfup}{varphi} {"1D6DF} +\usv_set:nnn {bfup}{varrho} {"1D6E0} +\usv_set:nnn {bfup}{varpi} {"1D6E1} +\usv_set:nnn {bfup}{digamma} {"1D7CB} +\usv_set:nnn {it}{varTheta} {"1D6F3} +\usv_set:nnn {it}{varepsilon}{"1D716} +\usv_set:nnn {it}{vartheta} {"1D717} +\usv_set:nnn {it}{varkappa} {"1D718} +\usv_set:nnn {it}{varphi} {"1D719} +\usv_set:nnn {it}{varrho} {"1D71A} +\usv_set:nnn {it}{varpi} {"1D71B} +\usv_set:nnn {bfit}{varTheta} {"1D72D} +\usv_set:nnn {bfit}{varepsilon}{"1D750} +\usv_set:nnn {bfit}{vartheta} {"1D751} +\usv_set:nnn {bfit}{varkappa} {"1D752} +\usv_set:nnn {bfit}{varphi} {"1D753} +\usv_set:nnn {bfit}{varrho} {"1D754} +\usv_set:nnn {bfit}{varpi} {"1D755} +\usv_set:nnn {bfsfup}{varTheta} {"1D767} +\usv_set:nnn {bfsfup}{varepsilon}{"1D78A} +\usv_set:nnn {bfsfup}{vartheta} {"1D78B} +\usv_set:nnn {bfsfup}{varkappa} {"1D78C} +\usv_set:nnn {bfsfup}{varphi} {"1D78D} +\usv_set:nnn {bfsfup}{varrho} {"1D78E} +\usv_set:nnn {bfsfup}{varpi} {"1D78F} +\usv_set:nnn {bfsfit}{varTheta} {"1D7A1} +\usv_set:nnn {bfsfit}{varepsilon}{"1D7C4} +\usv_set:nnn {bfsfit}{vartheta} {"1D7C5} +\usv_set:nnn {bfsfit}{varkappa} {"1D7C6} +\usv_set:nnn {bfsfit}{varphi} {"1D7C7} +\usv_set:nnn {bfsfit}{varrho} {"1D7C8} +\usv_set:nnn {bfsfit}{varpi} {"1D7C9} +\usv_set:nnn {up} {Nabla}{"02207} +\usv_set:nnn {it} {Nabla}{"1D6FB} +\usv_set:nnn {bfup} {Nabla}{"1D6C1} +\usv_set:nnn {bfit} {Nabla}{"1D735} +\usv_set:nnn {bfsfup}{Nabla}{"1D76F} +\usv_set:nnn {bfsfit}{Nabla}{"1D7A9} +\usv_set:nnn {up} {partial}{"02202} +\usv_set:nnn {it} {partial}{"1D715} +\usv_set:nnn {bfup} {partial}{"1D6DB} +\usv_set:nnn {bfit} {partial}{"1D74F} +\usv_set:nnn {bfsfup}{partial}{"1D789} +\usv_set:nnn {bfsfit}{partial}{"1D7C3} +\usv_set:nnn {up}{B}{`\B} +\usv_set:nnn {up}{C}{`\C} +\usv_set:nnn {up}{D}{`\D} +\usv_set:nnn {up}{E}{`\E} +\usv_set:nnn {up}{F}{`\F} +\usv_set:nnn {up}{H}{`\H} +\usv_set:nnn {up}{I}{`\I} +\usv_set:nnn {up}{L}{`\L} +\usv_set:nnn {up}{M}{`\M} +\usv_set:nnn {up}{N}{`\N} +\usv_set:nnn {up}{P}{`\P} +\usv_set:nnn {up}{Q}{`\Q} +\usv_set:nnn {up}{R}{`\R} +\usv_set:nnn {up}{Z}{`\Z} +\usv_set:nnn {it}{B}{"1D435} +\usv_set:nnn {it}{C}{"1D436} +\usv_set:nnn {it}{D}{"1D437} +\usv_set:nnn {it}{E}{"1D438} +\usv_set:nnn {it}{F}{"1D439} +\usv_set:nnn {it}{H}{"1D43B} +\usv_set:nnn {it}{I}{"1D43C} +\usv_set:nnn {it}{L}{"1D43F} +\usv_set:nnn {it}{M}{"1D440} +\usv_set:nnn {it}{N}{"1D441} +\usv_set:nnn {it}{P}{"1D443} +\usv_set:nnn {it}{Q}{"1D444} +\usv_set:nnn {it}{R}{"1D445} +\usv_set:nnn {it}{Z}{"1D44D} +\usv_set:nnn {up}{d}{`\d} +\usv_set:nnn {up}{e}{`\e} +\usv_set:nnn {up}{g}{`\g} +\usv_set:nnn {up}{h}{`\h} +\usv_set:nnn {up}{i}{`\i} +\usv_set:nnn {up}{j}{`\j} +\usv_set:nnn {up}{o}{`\o} +\usv_set:nnn {it}{d}{"1D451} +\usv_set:nnn {it}{e}{"1D452} +\usv_set:nnn {it}{g}{"1D454} +\usv_set:nnn {it}{h}{"0210E} +\usv_set:nnn {it}{i}{"1D456} +\usv_set:nnn {it}{j}{"1D457} +\usv_set:nnn {it}{o}{"1D45C} +\usv_set:nnn {bb} {h}{"1D559} +\usv_set:nnn {tt} {h}{"1D691} +\usv_set:nnn {scr} {h}{"1D4BD} +\usv_set:nnn {frak} {h}{"1D525} +\usv_set:nnn {bfup} {h}{"1D421} +\usv_set:nnn {bfit} {h}{"1D489} +\usv_set:nnn {sfup} {h}{"1D5C1} +\usv_set:nnn {sfit} {h}{"1D629} +\usv_set:nnn {bffrak}{h}{"1D58D} +\usv_set:nnn {bfscr} {h}{"1D4F1} +\usv_set:nnn {bfsfup}{h}{"1D5F5} +\usv_set:nnn {bfsfit}{h}{"1D65D} +\usv_set:nnn {up}{dotlessi}{"00131} +\usv_set:nnn {up}{dotlessj}{"00237} +\usv_set:nnn {it}{dotlessi}{"1D6A4} +\usv_set:nnn {it}{dotlessj}{"1D6A5} +\usv_set:nnn {bb}{C}{"2102} +\usv_set:nnn {bb}{H}{"210D} +\usv_set:nnn {bb}{N}{"2115} +\usv_set:nnn {bb}{P}{"2119} +\usv_set:nnn {bb}{Q}{"211A} +\usv_set:nnn {bb}{R}{"211D} +\usv_set:nnn {bb}{Z}{"2124} +\usv_set:nnn {up}{Pi} {"003A0} +\usv_set:nnn {up}{pi} {"003C0} +\usv_set:nnn {up}{Gamma} {"00393} +\usv_set:nnn {up}{gamma} {"003B3} +\usv_set:nnn {up}{summation}{"02211} +\usv_set:nnn {it}{Pi} {"1D6F1} +\usv_set:nnn {it}{pi} {"1D70B} +\usv_set:nnn {it}{Gamma} {"1D6E4} +\usv_set:nnn {it}{gamma} {"1D6FE} +\usv_set:nnn {bb}{Pi} {"0213F} +\usv_set:nnn {bb}{pi} {"0213C} +\usv_set:nnn {bb}{Gamma} {"0213E} +\usv_set:nnn {bb}{gamma} {"0213D} +\usv_set:nnn {bb}{summation}{"02140} +\usv_set:nnn {bbit}{D}{"2145} +\usv_set:nnn {bbit}{d}{"2146} +\usv_set:nnn {bbit}{e}{"2147} +\usv_set:nnn {bbit}{i}{"2148} +\usv_set:nnn {bbit}{j}{"2149} +\usv_set:nnn {scr}{B}{"212C} +\usv_set:nnn {scr}{E}{"2130} +\usv_set:nnn {scr}{F}{"2131} +\usv_set:nnn {scr}{H}{"210B} +\usv_set:nnn {scr}{I}{"2110} +\usv_set:nnn {scr}{L}{"2112} +\usv_set:nnn {scr}{M}{"2133} +\usv_set:nnn {scr}{R}{"211B} +\usv_set:nnn {scr}{e}{"212F} +\usv_set:nnn {scr}{g}{"210A} +\usv_set:nnn {scr}{o}{"2134} +\usv_set:nnn {cal}{B}{"212C} +\usv_set:nnn {cal}{E}{"2130} +\usv_set:nnn {cal}{F}{"2131} +\usv_set:nnn {cal}{H}{"210B} +\usv_set:nnn {cal}{I}{"2110} +\usv_set:nnn {cal}{L}{"2112} +\usv_set:nnn {cal}{M}{"2133} +\usv_set:nnn {cal}{R}{"211B} +\usv_set:nnn {frak}{C}{"212D} +\usv_set:nnn {frak}{H}{"210C} +\usv_set:nnn {frak}{I}{"2111} +\usv_set:nnn {frak}{R}{"211C} +\usv_set:nnn {frak}{Z}{"2128} +\luatex_if_engine:T { \RequirePackage{unicode-math-luatex} } +\xetex_if_engine:T { \RequirePackage{unicode-math-xetex} } +\__um_new_alphabet_config:nnn {up} {num} + { + \__um_set_normal_numbers:nn {up} {#1} + \__um_set_mathalphabet_numbers:nnn {up} {up} {#1} + } + +\__um_new_alphabet_config:nnn {up} {Latin} + { + \bool_if:NTF \g__um_literal_bool { \__um_set_normal_Latin:nn {up} {#1} } + { + \bool_if:NT \g__um_upLatin_bool { \__um_set_normal_Latin:nn {up,it} {#1} } + } + \__um_set_mathalphabet_Latin:nnn {up} {up,it} {#1} + \__um_set_mathalphabet_Latin:nnn {literal} {up} {up} + \__um_set_mathalphabet_Latin:nnn {literal} {it} {it} + } + +\__um_new_alphabet_config:nnn {up} {latin} + { + \bool_if:NTF \g__um_literal_bool { \__um_set_normal_latin:nn {up} {#1} } + { + \bool_if:NT \g__um_uplatin_bool + { + \__um_set_normal_latin:nn {up,it} {#1} + \__um_set_normal_char:nnn {h} {up,it} {#1} + \__um_set_normal_char:nnn {dotlessi} {up,it} {#1} + \__um_set_normal_char:nnn {dotlessj} {up,it} {#1} + } + } + \__um_set_mathalphabet_latin:nnn {up} {up,it}{#1} + \__um_set_mathalphabet_latin:nnn {literal} {up} {up} + \__um_set_mathalphabet_latin:nnn {literal} {it} {it} + } + +\__um_new_alphabet_config:nnn {up} {Greek} + { + \bool_if:NTF \g__um_literal_bool { \__um_set_normal_Greek:nn {up}{#1} } + { + \bool_if:NT \g__um_upGreek_bool { \__um_set_normal_Greek:nn {up,it}{#1} } + } + \__um_set_mathalphabet_Greek:nnn {up} {up,it}{#1} + \__um_set_mathalphabet_Greek:nnn {literal} {up} {up} + \__um_set_mathalphabet_Greek:nnn {literal} {it} {it} + } + +\__um_new_alphabet_config:nnn {up} {greek} + { + \bool_if:NTF \g__um_literal_bool { \__um_set_normal_greek:nn {up} {#1} } + { + \bool_if:NT \g__um_upgreek_bool + { + \__um_set_normal_greek:nn {up,it} {#1} + } + } + \__um_set_mathalphabet_greek:nnn {up} {up,it} {#1} + \__um_set_mathalphabet_greek:nnn {literal} {up} {up} + \__um_set_mathalphabet_greek:nnn {literal} {it} {it} + } + +\__um_new_alphabet_config:nnn {up} {misc} + { + \bool_if:NTF \g__um_literal_Nabla_bool + { + \__um_set_normal_char:nnn {Nabla}{up}{up} + } + { + \bool_if:NT \g__um_upNabla_bool + { + \__um_set_normal_char:nnn {Nabla}{up,it}{up} + } + } + \bool_if:NTF \g__um_literal_partial_bool + { + \__um_set_normal_char:nnn {partial}{up}{up} + } + { + \bool_if:NT \g__um_uppartial_bool + { + \__um_set_normal_char:nnn {partial}{up,it}{up} + } + } + \__um_set_mathalphabet_pos:nnnn {up} {partial} {up,it} {#1} + \__um_set_mathalphabet_pos:nnnn {up} {Nabla} {up,it} {#1} + \__um_set_mathalphabet_pos:nnnn {up} {dotlessi} {up,it} {#1} + \__um_set_mathalphabet_pos:nnnn {up} {dotlessj} {up,it} {#1} + } +\__um_new_alphabet_config:nnn {it} {Latin} + { + \bool_if:NTF \g__um_literal_bool { \__um_set_normal_Latin:nn {it} {#1} } + { + \bool_if:NF \g__um_upLatin_bool { \__um_set_normal_Latin:nn {up,it} {#1} } + } + \__um_set_mathalphabet_Latin:nnn {it}{up,it}{#1} + } + +\__um_new_alphabet_config:nnn {it} {latin} + { + \bool_if:NTF \g__um_literal_bool + { + \__um_set_normal_latin:nn {it} {#1} + \__um_set_normal_char:nnn {h}{it}{#1} + } + { + \bool_if:NF \g__um_uplatin_bool + { + \__um_set_normal_latin:nn {up,it} {#1} + \__um_set_normal_char:nnn {h}{up,it}{#1} + \__um_set_normal_char:nnn {dotlessi}{up,it}{#1} + \__um_set_normal_char:nnn {dotlessj}{up,it}{#1} + } + } + \__um_set_mathalphabet_latin:nnn {it} {up,it} {#1} + \__um_set_mathalphabet_pos:nnnn {it} {dotlessi} {up,it} {#1} + \__um_set_mathalphabet_pos:nnnn {it} {dotlessj} {up,it} {#1} + } + +\__um_new_alphabet_config:nnn {it} {Greek} + { + \bool_if:NTF \g__um_literal_bool + { + \__um_set_normal_Greek:nn {it}{#1} + } + { + \bool_if:NF \g__um_upGreek_bool { \__um_set_normal_Greek:nn {up,it}{#1} } + } + \__um_set_mathalphabet_Greek:nnn {it} {up,it}{#1} + } + +\__um_new_alphabet_config:nnn {it} {greek} + { + \bool_if:NTF \g__um_literal_bool + { + \__um_set_normal_greek:nn {it} {#1} + } + { + \bool_if:NF \g__um_upgreek_bool { \__um_set_normal_greek:nn {it,up} {#1} } + } + \__um_set_mathalphabet_greek:nnn {it} {up,it} {#1} + } + +\__um_new_alphabet_config:nnn {it} {misc} + { + \bool_if:NTF \g__um_literal_Nabla_bool + { + \__um_set_normal_char:nnn {Nabla}{it}{it} + } + { + \bool_if:NF \g__um_upNabla_bool + { + \__um_set_normal_char:nnn {Nabla}{up,it}{it} + } + } + \bool_if:NTF \g__um_literal_partial_bool + { + \__um_set_normal_char:nnn {partial}{it}{it} + } + { + \bool_if:NF \g__um_uppartial_bool + { + \__um_set_normal_char:nnn {partial}{up,it}{it} + } + } + \__um_set_mathalphabet_pos:nnnn {it} {partial} {up,it}{#1} + \__um_set_mathalphabet_pos:nnnn {it} {Nabla} {up,it}{#1} + } +\__um_new_alphabet_config:nnn {bb} {latin} + { + \__um_set_mathalphabet_latin:nnn {bb} {up,it}{#1} + } + +\__um_new_alphabet_config:nnn {bb} {Latin} + { + \__um_set_mathalphabet_Latin:nnn {bb} {up,it}{#1} + \__um_set_mathalphabet_pos:nnnn {bb} {C} {up,it} {#1} + \__um_set_mathalphabet_pos:nnnn {bb} {H} {up,it} {#1} + \__um_set_mathalphabet_pos:nnnn {bb} {N} {up,it} {#1} + \__um_set_mathalphabet_pos:nnnn {bb} {P} {up,it} {#1} + \__um_set_mathalphabet_pos:nnnn {bb} {Q} {up,it} {#1} + \__um_set_mathalphabet_pos:nnnn {bb} {R} {up,it} {#1} + \__um_set_mathalphabet_pos:nnnn {bb} {Z} {up,it} {#1} + } + +\__um_new_alphabet_config:nnn {bb} {num} + { + \__um_set_mathalphabet_numbers:nnn {bb} {up}{#1} + } + +\__um_new_alphabet_config:nnn {bb} {misc} + { + \__um_set_mathalphabet_pos:nnnn {bb} {Pi} {up,it} {#1} + \__um_set_mathalphabet_pos:nnnn {bb} {pi} {up,it} {#1} + \__um_set_mathalphabet_pos:nnnn {bb} {Gamma} {up,it} {#1} + \__um_set_mathalphabet_pos:nnnn {bb} {gamma} {up,it} {#1} + \__um_set_mathalphabet_pos:nnnn {bb} {summation} {up} {#1} + } + +\__um_new_alphabet_config:nnn {bbit} {misc} + { + \__um_set_mathalphabet_pos:nnnn {bbit} {D} {up,it} {#1} + \__um_set_mathalphabet_pos:nnnn {bbit} {d} {up,it} {#1} + \__um_set_mathalphabet_pos:nnnn {bbit} {e} {up,it} {#1} + \__um_set_mathalphabet_pos:nnnn {bbit} {i} {up,it} {#1} + \__um_set_mathalphabet_pos:nnnn {bbit} {j} {up,it} {#1} + } +\__um_new_alphabet_config:nnn {scr} {Latin} + { + \__um_set_mathalphabet_Latin:nnn {scr} {up,it}{#1} + \__um_set_mathalphabet_pos:nnnn {scr} {B}{up,it}{#1} + \__um_set_mathalphabet_pos:nnnn {scr} {E}{up,it}{#1} + \__um_set_mathalphabet_pos:nnnn {scr} {F}{up,it}{#1} + \__um_set_mathalphabet_pos:nnnn {scr} {H}{up,it}{#1} + \__um_set_mathalphabet_pos:nnnn {scr} {I}{up,it}{#1} + \__um_set_mathalphabet_pos:nnnn {scr} {L}{up,it}{#1} + \__um_set_mathalphabet_pos:nnnn {scr} {M}{up,it}{#1} + \__um_set_mathalphabet_pos:nnnn {scr} {R}{up,it}{#1} + } + +\__um_new_alphabet_config:nnn {scr} {latin} + { + \__um_set_mathalphabet_latin:nnn {scr} {up,it}{#1} + \__um_set_mathalphabet_pos:nnnn {scr} {e}{up,it}{#1} + \__um_set_mathalphabet_pos:nnnn {scr} {g}{up,it}{#1} + \__um_set_mathalphabet_pos:nnnn {scr} {o}{up,it}{#1} + } +\__um_new_alphabet_config:nnn {cal} {Latin} + { + \__um_set_mathalphabet_Latin:nnn {cal} {up,it}{#1} + \__um_set_mathalphabet_pos:nnnn {cal} {B}{up,it}{#1} + \__um_set_mathalphabet_pos:nnnn {cal} {E}{up,it}{#1} + \__um_set_mathalphabet_pos:nnnn {cal} {F}{up,it}{#1} + \__um_set_mathalphabet_pos:nnnn {cal} {H}{up,it}{#1} + \__um_set_mathalphabet_pos:nnnn {cal} {I}{up,it}{#1} + \__um_set_mathalphabet_pos:nnnn {cal} {L}{up,it}{#1} + \__um_set_mathalphabet_pos:nnnn {cal} {M}{up,it}{#1} + \__um_set_mathalphabet_pos:nnnn {cal} {R}{up,it}{#1} + } +\__um_new_alphabet_config:nnn {frak} {Latin} + { + \__um_set_mathalphabet_Latin:nnn {frak} {up,it}{#1} + \__um_set_mathalphabet_pos:nnnn {frak} {C}{up,it}{#1} + \__um_set_mathalphabet_pos:nnnn {frak} {H}{up,it}{#1} + \__um_set_mathalphabet_pos:nnnn {frak} {I}{up,it}{#1} + \__um_set_mathalphabet_pos:nnnn {frak} {R}{up,it}{#1} + \__um_set_mathalphabet_pos:nnnn {frak} {Z}{up,it}{#1} + } +\__um_new_alphabet_config:nnn {frak} {latin} + { + \__um_set_mathalphabet_latin:nnn {frak} {up,it}{#1} + } +\__um_new_alphabet_config:nnn {sfup} {num} + { + \__um_set_mathalphabet_numbers:nnn {sf} {up}{#1} + \__um_set_mathalphabet_numbers:nnn {sfup} {up}{#1} + } +\__um_new_alphabet_config:nnn {sfup} {Latin} + { + \bool_if:NTF \g__um_sfliteral_bool + { + \__um_set_normal_Latin:nn {sfup} {#1} + \__um_set_mathalphabet_Latin:nnn {sf} {up}{#1} + } + { + \bool_if:NT \g__um_upsans_bool + { + \__um_set_normal_Latin:nn {sfup,sfit} {#1} + \__um_set_mathalphabet_Latin:nnn {sf} {up,it}{#1} + } + } + \__um_set_mathalphabet_Latin:nnn {sfup} {up,it}{#1} + } +\__um_new_alphabet_config:nnn {sfup} {latin} + { + \bool_if:NTF \g__um_sfliteral_bool + { + \__um_set_normal_latin:nn {sfup} {#1} + \__um_set_mathalphabet_latin:nnn {sf} {up}{#1} + } + { + \bool_if:NT \g__um_upsans_bool + { + \__um_set_normal_latin:nn {sfup,sfit} {#1} + \__um_set_mathalphabet_latin:nnn {sf} {up,it}{#1} + } + } + \__um_set_mathalphabet_latin:nnn {sfup} {up,it}{#1} + } +\__um_new_alphabet_config:nnn {sfit} {Latin} + { + \bool_if:NTF \g__um_sfliteral_bool + { + \__um_set_normal_Latin:nn {sfit} {#1} + \__um_set_mathalphabet_Latin:nnn {sf} {it}{#1} + } + { + \bool_if:NF \g__um_upsans_bool + { + \__um_set_normal_Latin:nn {sfup,sfit} {#1} + \__um_set_mathalphabet_Latin:nnn {sf} {up,it}{#1} + } + } + \__um_set_mathalphabet_Latin:nnn {sfit} {up,it}{#1} + } +\__um_new_alphabet_config:nnn {sfit} {latin} + { + \bool_if:NTF \g__um_sfliteral_bool + { + \__um_set_normal_latin:nn {sfit} {#1} + \__um_set_mathalphabet_latin:nnn {sf} {it}{#1} + } + { + \bool_if:NF \g__um_upsans_bool + { + \__um_set_normal_latin:nn {sfup,sfit} {#1} + \__um_set_mathalphabet_latin:nnn {sf} {up,it}{#1} + } + } + \__um_set_mathalphabet_latin:nnn {sfit} {up,it}{#1} + } +\__um_new_alphabet_config:nnn {tt} {num} + { + \__um_set_mathalphabet_numbers:nnn {tt} {up}{#1} + } +\__um_new_alphabet_config:nnn {tt} {Latin} + { + \__um_set_mathalphabet_Latin:nnn {tt} {up,it}{#1} + } +\__um_new_alphabet_config:nnn {tt} {latin} + { + \__um_set_mathalphabet_latin:nnn {tt} {up,it}{#1} + } +\__um_new_alphabet_config:nnn {bfit} {Latin} + { + \bool_if:NF \g__um_bfupLatin_bool + { + \__um_set_normal_Latin:nn {bfup,bfit} {#1} + } + \__um_set_mathalphabet_Latin:nnn {bfit} {up,it}{#1} + \bool_if:NTF \g__um_bfliteral_bool + { + \__um_set_normal_Latin:nn {bfit} {#1} + \__um_set_mathalphabet_Latin:nnn {bf} {it}{#1} + } + { + \bool_if:NF \g__um_bfupLatin_bool + { + \__um_set_normal_Latin:nn {bfup,bfit} {#1} + \__um_set_mathalphabet_Latin:nnn {bf} {up,it}{#1} + } + } + } + +\__um_new_alphabet_config:nnn {bfit} {latin} + { + \bool_if:NF \g__um_bfuplatin_bool + { + \__um_set_normal_latin:nn {bfup,bfit} {#1} + } + \__um_set_mathalphabet_latin:nnn {bfit} {up,it}{#1} + \bool_if:NTF \g__um_bfliteral_bool + { + \__um_set_normal_latin:nn {bfit} {#1} + \__um_set_mathalphabet_latin:nnn {bf} {it}{#1} + } + { + \bool_if:NF \g__um_bfuplatin_bool + { + \__um_set_normal_latin:nn {bfup,bfit} {#1} + \__um_set_mathalphabet_latin:nnn {bf} {up,it}{#1} + } + } + } + +\__um_new_alphabet_config:nnn {bfit} {Greek} + { + \__um_set_mathalphabet_Greek:nnn {bfit} {up,it}{#1} + \bool_if:NTF \g__um_bfliteral_bool + { + \__um_set_normal_Greek:nn {bfit}{#1} + \__um_set_mathalphabet_Greek:nnn {bf} {it}{#1} + } + { + \bool_if:NF \g__um_bfupGreek_bool + { + \__um_set_normal_Greek:nn {bfup,bfit}{#1} + \__um_set_mathalphabet_Greek:nnn {bf} {up,it}{#1} + } + } + } + +\__um_new_alphabet_config:nnn {bfit} {greek} + { + \__um_set_mathalphabet_greek:nnn {bfit} {up,it} {#1} + \bool_if:NTF \g__um_bfliteral_bool + { + \__um_set_normal_greek:nn {bfit} {#1} + \__um_set_mathalphabet_greek:nnn {bf} {it} {#1} + } + { + \bool_if:NF \g__um_bfupgreek_bool + { + \__um_set_normal_greek:nn {bfit,bfup} {#1} + \__um_set_mathalphabet_greek:nnn {bf} {up,it} {#1} + } + } + } + +\__um_new_alphabet_config:nnn {bfit} {misc} + { + \bool_if:NTF \g__um_literal_Nabla_bool + { \__um_set_normal_char:nnn {Nabla}{bfit}{#1} } + { + \bool_if:NF \g__um_upNabla_bool + { \__um_set_normal_char:nnn {Nabla}{bfup,bfit}{#1} } + } + \bool_if:NTF \g__um_literal_partial_bool + { \__um_set_normal_char:nnn {partial}{bfit}{#1} } + { + \bool_if:NF \g__um_uppartial_bool + { \__um_set_normal_char:nnn {partial}{bfup,bfit}{#1} } + } + \__um_set_mathalphabet_pos:nnnn {bfit} {partial} {up,it}{#1} + \__um_set_mathalphabet_pos:nnnn {bfit} {Nabla} {up,it}{#1} + \bool_if:NTF \g__um_literal_partial_bool + { + \__um_set_mathalphabet_pos:nnnn {bf} {partial} {it}{#1} + } + { + \bool_if:NF \g__um_uppartial_bool + { + \__um_set_mathalphabet_pos:nnnn {bf} {partial} {up,it}{#1} + } + } + \bool_if:NTF \g__um_literal_Nabla_bool + { + \__um_set_mathalphabet_pos:nnnn {bf} {Nabla} {it}{#1} + } + { + \bool_if:NF \g__um_upNabla_bool + { + \__um_set_mathalphabet_pos:nnnn {bf} {Nabla} {up,it}{#1} + } + } + } +\__um_new_alphabet_config:nnn {bfup} {num} + { + \__um_set_mathalphabet_numbers:nnn {bf} {up}{#1} + \__um_set_mathalphabet_numbers:nnn {bfup} {up}{#1} + } + +\__um_new_alphabet_config:nnn {bfup} {Latin} + { + \bool_if:NT \g__um_bfupLatin_bool + { + \__um_set_normal_Latin:nn {bfup,bfit} {#1} + } + \__um_set_mathalphabet_Latin:nnn {bfup} {up,it}{#1} + \bool_if:NTF \g__um_bfliteral_bool + { + \__um_set_normal_Latin:nn {bfup} {#1} + \__um_set_mathalphabet_Latin:nnn {bf} {up}{#1} + } + { + \bool_if:NT \g__um_bfupLatin_bool + { + \__um_set_normal_Latin:nn {bfup,bfit} {#1} + \__um_set_mathalphabet_Latin:nnn {bf} {up,it}{#1} + } + } + } + +\__um_new_alphabet_config:nnn {bfup} {latin} + { + \bool_if:NT \g__um_bfuplatin_bool + { + \__um_set_normal_latin:nn {bfup,bfit} {#1} + } + \__um_set_mathalphabet_latin:nnn {bfup} {up,it}{#1} + \bool_if:NTF \g__um_bfliteral_bool + { + \__um_set_normal_latin:nn {bfup} {#1} + \__um_set_mathalphabet_latin:nnn {bf} {up}{#1} + } + { + \bool_if:NT \g__um_bfuplatin_bool + { + \__um_set_normal_latin:nn {bfup,bfit} {#1} + \__um_set_mathalphabet_latin:nnn {bf} {up,it}{#1} + } + } + } +\__um_new_alphabet_config:nnn {bfup} {Greek} + { + \__um_set_mathalphabet_Greek:nnn {bfup} {up,it}{#1} + \bool_if:NTF \g__um_bfliteral_bool + { + \__um_set_normal_Greek:nn {bfup}{#1} + \__um_set_mathalphabet_Greek:nnn {bf} {up}{#1} + } + { + \bool_if:NT \g__um_bfupGreek_bool + { + \__um_set_normal_Greek:nn {bfup,bfit}{#1} + \__um_set_mathalphabet_Greek:nnn {bf} {up,it}{#1} + } + } + } + +\__um_new_alphabet_config:nnn {bfup} {greek} + { + \__um_set_mathalphabet_greek:nnn {bfup} {up,it} {#1} + \bool_if:NTF \g__um_bfliteral_bool + { + \__um_set_normal_greek:nn {bfup} {#1} + \__um_set_mathalphabet_greek:nnn {bf} {up} {#1} + } + { + \bool_if:NT \g__um_bfupgreek_bool + { + \__um_set_normal_greek:nn {bfup,bfit} {#1} + \__um_set_mathalphabet_greek:nnn {bf} {up,it} {#1} + } + } + } + +\__um_new_alphabet_config:nnn {bfup} {misc} + { + \bool_if:NTF \g__um_literal_Nabla_bool + { + \__um_set_normal_char:nnn {Nabla}{bfup}{#1} + } + { + \bool_if:NT \g__um_upNabla_bool + { + \__um_set_normal_char:nnn {Nabla}{bfup,bfit}{#1} + } + } + \bool_if:NTF \g__um_literal_partial_bool + { + \__um_set_normal_char:nnn {partial}{bfup}{#1} + } + { + \bool_if:NT \g__um_uppartial_bool + { + \__um_set_normal_char:nnn {partial}{bfup,bfit}{#1} + } + } + \__um_set_mathalphabet_pos:nnnn {bfup} {partial} {up,it}{#1} + \__um_set_mathalphabet_pos:nnnn {bfup} {Nabla} {up,it}{#1} + \__um_set_mathalphabet_pos:nnnn {bfup} {digamma} {up}{#1} + \__um_set_mathalphabet_pos:nnnn {bfup} {Digamma} {up}{#1} + \__um_set_mathalphabet_pos:nnnn {bf} {digamma} {up}{#1} + \__um_set_mathalphabet_pos:nnnn {bf} {Digamma} {up}{#1} + \bool_if:NTF \g__um_literal_partial_bool + { + \__um_set_mathalphabet_pos:nnnn {bf} {partial} {up}{#1} + } + { + \bool_if:NT \g__um_uppartial_bool + { + \__um_set_mathalphabet_pos:nnnn {bf} {partial} {up,it}{#1} + } + } + \bool_if:NTF \g__um_literal_Nabla_bool + { + \__um_set_mathalphabet_pos:nnnn {bf} {Nabla} {up}{#1} + } + { + \bool_if:NT \g__um_upNabla_bool + { + \__um_set_mathalphabet_pos:nnnn {bf} {Nabla} {up,it}{#1} + } + } + } +\__um_new_alphabet_config:nnn {bffrak} {Latin} + { + \__um_set_mathalphabet_Latin:nnn {bffrak} {up,it}{#1} + } + +\__um_new_alphabet_config:nnn {bffrak} {latin} + { + \__um_set_mathalphabet_latin:nnn {bffrak} {up,it}{#1} + } +\__um_new_alphabet_config:nnn {bfscr} {Latin} + { + \__um_set_mathalphabet_Latin:nnn {bfscr} {up,it}{#1} + } +\__um_new_alphabet_config:nnn {bfscr} {latin} + { + \__um_set_mathalphabet_latin:nnn {bfscr} {up,it}{#1} + } +\__um_new_alphabet_config:nnn {bfcal} {Latin} + { + \__um_set_mathalphabet_Latin:nnn {bfcal} {up,it}{#1} + } +\__um_new_alphabet_config:nnn {bfsfup} {num} + { + \__um_set_mathalphabet_numbers:nnn {bfsf} {up}{#1} + \__um_set_mathalphabet_numbers:nnn {bfsfup} {up}{#1} + } +\__um_new_alphabet_config:nnn {bfsfup} {Latin} + { + \bool_if:NTF \g__um_sfliteral_bool + { + \__um_set_normal_Latin:nn {bfsfup} {#1} + \__um_set_mathalphabet_Latin:nnn {bfsf} {up}{#1} + } + { + \bool_if:NT \g__um_upsans_bool + { + \__um_set_normal_Latin:nn {bfsfup,bfsfit} {#1} + \__um_set_mathalphabet_Latin:nnn {bfsf} {up,it}{#1} + } + } + \__um_set_mathalphabet_Latin:nnn {bfsfup} {up,it}{#1} + } + +\__um_new_alphabet_config:nnn {bfsfup} {latin} + { + \bool_if:NTF \g__um_sfliteral_bool + { + \__um_set_normal_latin:nn {bfsfup} {#1} + \__um_set_mathalphabet_latin:nnn {bfsf} {up}{#1} + } + { + \bool_if:NT \g__um_upsans_bool + { + \__um_set_normal_latin:nn {bfsfup,bfsfit} {#1} + \__um_set_mathalphabet_latin:nnn {bfsf} {up,it}{#1} + } + } + \__um_set_mathalphabet_latin:nnn {bfsfup} {up,it}{#1} + } + +\__um_new_alphabet_config:nnn {bfsfup} {Greek} + { + \bool_if:NTF \g__um_sfliteral_bool + { + \__um_set_normal_Greek:nn {bfsfup}{#1} + \__um_set_mathalphabet_Greek:nnn {bfsf} {up}{#1} + } + { + \bool_if:NT \g__um_upsans_bool + { + \__um_set_normal_Greek:nn {bfsfup,bfsfit}{#1} + \__um_set_mathalphabet_Greek:nnn {bfsf} {up,it}{#1} + } + } + \__um_set_mathalphabet_Greek:nnn {bfsfup} {up,it}{#1} + } + +\__um_new_alphabet_config:nnn {bfsfup} {greek} + { + \bool_if:NTF \g__um_sfliteral_bool + { + \__um_set_normal_greek:nn {bfsfup} {#1} + \__um_set_mathalphabet_greek:nnn {bfsf} {up} {#1} + } + { + \bool_if:NT \g__um_upsans_bool + { + \__um_set_normal_greek:nn {bfsfup,bfsfit} {#1} + \__um_set_mathalphabet_greek:nnn {bfsf} {up,it} {#1} + } + } + \__um_set_mathalphabet_greek:nnn {bfsfup} {up,it} {#1} + } +\__um_new_alphabet_config:nnn {bfsfup} {misc} + { + \bool_if:NTF \g__um_literal_Nabla_bool + { + \__um_set_normal_char:nnn {Nabla}{bfsfup}{#1} + } + { + \bool_if:NT \g__um_upNabla_bool + { + \__um_set_normal_char:nnn {Nabla}{bfsfup,bfsfit}{#1} + } + } + \bool_if:NTF \g__um_literal_partial_bool + { + \__um_set_normal_char:nnn {partial}{bfsfup}{#1} + } + { + \bool_if:NT \g__um_uppartial_bool + { + \__um_set_normal_char:nnn {partial}{bfsfup,bfsfit}{#1} + } + } + \__um_set_mathalphabet_pos:nnnn {bfsfup} {partial} {up,it}{#1} + \__um_set_mathalphabet_pos:nnnn {bfsfup} {Nabla} {up,it}{#1} + \bool_if:NTF \g__um_literal_partial_bool + { + \__um_set_mathalphabet_pos:nnnn {bfsf} {partial} {up}{#1} + } + { + \bool_if:NT \g__um_uppartial_bool + { + \__um_set_mathalphabet_pos:nnnn {bfsf} {partial} {up,it}{#1} + } + } + \bool_if:NTF \g__um_literal_Nabla_bool + { + \__um_set_mathalphabet_pos:nnnn {bfsf} {Nabla} {up}{#1} + } + { + \bool_if:NT \g__um_upNabla_bool + { + \__um_set_mathalphabet_pos:nnnn {bfsf} {Nabla} {up,it}{#1} + } + } + } +\__um_new_alphabet_config:nnn {bfsfit} {Latin} + { + \bool_if:NTF \g__um_sfliteral_bool + { + \__um_set_normal_Latin:nn {bfsfit} {#1} + \__um_set_mathalphabet_Latin:nnn {bfsf} {it}{#1} + } + { + \bool_if:NF \g__um_upsans_bool + { + \__um_set_normal_Latin:nn {bfsfup,bfsfit} {#1} + \__um_set_mathalphabet_Latin:nnn {bfsf} {up,it}{#1} + } + } + \__um_set_mathalphabet_Latin:nnn {bfsfit} {up,it}{#1} + } + +\__um_new_alphabet_config:nnn {bfsfit} {latin} + { + \bool_if:NTF \g__um_sfliteral_bool + { + \__um_set_normal_latin:nn {bfsfit} {#1} + \__um_set_mathalphabet_latin:nnn {bfsf} {it}{#1} + } + { + \bool_if:NF \g__um_upsans_bool + { + \__um_set_normal_latin:nn {bfsfup,bfsfit} {#1} + \__um_set_mathalphabet_latin:nnn {bfsf} {up,it}{#1} + } + } + \__um_set_mathalphabet_latin:nnn {bfsfit} {up,it}{#1} + } + +\__um_new_alphabet_config:nnn {bfsfit} {Greek} + { + \bool_if:NTF \g__um_sfliteral_bool + { + \__um_set_normal_Greek:nn {bfsfit}{#1} + \__um_set_mathalphabet_Greek:nnn {bfsf} {it}{#1} + } + { + \bool_if:NF \g__um_upsans_bool + { + \__um_set_normal_Greek:nn {bfsfup,bfsfit}{#1} + \__um_set_mathalphabet_Greek:nnn {bfsf} {up,it}{#1} + } + } + \__um_set_mathalphabet_Greek:nnn {bfsfit} {up,it}{#1} + } + +\__um_new_alphabet_config:nnn {bfsfit} {greek} + { + \bool_if:NTF \g__um_sfliteral_bool + { + \__um_set_normal_greek:nn {bfsfit} {#1} + \__um_set_mathalphabet_greek:nnn {bfsf} {it} {#1} + } + { + \bool_if:NF \g__um_upsans_bool + { + \__um_set_normal_greek:nn {bfsfup,bfsfit} {#1} + \__um_set_mathalphabet_greek:nnn {bfsf} {up,it} {#1} + } + } + \__um_set_mathalphabet_greek:nnn {bfsfit} {up,it} {#1} + } + +\__um_new_alphabet_config:nnn {bfsfit} {misc} + { + \bool_if:NTF \g__um_literal_Nabla_bool + { + \__um_set_normal_char:nnn {Nabla}{bfsfit}{#1} + } + { + \bool_if:NF \g__um_upNabla_bool + { + \__um_set_normal_char:nnn {Nabla}{bfsfup,bfsfit}{#1} + } + } + \bool_if:NTF \g__um_literal_partial_bool + { + \__um_set_normal_char:nnn {partial}{bfsfit}{#1} + } + { + \bool_if:NF \g__um_uppartial_bool + { + \__um_set_normal_char:nnn {partial}{bfsfup,bfsfit}{#1} + } + } + \__um_set_mathalphabet_pos:nnnn {bfsfit} {partial} {up,it}{#1} + \__um_set_mathalphabet_pos:nnnn {bfsfit} {Nabla} {up,it}{#1} + \bool_if:NTF \g__um_literal_partial_bool + { + \__um_set_mathalphabet_pos:nnnn {bfsf} {partial} {it}{#1} + } + { + \bool_if:NF \g__um_uppartial_bool + { + \__um_set_mathalphabet_pos:nnnn {bfsf} {partial} {up,it}{#1} + } + } + \bool_if:NTF \g__um_literal_Nabla_bool + { + \__um_set_mathalphabet_pos:nnnn {bfsf} {Nabla} {it}{#1} + } + { + \bool_if:NF \g__um_upNabla_bool + { + \__um_set_mathalphabet_pos:nnnn {bfsf} {Nabla} {up,it}{#1} + } + } + } -- cgit v1.2.3