%
% lltjp-unicode-math.sty
%

\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{lltjp-unicode-math}[2017/11/12 Patch to unicode-math for LuaTeX-ja]

\RequirePackage{unicode-math,luatexja}

\ExplSyntaxOn

\group_begin:
  \bool_new:N \lltjp_um_patch_mathgroup_bool
  \bool_set_true:N \lltjp_um_patch_mathgroup_bool
%% Recent unicode-math (2017-10-02, v0.8g) does not have \ProvidesPackage,
%% So we can't use the date option of \@ifpackageloaded.
  \cs_gset: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 { \Ucharcat ##1 ~ 12 ~ }
          \ltjsetmathletter{ ##1 }
        }
       }
      \__um_input_math_symbol_table:
    \group_end:
  }

\bool_if:NT \lltjp_um_patch_mathgroup_bool {
  \cs_gset:Npn \use@mathgroup #1 #2
   {
    %\typeout{UM <#1><#2>}
    \mode_if_math:T % <- not sure if this is really necessary since we've just checked for mmode and raised an error if not!
     {
      \math@bgroup
        \cs_if_eq:cNF {M@\f@encoding} #1 {#1}
        \__um_switchto_literal:
        \ltj@tempcnta=#2 \expandafter\ltj@@mathJapaneseFonts\string#1\relax%
        \ifin@ \jfam #2 \relax \else \mathgroup #2 \relax \fi
      \math@egroup
     }
   }
}
\group_end:

\ExplSyntaxOff

\endinput
