summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/luatex/luatexja/patches/lltjp-unicode-math.sty
blob: acca226a7f0ef5bbf9a05753f203a88cac37d59d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
%
% lltjp-unicode-math.sty
%

\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{lltjp-unicode-math}[2018/01/14 Patch to unicode-math for LuaTeX-ja]

\RequirePackage{unicode-math,luatexja,etoolbox}

\ExplSyntaxOn

\group_begin:
  \bool_new:N \__lltjp_um_patch_mathgroup_bool
  \bool_set_true:N \__lltjp_um_patch_mathgroup_bool
  \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 { \char_generate:nn {##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:

\ifcsname jsc@mag@xrealtrue \endcsname \else
    \expandafter\expandafter\expandafter \ExplSyntaxOff \expandafter \endinput
\fi
\ifjsc@mag@xreal
    \cs_if_exist:cTF { ltjs@orig@get@external@font } {
	  % ltjsclasses: use lua
	  \cs_new:Nn \lltjp_um_unmag_fsize:
	    {
		  \cs_gset:Nx \lltjp_um_f@size: {\directlua{luatexja.ltjs_unmagnify_fsize(\f@size)}}
		  \cs_gset:Nx \lltjp_um_sf@size: {\directlua{luatexja.ltjs_unmagnify_fsize(\sf@size)}}
		  \cs_gset:Nx \lltjp_um_ssf@size: {\directlua{luatexja.ltjs_unmagnify_fsize(\ssf@size)}}
		}
	}{
	  % bxjscls: use \jsc@preadjust@extract@font
	  \cs_new:Nn \lltjp_um_unmag_fsize:
	    {
		  \group_begin:
		    \jsc@preadjust@extract@font
		    \cs_gset_eq:NN \lltjp_um_f@size: \f@size
		  \group_end:
		  \group_begin:
		    \cs_set_eq:NN \f@size \sf@size \jsc@preadjust@extract@font
		    \cs_gset_eq:NN \lltjp_um_sf@size: \f@size
		  \group_end:
		  \group_begin:
		    \cs_set_eq:NN \f@size \ssf@size \jsc@preadjust@extract@font
		    \cs_gset_eq:NN \lltjp_um_ssf@size: \f@size
		  \group_end:
		}
	}
    \pretocmd { \__um_fontspec_select_font: } {
	  \cs_set_eq:NN \lltjp_um_orig_fsize: \f@size
	  \lltjp_um_unmag_fsize:
	  \cs_set_eq:NN \f@size \lltjp_um_f@size:
	  \cs_set_eq:NN \tf@size \lltjp_um_f@size:
	  \cs_set_eq:NN \sf@size \lltjp_um_sf@size:
	  \cs_set_eq:NN \ssf@size \lltjp_um_ssf@size:
	} {} {}
    \apptocmd { \__um_fontspec_select_font: } {
	  \cs_set_eq:NN \f@size \lltjp_um_orig_fsize:
	} {} {}
\fi

\ExplSyntaxOff

\endinput