%% %% This is file `unicode-math-luatex.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% unicode-math.dtx (with options: `package,LU') %% um-code-opening.dtx (with options: `package,LU') %% um-code-variables.dtx (with options: `package,LU') %% um-code-api.dtx (with options: `package,LU') %% um-code-ui.dtx (with options: `package,LU') %% um-code-pkgopt.dtx (with options: `package,LU') %% um-code-msg.dtx (with options: `package,LU') %% um-code-usv.dtx (with options: `package,LU') %% um-code-setchar.dtx (with options: `package,LU') %% um-code-mathtext.dtx (with options: `package,LU') %% um-code-main.dtx (with options: `package,LU') %% um-code-fontopt.dtx (with options: `package,LU') %% um-code-fontparam.dtx (with options: `package,LU') %% um-code-mathmap.dtx (with options: `package,LU') %% um-code-sym-commands.dtx (with options: `package,LU') %% um-code-alphabets.dtx (with options: `package,LU') %% um-code-primes.dtx (with options: `package,LU') %% um-code-sscript.dtx (with options: `package,LU') %% um-code-compat.dtx (with options: `package,LU') %% um-code-amsmath.dtx (with options: `package,LU') %% um-code-epilogue.dtx (with options: `package,LU') %% %% ------------------------------------------------ %% The UNICODE-MATH package %% ------------------------------------------------ %% 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 %% (your choice): . %% ------------------------------------------------ %% Copyright 2006-2018 Will Robertson, LPPL "maintainer" %% Copyright 2010-2017 Philipp Stephani %% Copyright 2011-2017 Joseph Wright %% Copyright 2012-2015 Khaled Hosny %% ------------------------------------------------ %% %%^^A%% unicode-math.dtx -- part of UNICODE-MATH %%^^A%% Metadata for the package code, including files and versioning \ProvidesExplPackage{unicode-math-luatex} {2020/01/31} {0.8q} {Unicode maths in XeLaTeX and LuaLaTeX} %%^^A%% um-code-opening.dtx -- part of UNICODE-MATH %%^^A%% Assorted initialisation tasks, including some low-level function definitions. \RequirePackage{xparse,l3keys2e} \RequirePackage{fontspec} \RequirePackage{fix-cm} \RequirePackage{amsmath} \RequirePackage{lualatex-math} \cs_set_protected:Npn \__um_after_package:nNn #1 #2 #3 { \AtBeginDocument { \cs_new_protected:Npn #2 {#3} \@ifpackageloaded {#1} {#2} {} } } \RequirePackage{xparse,l3keys2e} \RequirePackage{fontspec} \RequirePackage{fix-cm} \RequirePackage{lualatex-math} \cs_set_protected_nopar:Npn \exp_last_unbraced:NNx { \::N \::x_unbraced \::: } \cs_generate_variant:Nn \fontspec_set_family:Nnn {Nx,Nxx} \cs_generate_variant:Nn \prop_get:NnNTF {cx} \cs_generate_variant:Nn \tl_if_eq:nnF {o} \cs_set_eq:NN \__um_group_begin: \group_begin: \cs_set_protected:Npn \__um_group_end:n #1 { #1 \group_end: } \cs_set_eq:NN \__um_group_begin_frozen: \__um_group_begin: \cs_set_eq:NN \__um_group_end_frozen:n \__um_group_end:n \prg_new_conditional:Nnn \__um_glyph_if_exist:Nn {p,TF,T,F} { \tex_iffontchar:D #1 #2 \scan_stop: \prg_return_true: \else: \prg_return_false: \fi: } \cs_set_protected:Nn \__um_fontface_gset_eq:NN { \tex_global:D \tex_let:D #1 #2 } \cs_generate_variant:Nn \__um_fontface_gset_eq:NN {cN} \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 { \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 { \Umathchardef #1 = \mathchar@type#2 \csname sym#3\endcsname \int_eval:n {#4} \scan_stop: } \cs_generate_variant:Nn \__um_set_mathchar:NNnn {c} \cs_new:Nn \__um_set_delcode:nnn { \Udelcode#2 = \csname sym#1\endcsname #3 \scan_stop: } \cs_new:Nn \__um_radical:nn { \Uradical \csname sym#1\endcsname #2 \scan_stop: } \cs_new:Nn \__um_delimiter:Nnn { \Udelimiter \mathchar@type#1 \csname sym#2\endcsname #3 \scan_stop: } \cs_new:Nn \__um_accent:nnn { \Umathaccent #1~ \mathchar@type\mathaccent \use:c { sym #2 } #3 \scan_stop: } \cs_new:Nn \__um_char_gmake_mathactive:N { \tex_global:D \tex_mathcode:D `#1 = "8000 \scan_stop: } \cs_new:Nn \__um_char_gmake_mathactive:n { \tex_global:D \tex_mathcode:D \int_eval:n {#1} = "8000 \scan_stop: } \cs_new:Nn \__um_mathactive_remap:nn { \group_begin: \cs_set_protected:Npn \__um_tmp: {#2} \__um_char_gmake_mathactive:n {#1} \char_gset_active_eq:nN {#1} \__um_tmp: \group_end: } \cs_new_protected:Nn \__um_mathgroup_set:n { \tex_fam:D #1 \scan_stop: } \cs_new:Nn \__um_copy_fontdimen:nnN { \fontdimen #1 \font = \the \fontdimen #2 #3 \relax } \cs_new:Nn \__um_zero_fontdimen:n { \fontdimen #1 \font = 0pt\relax } \cs_new_protected:Nn \__um_fontdimen_from_param:nn { \fontdimen #1 \font = \lua_now:n { fontspec.mathfontdimen(font.current(),"#2") } \scan_stop: } \prg_new_conditional:Nnn \__um_int_if_zero:n {p,TF,T,F} { \int_compare:nNnTF {#1} = 0 {\prg_return_true:} {\prg_return_false:} } \cs_new:Nn \usv_set:nnn { \tl_const:cn { c__um_#1_#2_usv } {#3} } \cs_new:Nn \__um_to_usv:nn { \use:c { c__um_#1_#2_usv } } \prg_new_conditional:Nnn \__um_usv_if_exist:nn {T,F,TF} { \cs_if_exist:cTF { c__um_#1_#2_usv } \prg_return_true: \prg_return_false: } \tl_map_inline:nn { \new@mathgroup\cdp@list\cdp@elt\DeclareMathSizes \@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 \new@mathversion\DeclareSymbolFont\group@list\group@elt \new@symbolfont\SetSymbolFont\SetSymbolFont@\get@cdp \DeclareMathAlphabet\new@mathalphabet\SetMathAlphabet\SetMathAlphabet@ \DeclareMathAccent\set@mathaccent\DeclareMathSymbol\set@mathchar \set@mathsymbol\DeclareMathDelimiter\@xxDeclareMathDelimiter \@DeclareMathDelimiter\@xDeclareMathDelimiter\set@mathdelimiter \set__ummathdelimiter\DeclareMathRadical\mathchar@type \DeclareSymbolFontAlphabet\DeclareSymbolFontAlphabet@ } { \tl_remove_once:Nn \@preamblecmds {\do#1} } \cs_new:Npn \__um_error:n { \msg_error:nn {unicode-math} } \cs_new:Npn \__um_error:nx { \msg_error:nnx {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} } \cs_generate_variant:Nn \msg_new:nnn {nnx} \cs_generate_variant:Nn \msg_new:nnnn {nnxx} \cs_new:Nn \__um_msg_new:nn { \msg_new:nnx {unicode-math} {#1} { \tl_trim_spaces:n {#2} } } \cs_new:Npn \__um_cs_set:Nn #1 #2 { \cs_if_exist:NF #1 { \ERROR{CS~ DOES~ NOT~ EXIST,~ USE~ "NEW"} } \cs_set_protected:Nn #1 { #2 } } \cs_new:Npn \__um_cs_new:Nn #1 #2 { \cs_new_protected:Nn #1 { #2 } } %%^^A%% um-code-variables.dtx -- part of UNICODE-MATH %%^^A%% Declaration of all code-level variables used in the package. \bool_new:N \g__um_ot_math_bool \bool_new:N \g__um_main_font_defined_bool \bool_new:N \g__um_init_bool \bool_new:N \l__um_implicit_alph_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 \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 \int_new:N \g__um_fonts_used_int \int_new:N \l__um_primecount_int \tl_if_exist:NF \g__um_secret_hook_tl { \tl_new:N \g__um_secret_hook_tl } \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_style_tl \tl_new:N \l__um_family_tl \tl_new:N \l__um_alphabet_tl \tl_new:N \l__um_fontname_tl \tl_new:N \l__um_symfont_label_tl \tl_new:N \l__um_remap_style_tl \tl_new:N \l__um_fam_two_tl \tl_new:N \l__um_fam_three_tl \tl_new:N \l__um_curr_named_slot \tl_new:N \l__um_tmpa_tl \tl_new:N \l__um_tmpb_tl \tl_new:N \l__um_tmpc_tl \tl_new:N \l__um_mathstyle_tl \tl_new:N \l__um_radicals_tl \tl_new:N \l__um_nolimits_tl \tl_new:N \l__um_trial_family_tl \tl_new:N \l__um_ss_chain_tl \tl_new:N \l__um_tmpa_key_tl \tl_new:N \g__um_operator_mathfont_tl \tl_new:N \g__um_slash_delimiter_usv \tl_new:N \g__um_mathparam_settings_tl \tl_new:N \l__um_mathtable_tl \tl_new:N \g__um_mathtable_tl \tl_new:N \g__um_fontname_tl \tl_new:N \g__um_mversion_tl \tl_new:N \g__um_symfont_tl \tl_new:N \l__um_font_keyval_tl \tl_new:N \g__um_family_tl \tl_new:N \g__um_style_tl \tl_new:N \g__um_remap_style_tl \tl_new:N \l__um_not_token_name_tl \tl_new:N \g__um_curr_font_cmd_tl \tl_new:N \g__um_sqrt_font_cmd_tl \tl_new:N \g__um_prime_font_cmd_tl \tl_new:N \g__um_mathparam_store_tl \clist_new:N \g__um_char_nrange_clist \clist_new:N \g__um_unknown_keys_clist \clist_new:N \g__um_alphabet_clist \clist_new:N \l__um_mathmap_charints_clist \clist_new:N \l__um_unknown_keys_clist \clist_new:N \l__um_keyval_clist \clist_new:N \l__um_alphabet_clist \clist_new:N \g__um_bad_alpha_clist \clist_gput_right:Nx \g__um_bad_alpha_clist { \tl_to_str:n {bf} } \clist_gput_right:Nx \g__um_bad_alpha_clist { \tl_to_str:n {sf} } \clist_gput_right:Nx \g__um_bad_alpha_clist { \tl_to_str:n {bfsf} } \seq_new:N \l__um_missing_alph_seq \seq_new:N \g__um_mathalph_seq \seq_new:N \g__um_char_range_seq \seq_new:N \g__um_mclass_range_seq \seq_new:N \g__um_mathclasses_seq \seq_gset_from_clist:Nn \g__um_mathclasses_seq { \mathord,\mathalpha,\mathbin,\mathrel,\mathpunct, \mathop, \mathopen,\mathclose, \mathfence,\mathover,\mathunder, \mathaccent,\mathaccentoverlay,\mathbotaccent,\mathaccentwide,\mathbotaccentwide } \seq_new:N \g__um_default_mathalph_seq \seq_new:N \g__um_mathstyles_seq \prop_new:N \g__um_supers_prop \prop_new:N \g__um_subs_prop \muskip_new:N \g__um_primekern_muskip \muskip_gset:Nn \g__um_primekern_muskip { -\thinmuskip/2 }% arbitrary \fp_new:N \g__um_size_tfsf_fp \fp_new:N \g__um_size_sfssf_fp \quark_new:N \q_unicode_math %%^^A%% um-code-api.dtx -- part of UNICODE-MATH %%^^A%% The (underdeveloped) API to interface with the package internals. \cs_new:Nn \unimath_get_mathstyle: { \tl_use:N \l__um_mathstyle_tl } %%^^A%% um-code-ui.dtx -- part of UNICODE-MATH %%^^A%% The xparse user interface top-level definitions. \NewDocumentCommand \unimathsetup {m} { \keys_set:nn {unicode-math} {#1} } \NewDocumentCommand \setmathfont { O{} m O{} } { \__um_setmathfont:nn {#1,#3} {#2} } \NewDocumentCommand \setmathfontface { m O{} m O{} } { \__um_setmathfontface:Nnn #1 {#2,#4} {#3} } \@onlypreamble \setmathfontface \NewDocumentCommand \setoperatorfont {m} { \tl_gset:Nn \g__um_operator_mathfont_tl {#1} } \setoperatorfont{\mathrm} \NewDocumentCommand \addnolimits {m} { \tl_put_right:Nn \l__um_nolimits_tl {#1} } \NewDocumentCommand \removenolimits {m} { \tl_remove_all:Nn \l__um_nolimits_tl {#1} } %%^^A%% um-code-pkgopt.dtx -- part of UNICODE-MATH %%^^A%% Package options. \cs_new:Nn \__um_keys_choices:nn { \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_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 } \cs_new:Nn \__um_tl_map_dbl:Nnn { \quark_if_recursion_tail_stop:n {#2} \quark_if_recursion_tail_stop:n {#3} #1 {#2} {#3} \__um_tl_map_dbl:Nnn #1 } \__um_keys_choices:nn {mathup} { {sym} { \bool_gset_false:N \g__um_mathrm_text_bool } {text} { \bool_gset_true:N \g__um_mathrm_text_bool } } \__um_keys_choices:nn {mathrm} { {sym} { \bool_gset_false:N \g__um_mathrm_text_bool } {text} { \bool_gset_true:N \g__um_mathrm_text_bool } } \__um_keys_choices:nn {mathit} { {sym} { \bool_gset_false:N \g__um_mathit_text_bool } {text} { \bool_gset_true:N \g__um_mathit_text_bool } } \__um_keys_choices:nn {mathbf} { {sym} { \bool_gset_false:N \g__um_mathbf_text_bool } {text} { \bool_gset_true:N \g__um_mathbf_text_bool } } \__um_keys_choices:nn {mathsf} { {sym} { \bool_gset_false:N \g__um_mathsf_text_bool } {text} { \bool_gset_true:N \g__um_mathsf_text_bool } } \__um_keys_choices:nn {mathtt} { {sym} { \bool_gset_false:N \g__um_mathtt_text_bool } {text} { \bool_gset_true:N \g__um_mathtt_text_bool } } \__um_keys_choices:nn {normal-style} { {ISO} { \bool_gset_false:N \g__um_literal_bool \bool_gset_false:N \g__um_upGreek_bool \bool_gset_false:N \g__um_upgreek_bool \bool_gset_false:N \g__um_upLatin_bool \bool_gset_false:N \g__um_uplatin_bool } {TeX} { \bool_gset_false:N \g__um_literal_bool \bool_gset_true:N \g__um_upGreek_bool \bool_gset_false:N \g__um_upgreek_bool \bool_gset_false:N \g__um_upLatin_bool \bool_gset_false:N \g__um_uplatin_bool } {french} { \bool_gset_false:N \g__um_literal_bool \bool_gset_true:N \g__um_upGreek_bool \bool_gset_true:N \g__um_upgreek_bool \bool_gset_true:N \g__um_upLatin_bool \bool_gset_false:N \g__um_uplatin_bool } {upright} { \bool_gset_false:N \g__um_literal_bool \bool_gset_true:N \g__um_upGreek_bool \bool_gset_true:N \g__um_upgreek_bool \bool_gset_true:N \g__um_upLatin_bool \bool_gset_true:N \g__um_uplatin_bool } {literal} { \bool_gset_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 } } {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_gset_false:N \g__um_bfliteral_bool \bool_gset_false:N \g__um_bfupGreek_bool \bool_gset_false:N \g__um_bfupgreek_bool \bool_gset_false:N \g__um_bfupLatin_bool \bool_gset_false:N \g__um_bfuplatin_bool } {TeX} { \bool_gset_false:N \g__um_bfliteral_bool \bool_gset_true:N \g__um_bfupGreek_bool \bool_gset_false:N \g__um_bfupgreek_bool \bool_gset_true:N \g__um_bfupLatin_bool \bool_gset_true:N \g__um_bfuplatin_bool } {upright} { \bool_gset_false:N \g__um_bfliteral_bool \bool_gset_true:N \g__um_bfupGreek_bool \bool_gset_true:N \g__um_bfupgreek_bool \bool_gset_true:N \g__um_bfupLatin_bool \bool_gset_true:N \g__um_bfuplatin_bool } {literal} { \bool_gset_true:N \g__um_bfliteral_bool } } \__um_keys_choices:nn {sans-style} { {italic} { \bool_gset_false:N \g__um_upsans_bool } {upright} { \bool_gset_true:N \g__um_upsans_bool } {literal} { \bool_gset_true:N \g__um_sfliteral_bool } } \__um_keys_choices:nn {nabla} { {upright} { \bool_gset_false:N \g__um_literal_Nabla_bool \bool_gset_true:N \g__um_upNabla_bool } {italic} { \bool_gset_false:N \g__um_literal_Nabla_bool \bool_gset_false:N \g__um_upNabla_bool } {literal} { \bool_gset_true:N \g__um_literal_Nabla_bool } } \__um_keys_choices:nn {partial} { {upright} { \bool_gset_false:N \g__um_literal_partial_bool \bool_gset_true:N \g__um_uppartial_bool } {italic} { \bool_gset_false:N \g__um_literal_partial_bool \bool_gset_false:N \g__um_uppartial_bool } {literal} { \bool_gset_true:N \g__um_literal_partial_bool } } \__um_keys_choices:nn {colon} { {literal} { \bool_gset_true:N \g__um_literal_colon_bool } {TeX} { \bool_gset_false:N \g__um_literal_colon_bool } } \__um_keys_choices:nn {slash-delimiter} { {ascii} { \tl_gset:Nn \g__um_slash_delimiter_usv {"002F} } {frac} { \tl_gset:Nn \g__um_slash_delimiter_usv {"2044} } {div} { \tl_gset:Nn \g__um_slash_delimiter_usv {"2215} } } \__um_keys_choices:nn {active-frac} { {small} { \cs_if_exist:NTF \tfrac { \bool_set_true:N \l__um_smallfrac_bool } { \__um_warning:n {no-tfrac} \bool_set_false:N \l__um_smallfrac_bool } \use:c {__um_setup_active_frac:} } {normalsize} { \bool_set_false:N \l__um_smallfrac_bool \use:c {__um_setup_active_frac:} } } \keys_define:nn {unicode-math} { warnings-off .code:n = { \clist_map_inline:nn {#1} { \msg_redirect_name:nnn { unicode-math } { ##1 } { none } } } } \__um_keys_choices:nn {trace} { {on} {} % default {debug} { \msg_redirect_module:nnn { unicode-math } { log } { warning } } {off} { \msg_redirect_module:nnn { unicode-math } { log } { none } } } \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} %%^^A%% um-code-msg.dtx -- part of UNICODE-MATH %%^^A%% Definitions of error, warning, and log messages. \char_set_catcode_space:n {32} \__um_msg_new:nn {no-tfrac} { Small fraction command \protect\tfrac\ not defined.\\ Load amsmath or define it manually before loading unicode-math. } \__um_msg_new:nn {default-math-font} { Defining the default maths font as '\l__um_fontname_tl'. } \__um_msg_new:nn {setup-implicit} { Setup alphabets: implicit mode. } \__um_msg_new:nn {setup-explicit} { Setup alphabets: explicit mode. } \__um_msg_new:nn {alph-initialise} { Initialising \@backslashchar math#1. } \__um_msg_new:nn {setup-alph} { Setup alphabet: #1. } \__um_msg_new:nn {no-alphabet} { I am trying to set up alphabet"#1" but there are no configuration settings for it. (See source file "unicode-math-alphabets.dtx" to debug.) } \__um_msg_new:nn {no-named-range} { I am trying to define new alphabet "#2" in range "#1", but range "#1" hasn't been defined yet. } \__um_msg_new:nn {missing-alphabets} { Missing math alphabets in font "\fontname\g__um_curr_font_cmd_tl" \\ \\ \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 \\ } \__um_msg_new:nn {macro-expected} { I've expected that #1 is a macro, but it isn't. } \__um_msg_new:nn {wrong-meaning} { I've expected #1 to have the meaning #3, but it has the meaning #2. } \__um_msg_new:nn {patch-macro} { I'm going to patch macro #1. } \__um_msg_new:nn {mathtools-overbracket} { Using \token_to_str:N \overbracket\ and \token_to_str:N \underbracket\ from `mathtools' package.\\ \\ Use \token_to_str:N \Uoverbracket\ and \token_to_str:N \Uunderbracket\ for original `unicode-math' definition. } \__um_msg_new:nn {mathtools-colon} { I'm going to overwrite the following commands from the `mathtools' package: \\ \\ \ \ \ \ \token_to_str:N \dblcolon, \token_to_str:N \coloneqq, \token_to_str:N \Coloneqq, \token_to_str:N \eqqcolon. \\ \\ Note that since I won't overwrite the other colon-like commands, using them will lead to inconsistencies. } \__um_msg_new:nn {colonequals} { I'm going to overwrite the following commands from the `colonequals' package: \\ \\ \ \ \ \ \token_to_str:N \ratio, \token_to_str:N \coloncolon, \token_to_str:N \minuscolon, \\ \ \ \ \ \token_to_str:N \colonequals, \token_to_str:N \equalscolon, \token_to_str:N \coloncolonequals. \\ \\ Note that since I won't overwrite the other colon-like commands, using them will lead to inconsistencies. Furthermore, changing \token_to_str:N \colonsep \c_space_tl or \token_to_str:N \doublecolonsep \c_space_tl won't have any effect on the re-defined commands. } \__um_msg_new:nn {bad-cs-in-range} { Command `#1` in math range is not recognised as a maths symbol. Check file "unicode-math-table.tex" for allowable commands. } \__um_msg_new:nn {legacy-char-not-supported} { Command `#1` is a legacy maths symbol that is not supported by unicode-math. } \__um_msg_new:nn {range-not-bf-sf} { Range alphabets cannot include alphabets referring to `bf`, `sf`, or `bfsf` since they relate to input commands not output glyphs. Use `bfit` or `bfup` (etc.) to specify which. } \__um_msg_new:nn {no-main-font} { No main maths font has been set up yet.\\If you simply want ‘the default’, use: \\ \iow_indent:n {\token_to_str:N\setmathfont{latinmodern-math.otf}} } \__um_msg_new:nn {not-ot-math} { The first font loaded by unicode-math must be an OpenType Math font (with script=math). If you simply want ‘the default’ before loading supplementary fonts over the top for certain ranges, use: \\ \iow_indent:n {\token_to_str:N\setmathfont{latinmodern-math.otf}} } \char_set_catcode_ignore:n {32} %%^^A%% um-code-usv.dtx -- part of UNICODE-MATH %%^^A%% Mapping of mathematical unicode slots for alphabets. \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} {epsilon} {"1D716} \usv_set:nnn {normal} {vartheta} {"1D717} \usv_set:nnn {normal} {varkappa} {"1D718} \usv_set:nnn {normal} {phi} {"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} {epsilon} {"3F5} \usv_set:nnn {up} {vartheta} {"3D1} \usv_set:nnn {up} {varkappa} {"3F0} \usv_set:nnn {up} {phi} {"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} {epsilon} {"1D6DC} \usv_set:nnn {bfup} {vartheta} {"1D6DD} \usv_set:nnn {bfup} {varkappa} {"1D6DE} \usv_set:nnn {bfup} {phi} {"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} {epsilon} {"1D716} \usv_set:nnn {it} {vartheta} {"1D717} \usv_set:nnn {it} {varkappa} {"1D718} \usv_set:nnn {it} {phi} {"1D719} \usv_set:nnn {it} {varrho} {"1D71A} \usv_set:nnn {it} {varpi} {"1D71B} \usv_set:nnn {bfit} {varTheta} {"1D72D} \usv_set:nnn {bfit} {epsilon} {"1D750} \usv_set:nnn {bfit} {vartheta} {"1D751} \usv_set:nnn {bfit} {varkappa} {"1D752} \usv_set:nnn {bfit} {phi} {"1D753} \usv_set:nnn {bfit} {varrho} {"1D754} \usv_set:nnn {bfit} {varpi} {"1D755} \usv_set:nnn {bfsfup} {varTheta} {"1D767} \usv_set:nnn {bfsfup} {epsilon} {"1D78A} \usv_set:nnn {bfsfup} {vartheta} {"1D78B} \usv_set:nnn {bfsfup} {varkappa} {"1D78C} \usv_set:nnn {bfsfup} {phi} {"1D78D} \usv_set:nnn {bfsfup} {varrho} {"1D78E} \usv_set:nnn {bfsfup} {varpi} {"1D78F} \usv_set:nnn {bfsfit} {varTheta} {"1D7A1} \usv_set:nnn {bfsfit} {epsilon} {"1D7C4} \usv_set:nnn {bfsfit} {vartheta} {"1D7C5} \usv_set:nnn {bfsfit} {varkappa} {"1D7C6} \usv_set:nnn {bfsfit} {phi} {"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} %%^^A%% um-code-setchar.dtx -- part of UNICODE-MATH %%^^A%% General assignment of maths symbols. \group_begin: \file_get:nnN {unicode-math-table.tex} {} \l__um_mathtable_tl \cs_set:Npn \UnicodeMathSymbol #1#2#3#4 { \exp_not:n { \__um_sym:nnn {#1} {#2} {#3} } } \tl_gset:Nx \g__um_mathtable_tl {\l__um_mathtable_tl} \group_end: \__um_cs_new:Nn \__um_input_math_symbol_table: {\g__um_mathtable_tl} \AtBeginDocument{\__um_define_math_chars:} \__um_cs_new:Nn \__um_define_math_chars: { \group_begin: \cs_set:Npn \__um_sym:nnn ##1##2##3 { \tl_if_in:nnT { \mathord \mathalpha \mathbin \mathrel \mathpunct \mathop \mathfence } {##3} { \exp_last_unbraced:NNx \cs_gset_eq:NN ##2 { \char_generate:nn {##1} {12} } } } \__um_input_math_symbol_table: \group_end: } \cs_set:Nn \__um_set_mathsymbol:nNNn { \bool_lazy_and:nnT { \int_compare_p:nNn {#4} > {127} } { \int_compare_p:nNn { \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 { \__um_set_math_accent:Nnnn #2 {fixed} {#1} {#4} } \mathbotaccent { \__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 { \__um_set_math_overunder:Nnnn #2 {} {#1} {#4} } \mathunder { \__um_set_math_overunder:Nnnn #2 {bottom} {#1} {#4} } \mathaccentoverlay { \__um_set_math_accent:Nnnn #2 {overlay~ fixed} {#1} {#4} } } } \edef\mathfence{\string\mathfence} \edef\mathover{\string\mathover} \edef\mathunder{\string\mathunder} \edef\mathbotaccent{\string\mathbotaccent} \edef\mathaccentwide{\string\mathaccentwide} \edef\mathaccentoverlay{\string\mathaccentoverlay} \edef\mathbotaccentwide{\string\mathbotaccentwide} \cs_new:Nn \__um_set_big_operator:nnn { \__um_char_gmake_mathactive:n {#3} \cs_set_protected_nopar:Npx \__um_tmpa: { \exp_not:c { \cs_to_str:N #2 _sym } } \char_gset_active_eq:nN {#3} \__um_tmpa: \__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 } } } \cs_new:Nn \__um_set_math_open:nnn { \tl_if_in:NnTF \l__um_radicals_tl {#2} { \cs_if_exist:NF #2 { %% todo: check if the check is necessary \cs_gset_protected_nopar:Npx #2 { \exp_not:c { \cs_to_str:N #2 sign } } } \cs_gset_protected_nopar:cpx { \cs_to_str:N #2 sign } { \__um_radical:nn {#1} {#3} } \tl_if_exist:cF {c__um_radical_\cs_to_str:N #2_tl} { \tl_const:cn {c__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} \cs_gset_protected_nopar:Npx #2 { \__um_delimiter:Nnn \mathopen {#1} {#3} } } } \cs_new:Nn \__um_set_math_close:nnn { \__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} } } \cs_new:Nn \__um_set_math_fence:nnnn { \__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} } \cs_gset_protected_nopar:cpx {r \cs_to_str:N #2} { \__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} } % TODO: remove braces above ^^ which work around a LuaTeX bug \limits } } %%^^A%% um-code-mathtext.dtx -- part of UNICODE-MATH %%^^A%% The "math text" commands such as `\mathbf` and co. \keys_define:nn {__um_mathface} { version .tl_set:N = \l__um_mversion_tl } \__um_cs_new:Nn \__um_setmathfontface:Nnn { \tl_clear:N \l__um_mversion_tl \keys_set_known:nnN {__um_mathface} {#2} \l__um_keyval_clist \fontspec_set_family:Nxx \l__um_tmpa_tl { ItalicFont={}, BoldFont={}, SmallCapsFont={}, \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} {\shapedefault} } \SetMathAlphabet #1 {\l__um_mversion_tl} {\g_fontspec_encoding_tl} {\l__um_tmpa_tl} {\mddefault} {\shapedefault} % integrate with fontspec's \setmathrm etc: \tl_case:Nn #1 { \mathrm { \cs_gset_eq:NN \g__fontspec_mathrm_tl \l__um_tmpa_tl } \mathsf { \cs_gset_eq:NN \g__fontspec_mathsf_tl \l__um_tmpa_tl } \mathtt { \cs_gset_eq:NN \g__fontspec_mathtt_tl \l__um_tmpa_tl } } } \cs_set:Npn \use@mathgroup #1 #2 { \math@bgroup \cs_if_eq:cNF {M@\f@encoding} #1 {#1} \__um_switch_to:n {literal} \__um_mathgroup_set:n {#2} \math@egroup } \cs_set:Npn \operator@font { \__um_switch_to:n {literal} \__um_fontswitch:n { \g__um_operator_mathfont_tl } } \cs_set:Nn \__um_fontswitch:n { \cs_set_eq:NN \math@bgroup \scan_stop: \cs_set_eq:NN \__um_group_begin: \scan_stop: \cs_set:Npn \__um_group_end:n % takes no argument in this case { \cs_set_eq:NN \__um_group_begin: \__um_group_begin_frozen: \cs_set_eq:NN \__um_group_end:n \__um_group_end_frozen:n \cs_set_eq:NN \math@bgroup \@@math@bgroup \cs_set_eq:NN \math@egroup \@@math@egroup } \cs_set_eq:NN \math@egroup \__um_group_end:n #1 \scan_stop: } \cs_generate_variant:Nn \tl_if_eq:nnT {o} \__um_cs_set:Nn \__fontspec_setmainfont_hook:nn { \tl_if_eq:onT {\g__fontspec_mathrm_tl} {\rmdefault} { \fontspec_gset_family:Nnn \g__fontspec_mathrm_tl {Renderer=Basic,#1} {#2} \__fontspec_setmathrm_hook:nn {#1} {#2} } } \__um_cs_set:Nn \__fontspec_setsansfont_hook:nn { \tl_if_eq:onT {\g__fontspec_mathsf_tl} {\sfdefault} { \fontspec_gset_family:Nnn \g__fontspec_mathsf_tl {Renderer=Basic,#1} {#2} \__fontspec_setmathsf_hook:nn {#1} {#2} } } \__um_cs_set:Nn \__fontspec_setmonofont_hook:nn { \tl_if_eq:onT {\g__fontspec_mathtt_tl} {\ttdefault} { \fontspec_gset_family:Nnn \g__fontspec_mathtt_tl {Renderer=Basic,#1} {#2} \__fontspec_setmathtt_hook:nn {#1} {#2} } } \cs_new:Nn \__um_rm_series_default:n { \ifcsname #1series@rm\endcsname \csname #1series@rm\endcsname \else \csname #1default\endcsname \fi } \__um_cs_set:Nn \__fontspec_setmathrm_hook:nn { \SetMathAlphabet\mathrm{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl{\__um_rm_series_default:n {md}}\shapedefault \SetMathAlphabet\mathit{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl{\__um_rm_series_default:n {md}}\itdefault \SetMathAlphabet\mathbf{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl{\__um_rm_series_default:n {bf}}\shapedefault } \__um_cs_set:Nn \__fontspec_setboldmathrm_hook:nn { \SetMathAlphabet\mathrm{bold}\g_fontspec_encoding_tl\g__fontspec_bfmathrm_tl{\__um_rm_series_default:n {md}}\shapedefault \SetMathAlphabet\mathbf{bold}\g_fontspec_encoding_tl\g__fontspec_bfmathrm_tl{\__um_rm_series_default:n {bf}}\shapedefault \SetMathAlphabet\mathit{bold}\g_fontspec_encoding_tl\g__fontspec_bfmathrm_tl\mddefault\itdefault } \__um_cs_set:Nn \__fontspec_setmathsf_hook:nn { \SetMathAlphabet\mathsf{normal}\g_fontspec_encoding_tl\g__fontspec_mathsf_tl{\__um_rm_series_default:n {md}}\shapedefault \SetMathAlphabet\mathsf{bold} \g_fontspec_encoding_tl\g__fontspec_mathsf_tl{\__um_rm_series_default:n {bf}}\shapedefault } \__um_cs_set:Nn \__fontspec_setmathtt_hook:nn { \SetMathAlphabet\mathtt{normal}\g_fontspec_encoding_tl\g__fontspec_mathtt_tl{\__um_rm_series_default:n {md}}\shapedefault \SetMathAlphabet\mathtt{bold} \g_fontspec_encoding_tl\g__fontspec_mathtt_tl{\__um_rm_series_default:n {bf}}\shapedefault } \tl_if_eq:onF {\g__fontspec_mathrm_tl} {\rmdefault} { \__fontspec_setmathrm_hook:nn {} {} } \tl_if_eq:onF {\g__fontspec_mathsf_tl} {\sfdefault} { \__fontspec_setmathsf_hook:nn {} {} } \tl_if_eq:onF {\g__fontspec_mathtt_tl} {\ttdefault} { \__fontspec_setmathtt_hook:nn {} {} } \AtBeginDocument { \tl_if_eq:onT {\g__fontspec_mathrm_tl} {\rmdefault} { \__fontspec_setmathrm_hook:nn {} {} } \tl_if_eq:onT {\g__fontspec_mathsf_tl} {\sfdefault} { \__fontspec_setmathsf_hook:nn {} {} } \tl_if_eq:onT {\g__fontspec_mathtt_tl} {\ttdefault} { \__fontspec_setmathtt_hook:nn {} {} } } %%^^A%% um-code-main.dtx -- part of UNICODE-MATH %%^^A%% Definition of `\setmainfont`. \__um_cs_new:Nn \__um_setmathfont:nn { \__um_init:n {#2} \cs_set_eq:NN \glb@currsize \scan_stop: \cs_if_exist:cF { S@ \f@size } { \calculate@math@sizes } \use:c { S@ \f@size } \keys_set_known:nnN {unicode-math} {#1} \l__um_unknown_keys_clist \bool_if:NT \g__um_init_bool \__um_fontspec_trial_font: \bool_if:NT \g__um_init_bool \__um_declare_math_sizes: \__um_fontspec_select_font: \__um_setup_math_fam: \bool_if:NT \g__um_init_bool { \__um_setup_legacy_fam_two: \__um_setup_legacy_fam_three: } \__um_input_math_symbol_table: \bool_if:NT \g__um_init_bool \__um_onceoff_setup: \__um_remap_symbols: \__um_setup_mathactives: \__um_setup_delcodes: \__um_setup_alphabets: %% TODO: what of the above should only be run for the "default"/"main" font? \bool_if:NTF \g__um_init_bool { \bool_gset_true:N \g__um_main_font_defined_bool \__um_mathparam_store: \__um_log:n {default-math-font} } { \__um_mathparam_restore: } } \AtBeginDocument { \bool_if:NF \g__um_main_font_defined_bool \__um_load_lm: } \__um_cs_new:Nn \__um_load_lm: { \setmathfont{latinmodern-math.otf}[BoldFont={latinmodern-math.otf}] } \__um_cs_new:Nn \__um_init:n { \tl_set:Nn \l__um_fontname_tl {#1} \bool_gset_true:N \g__um_ot_math_bool \tl_set:Nn \l__um_mversion_tl {normal} \tl_set:Nn \l__um_symfont_label_tl {operators} \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 \bool_gset_true:N \g__um_init_bool \seq_gclear:N \g__um_char_range_seq \clist_clear:N \l__um_mathmap_charints_clist \seq_gclear:N \g__um_mathalph_seq \seq_clear:N \l__um_missing_alph_seq \cs_set_eq:NN \__um_sym:nnn \__um_process_symbol_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_assign_delcode:nn \__um_assign_delcode_noparse:nn \cs_set_eq:NN \__um_make_mathactive:nNN \__um_make_mathactive_noparse:nNN } \tl_new:N \g__um_main_font_cmd_tl \cs_new:Nn \__um_sf_size: { \__um_fontdimen_pc_to_pt:nN {10} \g__um_trial_font } \cs_new:Nn \__um_ssf_size: { \__um_fontdimen_pc_to_pt:nN {11} \g__um_trial_font } \__um_cs_new:Nn \__um_declare_math_sizes: { \fp_gset:Nn \g__um_size_tfsf_fp { (\f@size + \__um_sf_size: )/2 } \fp_gset:Nn \g__um_size_sfssf_fp { (\__um_sf_size: + \__um_ssf_size:)/2 } \dim_compare:nF { \fontdimen 10 \g__um_trial_font == 0pt } { \DeclareMathSizes { \f@size } { \f@size } { \__um_sf_size: } { \__um_ssf_size: } } } \__um_cs_new:Nn \__um_fontspec_trial_font: { \tl_set:Nx \l__um_font_keyval_tl { Renderer = Basic, BoldItalicFont = {}, ItalicFont = {}, SmallCapsFont = {}, Script = Math, FontAdjustment = { \__um_luatex_copy_fontdimens: }, \l__um_unknown_keys_clist } \fontspec_set_family:Nxn \l__um_trial_family_tl {\l__um_font_keyval_tl} {\l__um_fontname_tl} \group_begin: \fontfamily { \l__um_trial_family_tl } \selectfont \exp_last_unbraced:NNo \__um_fontface_gset_eq:NN \g__um_trial_font \font@name \fontspec_if_script:nF {math} { \__um_warning:n {not-ot-math} \bool_gset_false:N \g__um_ot_math_bool \bool_gset_false:N \g__um_init_bool } \group_end: } \__um_cs_new:Nn \__um_fontspec_select_font: { \tl_set:Nx \l__um_font_keyval_tl { Renderer = Basic, BoldItalicFont = {}, ItalicFont = {}, SmallCapsFont = {}, Script = Math, SizeFeatures = { { Size = \fp_use:N \g__um_size_tfsf_fp - } , { Size = \fp_use:N \g__um_size_sfssf_fp - \fp_use:N \g__um_size_tfsf_fp , Font = \l__um_script_font_tl , \l__um_script_features_tl } , { Size = - \fp_use:N \g__um_size_sfssf_fp , Font = \l__um_sscript_font_tl , \l__um_sscript_features_tl } } , FontAdjustment = { \__um_luatex_copy_fontdimens: }, \l__um_unknown_keys_clist } \fontspec_set_family:Nxn \l__um_family_tl {\l__um_font_keyval_tl} {\l__um_fontname_tl} \int_gincr:N \g__um_fonts_used_int \group_begin: \fontfamily { \l__um_family_tl } \selectfont \exp_last_unbraced:Nno \__um_fontface_gset_eq:cN {g__um_mathfont_ \int_use:N \g__um_fonts_used_int _font} \font@name \tl_gset:Nx \g__um_curr_font_cmd_tl { \exp_not:c {g__um_mathfont_ \int_use:N \g__um_fonts_used_int _font} } \bool_if:NT \g__um_init_bool { \exp_last_unbraced:NNo \__um_fontface_gset_eq:NN \l__um_font \font@name } \group_end: } \tl_gset:Nn \g__um_main_font_cmd_tl { \l__um_font } \tl_gset:Nn \g__um_sqrt_font_cmd_tl { \l__um_font } \tl_gset:Nn \g__um_prime_font_cmd_tl { \l__um_font } \__um_cs_new:Nn \__um_luatex_copy_fontdimens: { \__um_fontdimen_from_param:nn {10} {ScriptPercentScaleDown} \__um_fontdimen_from_param:nn {11} {ScriptScriptPercentScaleDown} \__um_fontdimen_from_param:nn {15} {AxisHeight} \__um_fontdimen_from_param:nn {18} {SubscriptShiftDown} \__um_fontdimen_from_param:nn {20} {SubscriptBaselineDropMin} \__um_fontdimen_from_param:nn {21} {SuperscriptShiftUp} \__um_fontdimen_from_param:nn {22} {SuperscriptShiftUpCramped} \__um_fontdimen_from_param:nn {24} {SuperscriptBaselineDropMax} \__um_fontdimen_from_param:nn {28} {UpperLimitGapMin} \__um_fontdimen_from_param:nn {29} {UpperLimitBaselineRiseMin} \__um_fontdimen_from_param:nn {30} {LowerLimitGapMin} \__um_fontdimen_from_param:nn {31} {LowerLimitBaselineDropMin} \__um_fontdimen_from_param:nn {32} {StackTopShiftUp} \__um_fontdimen_from_param:nn {42} {FractionNumeratorShiftUp} \__um_fontdimen_from_param:nn {43} {FractionNumeratorDisplayStyleShiftUp} \__um_fontdimen_from_param:nn {44} {FractionDenominatorShiftDown} \__um_fontdimen_from_param:nn {45} {FractionDenominatorDisplayStyleShiftDown} \__um_fontdimen_from_param:nn {48} {FractionRuleThickness} } \__um_cs_new:Nn \__um_setup_math_fam: { \cs_if_exist:cF { sym \l__um_symfont_label_tl } { \DeclareSymbolFont{\l__um_symfont_label_tl} {\encodingdefault}{\l__um_family_tl}{\mddefault}{\shapedefault} } \SetSymbolFont{\l__um_symfont_label_tl}{\l__um_mversion_tl} {\encodingdefault}{\l__um_family_tl}{\mddefault}{\shapedefault} \str_if_eq:eeT {\l__um_mversion_tl} {normal} { \SetSymbolFont{\l__um_symfont_label_tl}{bold} {\encodingdefault}{\l__um_family_tl}{\bfdefault}{\shapedefault} } } \__um_cs_new:Nn \__um_setup_legacy_fam_two: { \fontspec_set_family:Nxn \l__um_fam_two_tl { \l__um_font_keyval_tl, ScaleAgain = 1.0001, FontAdjustment = { \__um_copy_fontdimen:nnN { 8} {43} \g__um_main_font_cmd_tl \__um_copy_fontdimen:nnN { 9} {42} \g__um_main_font_cmd_tl \__um_copy_fontdimen:nnN {10} {32} \g__um_main_font_cmd_tl \__um_copy_fontdimen:nnN {11} {45} \g__um_main_font_cmd_tl \__um_copy_fontdimen:nnN {12} {44} \g__um_main_font_cmd_tl \__um_copy_fontdimen:nnN {13} {21} \g__um_main_font_cmd_tl \__um_copy_fontdimen:nnN {14} {21} \g__um_main_font_cmd_tl \__um_copy_fontdimen:nnN {15} {22} \g__um_main_font_cmd_tl \__um_copy_fontdimen:nnN {16} {18} \g__um_main_font_cmd_tl \__um_copy_fontdimen:nnN {17} {18} \g__um_main_font_cmd_tl \__um_copy_fontdimen:nnN {18} {24} \g__um_main_font_cmd_tl \__um_copy_fontdimen:nnN {19} {20} \g__um_main_font_cmd_tl \__um_copy_fontdimen:nnN {22} {15} \g__um_main_font_cmd_tl \__um_zero_fontdimen:n {20} % delim1 = FractionDelimiterDisplaySize \__um_zero_fontdimen:n {21} % delim2 = FractionDelimiterSize } } {\l__um_fontname_tl} \SetSymbolFont{symbols}{\l__um_mversion_tl} {\encodingdefault}{\l__um_fam_two_tl}{\mddefault}{\shapedefault} \str_if_eq:eeT {\l__um_mversion_tl} {normal} { \SetSymbolFont{symbols}{bold} {\encodingdefault}{\l__um_fam_two_tl}{\bfdefault}{\shapedefault} } } \__um_cs_new:Nn \__um_setup_legacy_fam_three: { \fontspec_set_family:Nxn \l__um_fam_three_tl { \l__um_font_keyval_tl, ScaleAgain = 0.9999, FontAdjustment = { \__um_copy_fontdimen:nnN { 8} {48} \g__um_main_font_cmd_tl \__um_copy_fontdimen:nnN { 9} {28} \g__um_main_font_cmd_tl \__um_copy_fontdimen:nnN {10} {30} \g__um_main_font_cmd_tl \__um_copy_fontdimen:nnN {11} {29} \g__um_main_font_cmd_tl \__um_copy_fontdimen:nnN {12} {31} \g__um_main_font_cmd_tl \__um_zero_fontdimen:n {13} } } {\l__um_fontname_tl} \SetSymbolFont{largesymbols}{\l__um_mversion_tl} {\encodingdefault}{\l__um_fam_three_tl}{\mddefault}{\shapedefault} \str_if_eq:eeT {\l__um_mversion_tl} {normal} { \SetSymbolFont{largesymbols}{bold} {\encodingdefault}{\l__um_fam_three_tl}{\bfdefault}{\shapedefault} } } \__um_cs_new:Nn \__um_onceoff_setup: { \__um_set_delcode:nnn {operators} {`\.} {0} } \cs_set:Nn \__um_process_symbol_noparse:nnn { \__um_set_mathsymbol:nNNn {\l__um_symfont_label_tl} #2 #3 {#1} } \cs_set:Nn \__um_process_symbol_parse:nnn { \__um_if_char_spec:nNT {#1} {#3} { \__um_process_symbol_noparse:nnn {#1} {#2} {#3} } } \__um_cs_new:Nn \__um_remap_symbols: { \__um_remap_symbol:nnn {`\-} {\mathbin} {"2212} \__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) } } \cs_new:Nn \__um_remap_symbol_parse:nnn { \__um_if_char_spec:nNT {#3} {#2} { \__um_remap_symbol_noparse:nnn {#1} {#2} {#3} } } \cs_new:Nn \__um_remap_symbol_noparse:nnn { \clist_map_inline:nn {#1} { \__um_set_mathcode:nnnn {##1} {#2} {\l__um_symfont_label_tl} {#3} } } \__um_cs_new:Nn \__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 } \cs_new:Nn \__um_make_mathactive_parse:nNN { \__um_if_char_spec:nNT {#1} #3 { \__um_make_mathactive_noparse:nNN {#1} #2 #3 } } \cs_new:Nn \__um_make_mathactive_noparse:nNN { \__um_set_mathchar:NNnn #2 #3 {\l__um_symfont_label_tl} {#1} \__um_char_gmake_mathactive:n {#1} } \cs_new:Nn \__um_assign_delcode_noparse:nn { \__um_set_delcode:nnn \l__um_symfont_label_tl {#1} {#2} } \cs_new:Nn \__um_assign_delcode_parse:nn { \__um_if_char_spec:nNT {#2} \@nil { \__um_assign_delcode_noparse:nn {#1} {#2} } } \cs_new:Nn \__um_assign_delcode:n { \__um_assign_delcode:nn {#1} {#1} } \__um_cs_new:Nn \__um_setup_delcodes: { \__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_set:Nn \l__um_nolimits_tl { \int\iint\iiint\iiiint\oint\oiint\oiiint \intclockwise\varointclockwise\ointctrclockwise\sumint \intbar\intBar\fint\cirfnint\awint\rppolint \scpolint\npolint\pointint\sqint\intlarhk\intx \intcap\intcup\upint\lowint } \tl_set:Nn \l__um_radicals_tl {\sqrt \longdivision \cuberoot \fourthroot} \__um_cs_new:Nn \__um_mathparam_restore: { \glb@settings \tl_use:N \g__um_mathparam_settings_tl } \__um_cs_new:Nn \__um_mathparam_store: { \glb@settings \tl_gset:Nx \g__um_mathparam_settings_tl { \__um_mathparam_store_aux:N \displaystyle \__um_mathparam_store_aux:N \textstyle \__um_mathparam_store_aux:N \scriptstyle \__um_mathparam_store_aux:N \scriptscriptstyle } } \cs_set:Nn \__um_mathparam_store_aux:N { \Umathquad #1 = \the \Umathquad #1 \scan_stop: \Umathaxis #1 = \the \Umathaxis #1 \scan_stop: \Umathoperatorsize #1 = \the \Umathoperatorsize #1 \scan_stop: \Umathoverbarkern #1 = \the \Umathoverbarkern #1 \scan_stop: \Umathoverbarrule #1 = \the \Umathoverbarrule #1 \scan_stop: \Umathoverbarvgap #1 = \the \Umathoverbarvgap #1 \scan_stop: \Umathunderbarkern #1 = \the \Umathunderbarkern #1 \scan_stop: \Umathunderbarrule #1 = \the \Umathunderbarrule #1 \scan_stop: \Umathunderbarvgap #1 = \the \Umathunderbarvgap #1 \scan_stop: \Umathradicalkern #1 = \the \Umathradicalkern #1 \scan_stop: \Umathradicalrule #1 = \the \Umathradicalrule #1 \scan_stop: \Umathradicalvgap #1 = \the \Umathradicalvgap #1 \scan_stop: \Umathradicaldegreebefore #1 = \the \Umathradicaldegreebefore #1 \scan_stop: \Umathradicaldegreeafter #1 = \the \Umathradicaldegreeafter #1 \scan_stop: \Umathradicaldegreeraise #1 = \the \Umathradicaldegreeraise #1 \scan_stop: \Umathstackvgap #1 = \the \Umathstackvgap #1 \scan_stop: \Umathstacknumup #1 = \the \Umathstacknumup #1 \scan_stop: \Umathstackdenomdown #1 = \the \Umathstackdenomdown #1 \scan_stop: \Umathfractionrule #1 = \the \Umathfractionrule #1 \scan_stop: \Umathfractionnumvgap #1 = \the \Umathfractionnumvgap #1 \scan_stop: \Umathfractionnumup #1 = \the \Umathfractionnumup #1 \scan_stop: \Umathfractiondenomvgap #1 = \the \Umathfractiondenomvgap #1 \scan_stop: \Umathfractiondenomdown #1 = \the \Umathfractiondenomdown #1 \scan_stop: \Umathfractiondelsize #1 = \the \Umathfractiondelsize #1 \scan_stop: \Umathlimitabovevgap #1 = \the \Umathlimitabovevgap #1 \scan_stop: \Umathlimitabovebgap #1 = \the \Umathlimitabovebgap #1 \scan_stop: \Umathlimitabovekern #1 = \the \Umathlimitabovekern #1 \scan_stop: \Umathlimitbelowvgap #1 = \the \Umathlimitbelowvgap #1 \scan_stop: \Umathlimitbelowbgap #1 = \the \Umathlimitbelowbgap #1 \scan_stop: \Umathlimitbelowkern #1 = \the \Umathlimitbelowkern #1 \scan_stop: \Umathoverdelimitervgap #1 = \the \Umathoverdelimitervgap #1 \scan_stop: \Umathoverdelimiterbgap #1 = \the \Umathoverdelimiterbgap #1 \scan_stop: \Umathunderdelimitervgap #1 = \the \Umathunderdelimitervgap #1 \scan_stop: \Umathunderdelimiterbgap #1 = \the \Umathunderdelimiterbgap #1 \scan_stop: \Umathsubshiftdrop #1 = \the \Umathsubshiftdrop #1 \scan_stop: \Umathsubshiftdown #1 = \the \Umathsubshiftdown #1 \scan_stop: \Umathsupshiftdrop #1 = \the \Umathsupshiftdrop #1 \scan_stop: \Umathsupshiftup #1 = \the \Umathsupshiftup #1 \scan_stop: \Umathsubsupshiftdown #1 = \the \Umathsubsupshiftdown #1 \scan_stop: \Umathsubtopmax #1 = \the \Umathsubtopmax #1 \scan_stop: \Umathsupbottommin #1 = \the \Umathsupbottommin #1 \scan_stop: \Umathsupsubbottommax #1 = \the \Umathsupsubbottommax #1 \scan_stop: \Umathsubsupvgap #1 = \the \Umathsubsupvgap #1 \scan_stop: \Umathspaceafterscript #1 = \the \Umathspaceafterscript #1 \scan_stop: \Umathconnectoroverlapmin #1 = \the \Umathconnectoroverlapmin #1 \scan_stop: } %%^^A%% um-code-fontopt.dtx -- part of UNICODE-MATH %%^^A%% Keyval for `\setmathfont` \keys_define:nn {unicode-math} { version .code:n = { \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 , } \keys_define:nn {unicode-math} { range .code:n = { \bool_if:NF \g__um_main_font_defined_bool { \__um_error:n {no-main-font} } \bool_gset_false:N \g__um_init_bool \__um_range_init: \group_begin: \seq_map_inline:Nn \g__um_mathclasses_seq { \cs_set:Npn ##1 { \use_none:n \q_unicode_math \exp_not:N ##1 } } \cs_set:Npn \__um_sym:nnn ##1 ##2 ##3 { \cs_set:Npn ##2 { \use_none:n \q_unicode_math ##1 } } \__um_input_math_symbol_table: \__um_range_process:n {#1} \group_end: } } \__um_cs_new:Nn \__um_range_init: { \int_gincr:N \g__um_fam_int \tl_set:Nx \l__um_symfont_label_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_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_assign_delcode:nn \__um_assign_delcode_parse:nn \cs_set_eq:NN \__um_make_mathactive:nNN \__um_make_mathactive_parse:nNN \seq_gclear:N \g__um_char_range_seq \seq_gclear:N \g__um_mclass_range_seq \seq_gclear:N \g__um_mathalph_seq } \cs_new:Nn \__um_range_process:n { \clist_map_inline:nn {#1} { \__um_mathalph_decl:nF {##1} { \__um_range_decl:n {##1} } } } \cs_new:Nn \__um_mathalph_decl:nF { \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 } \clist_if_in:NVT \g__um_bad_alpha_clist \l__um_tmpa_tl { \__um_error:n {range-not-bf-sf} } \prop_if_exist:cTF {g__um_named_range_ \l__um_tmpa_tl _prop} { \seq_gput_right:Nx \g__um_mathalph_seq { { \exp_not:V \l__um_tmpa_tl } { \exp_not:V \l__um_tmpb_tl } { \exp_not:V \l__um_tmpc_tl } } } {#2} } \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_protected:Nn \__um_range_decl:n { \bool_lazy_and:nnTF { \tl_if_single_p:n {#1} } { \token_if_cs_p:N #1 } % IF A CSNAME: { \tl_if_in:VnTF #1 { \q_unicode_math } { \seq_if_in:NnTF \g__um_mathclasses_seq {#1} { \seq_gput_right:Nn \g__um_mclass_range_seq {#1} } { \seq_gput_right:Nx \g__um_char_range_seq { #1 } } } { \__um_error:nx {bad-cs-in-range} { \tl_to_str:n {#1} } } } % ELSE ASSUME NUMERIC INPUT: { \seq_gput_right:Nx \g__um_char_range_seq { #1 } } } \cs_new:Nn \__um_if_char_spec:nNT { % math class: \seq_if_in:NnT \g__um_mclass_range_seq {#2} { \use_none_delimit_by_q_nil:w } % character slot: \seq_map_inline:Nn \g__um_char_range_seq { \__um_int_if_slot_is_last_in_range:nnT {#1} {##1} { \seq_gremove_all:Nn \g__um_char_range_seq {##1} } \__um_int_if_slot_in_range:nnT {#1} {##1} { \seq_map_break:n { \use_none_delimit_by_q_nil:w } } } % the following expands to nil if no match was found: \use_none:nnn \q_nil \use:n { \cs_if_eq:NNT #2 \mathalpha { \clist_put_right:Nx \l__um_mathmap_charints_clist { \int_eval:n {#1} } } #3 } } \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} } { \tl_if_empty:nTF {#3} { \int_compare:nT {#1>=#2} {#5} } { \tl_if_empty:nTF {#2} { \int_compare:nT {#1<=#3} {#5} } { \int_compare:nT {#1>=#2} { \int_compare:nT {#1<=#3} {#5} } } } } } \cs_new:Nn \__um_int_if_slot_is_last_in_range:nnT { \__um_numrange_last_parse:nwT {#1} #2 - \q_nil - \q_stop {#3} } \cs_set:Npn \__um_numrange_last_parse:nwT #1 #2 - #3 - #4 \q_stop #5 { \tl_if_empty:nTF {#4} { \int_compare:nT {#1==#2} {#5} } { \tl_if_empty:nTF {#2} { \int_compare:nT {#1==#3} {#5} } { \int_compare:nT {#1==#3} {#5} } } } %%^^A%% um-code-fontparam.dtx -- part of UNICODE-MATH %%^^A%% Cross-platform interface for font parameters \cs_new_protected_nopar:Nn \__um_new_cramped_style:N { \cs_if_exist:NF #1 { \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 { \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 } { Umath \l__um_tmpa_tl } } \cs_new_protected_nopar:Nn \__um_font_param:nnn { \__um_font_param:nnnnn { #1 } { #2 } { #2 } { #3 } { #3 } } \cs_new_protected_nopar:Nn \__um_font_param:nn { \__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_nopar:Npn #1 ##1 { #3 ##1 } \cs_new_protected_nopar:Npn #2 ##1 ##2 { #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 } \cs_set:Nn \__um_fontdimen_to_percent:nN { \fp_eval:n { \dim_to_decimal_in_sp:n { \fontdimen #1 #2 } / 100 } } \cs_new:Nn \__um_fontdimen_pc_to_pt:nN { \fp_eval:n { \dim_to_decimal_in_sp:n { \fontdimen #1 #2 } / 100 * \f@size } } \cs_new:Nn \__um_mathstyle_scale:NnnN { \ifx#1\scriptstyle #2 \__um_fontdimen_to_percent:nN {10} #4 #3 \else \ifx#1\scriptscriptstyle #2 \__um_fontdimen_to_percent:nN {11} #4 #3 \else #2 #3 \fi \fi } %%^^A%% um-code-mathmap.dtx -- part of UNICODE-MATH %%^^A%% Setup of symbol alphabets. \__um_cs_new:Nn \__um_setup_alphabets: { \bool_if:NTF \g__um_init_bool { \__um_setup_alphabets_implicit: } { \seq_if_empty:NF \g__um_mathalph_seq { \__um_setup_alphabets_explicit: } \clist_if_empty:NF \l__um_mathmap_charints_clist { \__um_setup_alphabets_inherit: } } } \__um_cs_new:Nn \__um_setup_alphabets_implicit: { \__um_log:n {setup-implicit} \seq_gset_eq:NN \g__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} \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 \__um_mathalph_map: \seq_if_empty:NF \l__um_missing_alph_seq { \__um_log:n { missing-alphabets } } } \__um_cs_new:Nn \__um_setup_alphabets_explicit: { \__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 \__um_mathalph_map: \seq_if_empty:NF \l__um_missing_alph_seq { \__um_log:n { missing-alphabets } } } \__um_cs_new:Nn \__um_setup_alphabets_inherit: { \seq_gclear:N \g__um_mathalph_seq \seq_map_inline:Nn \g__um_default_mathalph_seq { \tl_set:No \l__um_style_tl { \use_i:nnn ##1 } \clist_set:No \l__um_alphabet_clist { \use_ii:nnn ##1 } \clist_map_inline:Nn \l__um_alphabet_clist { \clist_if_exist:cT {g__um_named_slots_ \l__um_style_tl _ ####1 _clist} { \clist_map_inline:cn {g__um_named_slots_ \l__um_style_tl _ ####1 _clist} { \clist_map_inline:Nn \l__um_mathmap_charints_clist { \__um_int_if_slot_in_range:nnT {################1} {########1} { \seq_gput_right:Nn \g__um_mathalph_seq {##1} \clist_map_break:n { \clist_map_break:n { \clist_map_break: } } } } } } } } \cs_set_eq:NN \__um_set_mathalphabet_char:nnn \__um_mathmap_parse:nnn \cs_set_eq:NN \__um_map_char_single:nn \__um_map_char_parse:nn \__um_mathalph_map: } \cs_set:Nn \__um_mathalph_map: { \seq_map_inline:Nn \g__um_mathalph_seq { \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 } % If no set of alphabets is defined: \clist_if_empty:NT \l__um_alphabet_clist { \cs_set_eq:NN \__um_maybe_init_alphabet:n \__um_init_alphabet:n \prop_get:cnN { g__um_named_range_ \l__um_style_tl _prop } { default-alpha } \l__um_alphabet_clist } \__um_check_math_alphabet: \__um_setup_math_alphabet: } } \cs_new:Nn \__um_check_math_alphabet: { \clist_map_inline:Nn \l__um_alphabet_clist { \tl_set:Nn \l__um_alphabet_tl {##1} \__um_if_alphabet_exists:nnTF \l__um_style_tl \l__um_alphabet_tl { \str_if_eq:eeTF {\l__um_alphabet_tl} {misc} { \__um_maybe_init_alphabet:n \l__um_style_tl \clist_map_break: } { \__um_glyph_if_exist:NnT \g__um_curr_font_cmd_tl { \__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 } } } } \__um_cs_new:Nn \__um_setup_math_alphabet: { \clist_map_inline:Nn \l__um_alphabet_clist { \tl_set:Nx \l__um_alphabet_tl { \tl_trim_spaces:n {##1} } \__um_if_alphabet_exists:nnT {\l__um_style_tl} {\l__um_alphabet_tl} { \exp_args:No \tl_if_eq:nnTF \l__um_alphabet_tl {misc} { \__um_log:nx {setup-alph} {sym \l__um_style_tl~(\l__um_alphabet_tl)} \__um_alphabet_config:nnn {\l__um_style_tl} {\l__um_alphabet_tl} {\l__um_remap_style_tl} } { \__um_glyph_if_exist:NnTF \g__um_curr_font_cmd_tl { \__um_to_usv:nn {\l__um_remap_style_tl} {\l__um_alphabet_tl} } { \__um_log:nx {setup-alph} {sym \l__um_style_tl~(\l__um_alphabet_tl)} \__um_alphabet_config:nnn {\l__um_style_tl} {\l__um_alphabet_tl} {\l__um_remap_style_tl} } { \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} } } } } } } \cs_new:Nn \__um_new_alphabet_config:nnn { \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 } { \clist_gclear_new:c {g__um_named_slots_#1_#2_clist} \tl_set:Nn \l__um_curr_named_slot { g__um_named_slots_#1_#2_clist } #3 \clist_gremove_duplicates:c {g__um_named_slots_#1_#2_clist} } } \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_map_char_noparse:nn { \__um_set_mathcode:nnnn {#1} {\mathalpha} {\l__um_symfont_label_tl} {#2} } \cs_new:Nn \__um_map_char_parse:nn { \__um_if_char_spec:nNT {#1} {\mathalpha} { \__um_map_char_noparse:nn {#1}{#2} } } \cs_new:Nn \__um_map_char_single:nnn { \__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} } \clist_gput_right:cx { \l__um_curr_named_slot } { \int_eval:n { #3 } - \int_eval:n { #3 + #1-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_set_mathalphabet_pos:nnnn {normal} {#1} {##1} {#3} \__um_map_char_single:nnn {##1} {#3} {#1} \clist_gput_right:cx {\l__um_curr_named_slot} { \int_eval:n { \__um_to_usv:nn {#3} {#1} } } } } } \cs_new:Nn \__um_set_normal_Latin:nn { \clist_map_inline:nn {#1} { \__um_set_mathalphabet_Latin:nnn {normal} {##1} {#2} \__um_map_chars_range:nnnn {26} {##1} {#2} {Latin} } } \cs_new:Nn \__um_set_normal_latin:nn { \clist_map_inline:nn {#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} { \__um_set_mathalphabet_greek:nnn {normal} {##1} {#2} \__um_map_chars_range:nnnn {25} {##1} {#2} {greek} \__um_map_char_single:nnn {##1} {#2} {epsilon} \__um_map_char_single:nnn {##1} {#2} {vartheta} \__um_map_char_single:nnn {##1} {#2} {varkappa} \__um_map_char_single:nnn {##1} {#2} {phi} \__um_map_char_single:nnn {##1} {#2} {varrho} \__um_map_char_single:nnn {##1} {#2} {varpi} \__um_set_mathalphabet_pos:nnnn {normal} {epsilon} {##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} {phi} {##1} {#2} \__um_set_mathalphabet_pos:nnnn {normal} {varrho} {##1} {#2} \__um_set_mathalphabet_pos:nnnn {normal} {varpi} {##1} {#2} } } \cs_new:Nn \__um_set_normal_Greek:nn { \clist_map_inline:nn {#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 { \tl_gput_right:cx { g__um_switchto_#1_tl } { \__um_set_mathcode:nnnn {#2} {\mathalpha} {\l__um_symfont_label_tl} {#3} } } \cs_new:Nn \__um_mathmap_parse:nnn { \exp_args:NNx \clist_if_in:NnT \l__um_mathmap_charints_clist { \int_eval:n {#3} } { \__um_mathmap_noparse:nnn {#1} {#2} {#3} } } \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 { \clist_gput_right:cx { \l__um_curr_named_slot } { \int_eval:n { \__um_to_usv:nn {#4} {#5} } - \int_eval:n { (#1-1)+\__um_to_usv:nn {#4} {#5} } } \__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} { \clist_map_inline:nn {#3} { \__um_set_mathalphabet_char:nnnn {#1} {##1} {#4} {#2} } \clist_gput_right:cx {\l__um_curr_named_slot} { \int_eval:n { \__um_to_usv:nn {#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} {epsilon} \__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} {phi} \__um_set_mathalphabet_char:nnnn {#1} {##1} {#3} {varrho} \__um_set_mathalphabet_char:nnnn {#1} {##1} {#3} {varpi} } } %%^^A%% um-code-sym-commands.dtx -- part of UNICODE-MATH %%^^A%% Definition of "math symbol alphabet" commands such as `\symbf` and co. \__um_cs_new:Nn \__um_prepare_mathstyle:n { \seq_gput_right:Nn \g__um_mathstyles_seq {#1} \__um_init_alphabet:n {#1} \cs_set_protected:cpx {sym#1} { \__um_group_begin: \exp_not:n { \mode_if_math:F { \exp_args:Nc \non@alpherr {sym#1} } \tl_set:Nn \l__um_mathstyle_tl {#1} } \__um_switch_to:n {#1} \__um_mathgroup_set:n {-1} \__um_group_end:n } } \__um_cs_new:Nn \__um_init_alphabet:n { \__um_log:nx {alph-initialise} {#1} \tl_gclear_new:c {g__um_switchto_#1_tl} \cs_set_protected:cpn {__um_switchto_#1:} { \tl_use:c {g__um_switchto_#1_tl} } } \cs_new_protected:Nn \__um_switch_to:n { \tl_use:c {g__um_switchto_#1_tl} } \__um_cs_new:Nn \__um_default_mathalph:nnn { \prop_new:c {g__um_named_range_#1_prop} \seq_gput_right:Nn \g__um_default_mathalph_seq {{#1}{#2}{#3}} \prop_gput:cnn { g__um_named_range_#1_prop } { default-alpha } {#2} } \__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 { up, it, bfup, bfit, sfup, sfit, bfsfup, bfsfit, bfsf, tt, bb, bbit, scr, bfscr, cal, bfcal, frak, bffrak, normal, literal, sf, bf, } { \__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 { normal, bb , bbit, scr, bfscr, cal, bfcal, frak, bffrak, tt, bfup, bfit, sfup, sfit, bfsfup, bfsfit, bfsf } { \cs_set:cpx { math #1 } { \exp_not:c { sym #1 } } } \AtBeginDocument { \__um_setup_mathtext: } \__um_cs_new:Nn \__um_setup_mathtext: { \clist_map_inline:nn { rm, it, bf, sf, tt } { \cs_set_protected:cpx { math ##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 } } } } } \cs_set_protected:Npn \mathup { \mathrm } \cs_set_protected:Npn \symrm { \symup } %%^^A%% um-code-alphabets.dtx -- part of UNICODE-MATH %%^^A%% Definitions for setting up the "math symbol alphabets". \__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} } } } %%^^A%% um-code-primes.dtx -- part of UNICODE-MATH %%^^A%% The definitions needed for the input of primes. \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 } \cs_new:Nn \__um_nprimes:Nn { \__um_superscript:n { #1 \prg_replicate:nn {#2-1} { \mskip \g__um_primekern_muskip #1 } } } \cs_new:Nn \__um_nprimes_select:nn { \int_case:nnF {#2} { {1} { \__um_superscript:n {#1} } {2} { \__um_glyph_if_exist:NnTF \g__um_prime_font_cmd_tl {"2033} { \__um_superscript:n {\__um_prime_double_mchar} } { \__um_nprimes:Nn #1 {#2} } } {3} { \__um_glyph_if_exist:NnTF \g__um_prime_font_cmd_tl {"2034} { \__um_superscript:n {\__um_prime_triple_mchar} } { \__um_nprimes:Nn #1 {#2} } } {4} { \__um_glyph_if_exist:NnTF \g__um_prime_font_cmd_tl {"2057} { \__um_superscript:n {\__um_prime_quad_mchar} } { \__um_nprimes:Nn #1 {#2} } } } { \__um_nprimes:Nn #1 {#2} } } \cs_new:Nn \__um_nbackprimes_select:nn { \int_case:nnF {#2} { {1} { \__um_superscript:n {#1} } {2} { \__um_glyph_if_exist:NnTF \g__um_prime_font_cmd_tl {"2036} { \__um_superscript:n {\__um_backprime_double_mchar} } { \__um_nprimes:Nn #1 {#2} } } {3} { \__um_glyph_if_exist:NnTF \g__um_prime_font_cmd_tl {"2037} { \__um_superscript:n {\__um_backprime_triple_mchar} } { \__um_nprimes:Nn #1 {#2} } } } { \__um_nprimes:Nn #1 {#2} } } \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_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_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_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_new:Npn \__um_scan_sup_prime: { \int_zero:N \l__um_primecount_int \__um_scanprime_collect:N \__um_prime_single_mchar } \cs_new:Npn \__um_scan_sup_dprime: { \int_set:Nn \l__um_primecount_int {1} \__um_scanprime_collect:N \__um_prime_single_mchar } \cs_new:Npn \__um_scan_sup_trprime: { \int_set:Nn \l__um_primecount_int {2} \__um_scanprime_collect:N \__um_prime_single_mchar } \cs_new:Npn \__um_scan_sup_qprime: { \int_set:Nn \l__um_primecount_int {3} \__um_scanprime_collect:N \__um_prime_single_mchar } \cs_new:Nn \__um_scanprime_collect:N { \int_incr:N \l__um_primecount_int \peek_meaning_remove:NTF ' { \__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 } { \peek_meaning_remove:NTF \__um_scan_dprime: { \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 } { \peek_meaning_remove:NTF \__um_scan_trprime: { \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 } { \peek_meaning_remove:NTF \__um_scan_qprime: { \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 } { \__um_nprimes_select:nn {#1} {\l__um_primecount_int} } } } } } } } } } } \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_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_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_new:Npn \__um_scan_sup_backprime: { \int_zero:N \l__um_primecount_int \__um_scanbackprime_collect:N \__um_backprime_single_mchar } \cs_new:Npn \__um_scan_sup_backdprime: { \int_set:Nn \l__um_primecount_int {1} \__um_scanbackprime_collect:N \__um_backprime_single_mchar } \cs_new:Npn \__um_scan_sup_backtrprime: { \int_set:Nn \l__um_primecount_int {2} \__um_scanbackprime_collect:N \__um_backprime_single_mchar } \cs_new:Nn \__um_scanbackprime_collect:N { \int_incr:N \l__um_primecount_int \peek_meaning_remove:NTF ` { \__um_scanbackprime_collect:N #1 } { \peek_meaning_remove:NTF \__um_scan_backprime: { \__um_scanbackprime_collect:N #1 } { \peek_meaning_remove:NTF ^^^^2035 { \__um_scanbackprime_collect:N #1 } { \peek_meaning_remove:NTF \__um_scan_backdprime: { \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 } { \peek_meaning_remove:NTF \__um_scan_backtrprime: { \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 } { \__um_nbackprimes_select:nn {#1} {\l__um_primecount_int} } } } } } } } } \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 } \group_begin: \char_set_catcode_active:N \' \char_set_catcode_active:N \` \char_set_catcode_active:n {"2032} \char_set_catcode_active:n {"2033} \char_set_catcode_active:n {"2034} \char_set_catcode_active:n {"2057} \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: } \group_end: %%^^A%% um-code-sscript.dtx -- part of UNICODE-MATH %%^^A%% Setup for active chars needed to process subscript/superscript input chars. \cs_new:Nn \__um_setup_active_superscript:nn { \prop_gput:Nxn \g__um_supers_prop { \int_eval:n {#1} } {#2} \__um_mathactive_remap:nn {#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: } } \cs_new:Nn \__um_setup_active_subscript:nn { \prop_gput:Nxn \g__um_subs_prop { \int_eval:n {#1} } {#2} \__um_mathactive_remap:nn {#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_cs_new:Nn \__um_scan_sscript: { \__um_scan_sscript:TF { \__um_scan_sscript: } { \__um_sub_or_super:n {\l__um_ss_chain_tl} } } \__um_cs_new:Nn \__um_scan_sscript:TF { \peek_N_type:TF { \group_align_safe_begin: \__um_scan_sscript_aux:nnN {#1} {#2} } {#2} } \__um_cs_new:Nn \__um_scan_sscript_aux:nnN { \tl_set:Nx \l__um_tmpa_key_tl { \tl_to_str:n {#3} } \prop_get:cxNTF {g__um_\l__um_tmpa_tl _prop} { \int_eval:n { \exp_after:wN ` \l__um_tmpa_key_tl } } \l__um_tmpb_tl { \tl_put_right:NV \l__um_ss_chain_tl \l__um_tmpb_tl \group_align_safe_end: #1 } { \group_align_safe_end: #2 #3 } } \__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 {"1D2C} {A} \__um_setup_active_superscript:nn {"1D2E} {B} \__um_setup_active_superscript:nn {"1D30} {D} \__um_setup_active_superscript:nn {"1D31} {E} \__um_setup_active_superscript:nn {"1D33} {G} \__um_setup_active_superscript:nn {"1D34} {H} \__um_setup_active_superscript:nn {"1D35} {I} \__um_setup_active_superscript:nn {"1D36} {J} \__um_setup_active_superscript:nn {"1D37} {K} \__um_setup_active_superscript:nn {"1D38} {L} \__um_setup_active_superscript:nn {"1D39} {M} \__um_setup_active_superscript:nn {"1D3A} {N} \__um_setup_active_superscript:nn {"1D3C} {O} \__um_setup_active_superscript:nn {"1D3E} {P} \__um_setup_active_superscript:nn {"1D3F} {R} \__um_setup_active_superscript:nn {"1D40} {T} \__um_setup_active_superscript:nn {"1D41} {U} \__um_setup_active_superscript:nn {"2C7D} {V} \__um_setup_active_superscript:nn {"1D42} {W} \__um_setup_active_superscript:nn {"1D43} {a} \__um_setup_active_superscript:nn {"1D47} {b} \__um_setup_active_superscript:nn {"1D9C} {c} \__um_setup_active_superscript:nn {"1D48} {d} \__um_setup_active_superscript:nn {"1D49} {e} \__um_setup_active_superscript:nn {"1DA0} {f} \__um_setup_active_superscript:nn {"1D4D} {g} \__um_setup_active_superscript:nn {"02B0} {h} \__um_setup_active_superscript:nn {"2071} {i} \__um_setup_active_superscript:nn {"02B2} {j} \__um_setup_active_superscript:nn {"1D4F} {k} \__um_setup_active_superscript:nn {"02E1} {l} \__um_setup_active_superscript:nn {"1D50} {m} \__um_setup_active_superscript:nn {"207F} {n} \__um_setup_active_superscript:nn {"1D52} {o} \__um_setup_active_superscript:nn {"1D56} {p} \__um_setup_active_superscript:nn {"02B3} {r} \__um_setup_active_superscript:nn {"02E2} {s} \__um_setup_active_superscript:nn {"1D57} {t} \__um_setup_active_superscript:nn {"1D58} {u} \__um_setup_active_superscript:nn {"1D5B} {v} \__um_setup_active_superscript:nn {"02B7} {w} \__um_setup_active_superscript:nn {"02E3} {x} \__um_setup_active_superscript:nn {"02B8} {y} \__um_setup_active_superscript:nn {"1DBB} {z} \__um_setup_active_superscript:nn {"1D5D} {\beta} \__um_setup_active_superscript:nn {"1D5E} {\gamma} \__um_setup_active_superscript:nn {"1D5F} {\delta} \__um_setup_active_superscript:nn {"1D60} {\phi} \__um_setup_active_superscript:nn {"1D61} {\chi} \__um_setup_active_superscript:nn {"1DBF} {\theta} \__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 {"2095} {h} \__um_setup_active_subscript:nn {"1D62} {i} \__um_setup_active_subscript:nn {"2C7C} {j} \__um_setup_active_subscript:nn {"2096} {k} \__um_setup_active_subscript:nn {"2097} {l} \__um_setup_active_subscript:nn {"2098} {m} \__um_setup_active_subscript:nn {"2099} {n} \__um_setup_active_subscript:nn {"2092} {o} \__um_setup_active_subscript:nn {"209A} {p} \__um_setup_active_subscript:nn {"1D63} {r} \__um_setup_active_subscript:nn {"209B} {s} \__um_setup_active_subscript:nn {"209C} {t} \__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} %%^^A%% um-code-compat.dtx -- part of UNICODE-MATH %%^^A%% Compatibility with 3rd party packages. \__um_after_package:nNn {url} \__um_patch_url: { \tl_put_left:Nn \Url@FormatString { \__um_switch_to:n {literal} } \tl_put_right:Nn \UrlSpecials { \do \` { \mathchar`\` } \do \' { \mathchar`\' } \do \$ { \mathchar`\$ } \do \& { \mathchar`\& } } } \__um_after_package:nNn { mathtools } \__um_patch_mathtools_B: { \cs_set_eq:NN \MToverbracket \overbracket \cs_set_eq:NN \MTunderbracket \underbracket \AtBeginDocument { \msg_warning:nn { unicode-math } { mathtools-overbracket } \cs_set:Npn \downbracketfill ##1 ##2 { \tl_set:Nn \l_MT_bracketheight_fdim {.27ex} \downbracketend {##1} {##2} \leaders \vrule \@height ##1 \@depth \z@ \hfill \downbracketend {##1} {##2} } \cs_set:Npn \upbracketfill ##1 ##2 { \tl_set:Nn \l_MT_bracketheight_fdim {.27ex} \upbracketend {##1} {##2} \leaders \vrule \@height \z@ \@depth ##1 \hfill \upbracketend {##1} {##2} } \cs_set_eq:NN \Uoverbracket \overbracket \cs_set_eq:NN \Uunderbracket \underbracket \cs_set_eq:NN \overbracket \MToverbracket \cs_set_eq:NN \underbracket \MTunderbracket } } \__um_after_package:nNn { mathtools } \__um_patch_mathtools_C: { \msg_warning:nn { unicode-math } { mathtools-colon } \DeclareDocumentCommand \dblcolon { } { \Colon } \DeclareDocumentCommand \coloneqq { } { \coloneq } \DeclareDocumentCommand \Coloneqq { } { \Coloneq } \DeclareDocumentCommand \eqqcolon { } { \eqcolon } } %%^^A%% um-code-amsmath.dtx -- part of UNICODE-MATH %%^^A%% Compatibility with amsmath. \tl_remove_once:Nn \@begindocumenthook { \mathchardef\std@minus\mathcode`\-\relax \mathchardef\std@equal\mathcode`\=\relax } \AtBeginDocument { \Umathcharnumdef\std@minus\Umathcodenum`- \Umathcharnumdef\std@equal\Umathcodenum`= } \cs_set:Npn \@cdots {\mathinner{\unicodecdots}} \cs_set_eq:NN \dotsb@ \cdots \cs_set_nopar:Npn \plainroot@ #1 \of #2 { \bool_if:nTF { \__um_int_if_zero_p:n \uproot@ && \__um_int_if_zero_p:n \leftroot@ } { \Uroot \c__um_radical_sqrt_tl { #1 } { #2 } } { \hbox_set:Nn \rootbox { \c_math_toggle_token \m@th \scriptscriptstyle { #1 } \c_math_toggle_token } \mathchoice { \r@@t \displaystyle { #2 } } { \r@@t \textstyle { #2 } } { \r@@t \scriptstyle { #2 } } { \r@@t \scriptscriptstyle { #2 } } } \c_group_end_token } \cs_set_nopar:Npn \r@@t #1 #2 { \hbox_set:Nn \l_tmpa_box { \c_math_toggle_token \m@th #1 \mskip \uproot@ mu \c_math_toggle_token } \Uroot \c__um_radical_sqrt_tl { \box_move_up:nn { \box_wd:N \l_tmpa_box } { \hbox:n { \c_math_toggle_token \m@th \mkern -\leftroot@ mu \box_use:N \rootbox \mkern \leftroot@ mu \c_math_toggle_token } } } { #2 } } %%^^A%% um-code-epilogue.dtx -- part of UNICODE-MATH %%^^A%% Assorted definitions to close up. \AtBeginDocument { \debug_suspend: \__um_resolve_greek: \debug_resume: } \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,epsilon,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,phi,chi,psi,omega, varTheta,varsigma,vartheta,varkappa,varrho,varpi,varepsilon,varphi } { \tl_set:cx {##1} { \exp_not:c { mit ##1 } } \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 } } } } \AtBeginDocument{ \@ifpackageloaded { amsmath } { } { \__um_redefine_radical: } } \cs_new:Nn \__um_redefine_radical: { \cs_set:Npn \root ##1 \of ##2 { \Uroot \c__um_radical_sqrt_tl { ##1 } { ##2 } } } \cs_new:Nn \__um_which_frac:nn { \bool_if:NTF \l__um_smallfrac_bool {\tfrac} {\frac} {#1} {#2} } \cs_new:Npn \__um_setup_active_frac: { \__um_mathactive_remap:nn {"2189} { \__um_which_frac:nn {0} {3} } \__um_mathactive_remap:nn {"2152} { \__um_which_frac:nn {1} {10} } \__um_mathactive_remap:nn {"2151} { \__um_which_frac:nn {1} {9} } \__um_mathactive_remap:nn {"215B} { \__um_which_frac:nn {1} {8} } \__um_mathactive_remap:nn {"2150} { \__um_which_frac:nn {1} {7} } \__um_mathactive_remap:nn {"2159} { \__um_which_frac:nn {1} {6} } \__um_mathactive_remap:nn {"2155} { \__um_which_frac:nn {1} {5} } \__um_mathactive_remap:nn {"00BC} { \__um_which_frac:nn {1} {4} } \__um_mathactive_remap:nn {"2153} { \__um_which_frac:nn {1} {3} } \__um_mathactive_remap:nn {"215C} { \__um_which_frac:nn {3} {8} } \__um_mathactive_remap:nn {"2156} { \__um_which_frac:nn {2} {5} } \__um_mathactive_remap:nn {"00BD} { \__um_which_frac:nn {1} {2} } \__um_mathactive_remap:nn {"2157} { \__um_which_frac:nn {3} {5} } \__um_mathactive_remap:nn {"215D} { \__um_which_frac:nn {5} {8} } \__um_mathactive_remap:nn {"2154} { \__um_which_frac:nn {2} {3} } \__um_mathactive_remap:nn {"00BE} { \__um_which_frac:nn {3} {4} } \__um_mathactive_remap:nn {"2158} { \__um_which_frac:nn {4} {5} } \__um_mathactive_remap:nn {"215A} { \__um_which_frac:nn {5} {6} } \__um_mathactive_remap:nn {"215E} { \__um_which_frac:nn {7} {8} } } \AtBeginDocument { \__um_setup_active_frac: } \protected\def\to{\rightarrow} \protected\def\le{\leq} \protected\def\ge{\geq} \protected\def\neq{\ne} \protected\def\triangle{\mathord{\bigtriangleup}} \protected\def\bigcirc{\mdlgwhtcircle} \protected\def\circ{\vysmwhtcircle} \protected\def\bullet{\smblkcircle} \protected\def\mathyen{\yen} \protected\def\mathsterling{\sterling} \protected\def\diamond{\smwhtdiamond} \protected\def\emptyset{\varnothing} \protected\def\hbar{\hslash} \protected\def\land{\wedge} \protected\def\lor{\vee} \protected\def\owns{\ni} \protected\def\gets{\leftarrow} \protected\def\mathring{\ocirc} \protected\def\lnot{\neg} \protected\def\longdivision{\longdivisionsign} \protected\def\backepsilon{\upbackepsilon} \protected\def\eth{\matheth} \protected\def\dbkarow {\dbkarrow} \protected\def\drbkarow{\drbkarrow} \protected\def\hksearow{\hksearrow} \protected\def\hkswarow{\hkswarrow} \protected\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.) } { \cs_set_protected:Npn \colon { \bool_if:NTF \g__um_literal_colon_bool {:} { \mathpunct{:} } } } \protected\def\digamma{\updigamma} \protected\def\Digamma{\upDigamma} \cs_set_protected:Npn \| {\Vert} \cs_set_protected:Npn \mathellipsis {\mathinner{\unicodeellipsis}} \cs_set_protected: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:} } \DeclareDocumentCommand \not {m} { \tl_set:Nx \l__um_not_token_name_tl { \cs_to_str:N #1 } \tl_if_empty:NT \l__um_not_token_name_tl { \tl_set:Nx \l__um_not_token_name_tl { \token_to_str:N #1 } } \cs_if_exist:cTF { not \l__um_not_token_name_tl } { \use:c { not \l__um_not_token_name_tl } } { \cs_if_exist:cTF { n \l__um_not_token_name_tl } { \use:c { n \l__um_not_token_name_tl } } { \tl_if_eq:nnTF {#1} {$} { \notaccent{} } { \notaccent } #1 } } } \DeclareDocumentCommand \NewNegationCommand {mm} { \__um_set_negation_command:Nnn \cs_new_protected:cpn {#1} {#2} } \DeclareDocumentCommand \RenewNegationCommand {mm} { \__um_set_negation_command:Nnn \cs_set_protected:cpn {#1} {#2} } \cs_set:Nn \__um_set_negation_command:Nnn { \tl_set:Nx \l__um_not_token_name_tl { \cs_to_str:N #2 } \tl_if_empty:NT \l__um_not_token_name_tl { \tl_set:Nx \l__um_not_token_name_tl { \token_to_str:N #2 } } #1 { not \l__um_not_token_name_tl } { #3 } } \NewNegationCommand { = } { \neq } \NewNegationCommand { < } { \nless } \NewNegationCommand { > } { \ngtr } \NewNegationCommand { \gets } { \nleftarrow } \NewNegationCommand { \simeq } { \nsime } \NewNegationCommand { \equal } { \ne } \NewNegationCommand { \le } { \nleq } \NewNegationCommand { \ge } { \ngeq } \NewNegationCommand { \greater } { \ngtr } \NewNegationCommand { \forksnot } { \forks } \int_step_inline:nnnn {0} {1} {9} { \__um_mathactive_remap:nn {"FF10+#1} {\char\int_eval:n{`\0+#1}} } \int_step_inline:nnnn {0} {1} {26} { \__um_mathactive_remap:nn {"FF21+#1} {\char\int_eval:n{`\A+#1}} \__um_mathactive_remap:nn {"FF41+#1} {\char\int_eval:n{`\a+#1}} } \cs_new:Nn \__um_undeclare_symbol:N { \cs_set_protected:Npn #1 { \__um_error:nx {legacy-char-not-supported} { \token_to_str:N #1 } } } \__um_undeclare_symbol:N \arrowvert \__um_undeclare_symbol:N \Arrowvert \__um_undeclare_symbol:N \bracevert \AtBeginDocument{\g__um_secret_hook_tl} \endinput