OSDN Git Service

Add test code for unicode-math (test/test07-math-unicode.tex).
authorHironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
Fri, 18 Nov 2011 12:44:08 +0000 (21:44 +0900)
committerHironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
Fri, 18 Nov 2011 12:44:08 +0000 (21:44 +0900)
src/lltjdefs.sty
src/luatexja-latex.sty
src/luatexja-plain.sty
src/luatexja/math.lua
test/test07-math-unicode.pdf [new file with mode: 0644]
test/test07-math-unicode.tex [new file with mode: 0644]

index 72da6da..67a83a6 100644 (file)
@@ -50,6 +50,8 @@
 \ltjdefcharrange{8}{"A7, "A8, "B0, "B1, "B4, "B6, "D7, "F7}
 \ltjsetparameter{jacharrange={-1, +2, +3, -4, -5, +6, +7, +8}}
 
+\directlua{for x=128,255 do luatexja.math.is_math_letters[x] = true end}
+
 % END OF FILE
 \endinput
 
index 5183456..2bb6bcb 100644 (file)
@@ -24,6 +24,7 @@
 
 %%% parameter
 
+\expandafter\csname JY3/mc/m/n/10\endcsname\relax
 \ltjsetparameter{kanjiskip=0pt plus 0.4pt minus 0.4pt, 
   xkanjiskip=.25\zw plus 1pt minus 1pt,
   autospacing, autoxspacing, jacharrange={-1}, 
index 0deeae9..c472e83 100644 (file)
@@ -61,6 +61,8 @@
 \ltjdefcharrange{8}{"B4, "A8, "B1, "D7, "F7, "B0, "A7, "B6}
 \ltjsetparameter{jacharrange={-1, +2, +3, -4, -5, +6, +7, +8}}
 
+\directlua{for x=128,255 do luatexja.math.is_math_letters[x] = true end}
+
 %%------------------ all done
 \ltj@plain@AtEnd
 \endinput
index 245b024..6046a52 100644 (file)
@@ -45,6 +45,9 @@ local PROCESSED = 8
 local ltjf_font_metric_table = ltjf.font_metric_table
 local ltjf_find_char_class = ltjf.find_char_class
 
+-- table of mathematical characters
+is_math_letters = {}
+
 local conv_jchar_to_hbox_A
 
 -- sty : 0 (display or text), 1 (script), >=2 (scriptscript)
@@ -93,7 +96,7 @@ function (p, sty)
       end
    elseif p.id == id_mchar then
       local fam = has_attr(p, attr_jfam) or -1
-      if ltjc.is_ucs_in_japanese_char(p) and fam>=0 then
+      if (not is_math_letters[p.char]) and ltjc.is_ucs_in_japanese_char(p) and fam>=0 then
         local mode = 'mjss'
         if sty == 0 then mode = 'mjtext'
         elseif sty == 1 then mode = 'mjscr'
diff --git a/test/test07-math-unicode.pdf b/test/test07-math-unicode.pdf
new file mode 100644 (file)
index 0000000..b7a7f2e
Binary files /dev/null and b/test/test07-math-unicode.pdf differ
diff --git a/test/test07-math-unicode.tex b/test/test07-math-unicode.tex
new file mode 100644 (file)
index 0000000..3c675ca
--- /dev/null
@@ -0,0 +1,36 @@
+%#!lualatex
+\documentclass{article}
+\usepackage[a4paper]{geometry}
+\usepackage{luatexja}
+\makeatletter\ltj@alljachar %←全部の(>=U+0080な)文字を和文文字扱いに!
+
+\usepackage{fontspec,unicode-math}
+\ExplSyntaxOn
+\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:
+  \directlua{luatexja.math.is_math_letters[\int_eval:n {#4}]=true}
+}
+\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:
+  \directlua{luatexja.math.is_math_letters[\int_eval:n {#1}]=true}
+}
+\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:
+  \directlua{luatexja.math.is_math_letters[\int_eval:n {#4}]=true}
+}
+\ExplSyntaxOff
+
+\setmathfont{XITSMath}
+
+\begin{document}\makeatletter
+
+\[
+ \frac1{1^2}+\frac1{2^2}+\cdots=
+\sum_{n=1}^\infty \frac1{n^s}=\zeta(2)=\frac{\pi^2}{6}
+=\frac16\cdot \pi\times\pi,\qquad a_1,\dots,a_n
+\]
+aaa○×○漢×漢\times \dots←数式外では和文文字扱いのままになっている.
+\end{document}