X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=src%2Fluatexja-core.sty;h=69c409836df05f150008319e7f63b98d9f7c45ab;hb=e747a84f1f8fefa302b9c163fd6ba57acfa097eb;hp=53aa6665c508037ae5fc37dffecd2c24b0fdc18c;hpb=b5ae2980b79b069dd439c80b784c10e1b4f86d2f;p=luatex-ja%2Fluatexja.git diff --git a/src/luatexja-core.sty b/src/luatexja-core.sty index 53aa666..69c4098 100644 --- a/src/luatexja-core.sty +++ b/src/luatexja-core.sty @@ -65,7 +65,7 @@ \expandafter\let\csname ifltj@in@latex\expandafter\endcsname \csname iftrue\endcsname \NeedsTeXFormat{LaTeX2e} - \ProvidesPackage{luatexja-core}[2015/02/22 Core of LuaTeX-ja] + \ProvidesPackage{luatexja-core}[2015/05/17 Core of LuaTeX-ja] \fi % %% Load prerequisite packages. @@ -148,21 +148,21 @@ \newluatexattribute\ltj@dir \newlanguage\ltj@@japanese -\ltj@dir=0 -\ltj@icflag=0 -\ltj@origchar=0 -\ltj@charclass=0 -\ltj@curjfnt=-1 -\ltj@curtfnt=-1 +\ltj@dir\z@ +\ltj@icflag\z@ +\ltj@origchar\z@ +\ltj@charclass\z@ +\ltj@curjfnt\m@ne +\ltj@curtfnt\m@ne %%%%%%%% Attributes for character ranges \newcount\ltj@tempcnta -\ltj@tempcnta=0 +\ltj@tempcnta\z@ \loop\ifnum\ltj@tempcnta<7 \expandafter\newluatexattribute% \csname ltj@kcat\the\ltj@tempcnta\endcsname \csname ltj@kcat\the\ltj@tempcnta\endcsname=0 - \advance\ltj@tempcnta by1 + \advance\ltj@tempcnta\@ne \repeat @@ -172,21 +172,12 @@ \protected\def\ltj@@q@escapenum{\ltj@@q@escapenum@} \directlua{% - luatexja = {} + luatexja = {}; + luatexja.lang_ja = \the\ltj@@japanese; dofile(assert(kpse.find_file('luatexja.lua', 'tex'), "File `luatexja.lua' not found")) } - -%%% true if we can use [new]token.scan_int and co. -\newif\ifltj@token@avail@scan -\directlua{% - local bs = string.char(92) - if luatexja.token then tex.sprint(bs .. 'ltj@token@avail@scantrue') end - print (luatexja.token) -} - - %% \RequireLuaTeXjaSubmodule{name}[date] % A TeX version of luatexja.load_module(name) % The second optional argument [date] is simply ignored. @@ -205,23 +196,23 @@ \fi % %%%%%%%% \asluastring -\def\asluastring#1{'\luaescapestring{\detokenize{#1}}'} +\def\asluastring#1{'\luatexluaescapestring{\detokenize{#1}}'} %%%%%%%% Redefine \/ \protected\def\/{\relax\directlua{luatexja.jfont.append_italic()}} %%%%%%%% \jfont\CS={...:...;jfm=metric;...}, \globaljfont -\protected\def\jfont{% - \afterassignment\ltj@@jfont\directlua{luatexja.jfont.jfontdefX(false, 'yoko')}} -\protected\def\globaljfont{% - \afterassignment\ltj@@jfont\directlua{luatexja.jfont.jfontdefX(true, 'yoko')}} +\protected\def\jfont#1{% + \afterassignment\ltj@@jfont\directlua{luatexja.jfont.jfontdefX(false, 'yoko','\luatexluaescapestring{\noexpand#1}')}} +\protected\def\globaljfont#1{% + \afterassignment\ltj@@jfont\directlua{luatexja.jfont.jfontdefX(true, 'yoko','\luatexluaescapestring{\noexpand#1}')}} \def\ltj@@jfont{\directlua{luatexja.jfont.jfontdefY()}} %%%%%%%% \tfont\CS={...:...;jfm=metric;...}, \globaltfont -\protected\def\tfont{% - \afterassignment\ltj@@tfont\directlua{luatexja.jfont.jfontdefX(false, 'tate')}} -\protected\def\globaltfont{% - \afterassignment\ltj@@tfont\directlua{luatexja.jfont.jfontdefX(true, 'tate')}} +\protected\def\tfont#1{% + \afterassignment\ltj@@tfont\directlua{luatexja.jfont.jfontdefX(false, 'tate','\luatexluaescapestring{\noexpand#1}')}} +\protected\def\globaltfont#1{% + \afterassignment\ltj@@tfont\directlua{luatexja.jfont.jfontdefX(true, 'tate','\luatexluaescapestring{\noexpand#1}')}} \def\ltj@@tfont{\directlua{luatexja.jfont.jfontdefY()}} %%%%%%%% \zw, \zh @@ -272,15 +263,14 @@ \setbox\z@\box\voidb@x % prebreakpenalty = {, } -\define@key[ltj]{japaram}{kcatcode}{% - \expandafter\ltj@@set@stack#1:{KCAT}{0}{0x7FFFFFFF}} -\define@key[ltj]{japaram}{prebreakpenalty}{% - \expandafter\ltj@@set@stack#1:{PRE}{-10000}{10000}} -\define@key[ltj]{japaram}{postbreakpenalty}{% - \expandafter\ltj@@set@stack#1:{POST}{-10000}{10000}} -\def\ltj@@set@stack#1,#2:#3#4#5{% - \directlua{luatexja.stack.set_stack_perchar(luatexja.stack_table_index.#3, - \ltj@safe@num@or{nil}{#1},\ltj@safe@num@or{nil}{#2},#4,#5)}} +\define@key[ltj]{japaram}{kcatcode}{\ltj@@set@stack{KCAT}{0}{0x7FFFFFFF}#1\relax} +\define@key[ltj]{japaram}{prebreakpenalty}{\ltj@@set@stack{PRE}{-10000}{10000}#1\relax} +\define@key[ltj]{japaram}{postbreakpenalty}{\ltj@@set@stack{POST}{-10000}{10000}#1\relax} +\def\ltj@@set@stack#1#2#3{% + \directlua{luatexja.stack.set_stack_perchar(luatexja.stack_table_index.#1,#2,#3)}} +%\def\ltj@@set@stack#1,#2:#3#4#5{% +% \directlua{luatexja.stack.set_stack_perchar(luatexja.stack_table_index.#3, +% \ltj@safe@num@or{nil}{#1},\ltj@safe@num@or{nil}{#2},#4,#5)}} % jatextfont = {, } % only horizontal font is supported @@ -292,8 +282,8 @@ \expandafter\ltj@@set@stackfont#1:{MJSS}} \protected\def\ltj@@set@stackfont#1,#2:#3{% \ltj@reset@globaldefs - \ltj@tempcnta=\ltj@curjfnt\ltj@curjfnt=-1 #2% - \ifnum\ltj@curjfnt=-1 + \ltj@tempcnta=\ltj@curjfnt\ltj@curjfnt\m@ne#2% + \ifnum\ltj@curjfnt=\m@ne \@PackageError{luatexja-core}% {\string#2 is not a control sequence that represents \MessageBreak a Japanese font}{}% @@ -305,43 +295,20 @@ \ltj@restore@globaldefs } -\ifltj@token@avail@scan %%%%%%%%%%%%%%%%%%%%%%%% new tokenlib % {y,t}{ja,al}baselineshift = % yjabaselineshift = -\define@key[ltj]{japaram}{yalbaselineshift}{ - \directlua{tex.setattribute(luatexja.isglobal, - luatexbase.attributes['ltj@yablshift'], luatexja.token.scan_dimen())}#1} -\define@key[ltj]{japaram}{yjabaselineshift}{ - \directlua{tex.setattribute(luatexja.isglobal, - luatexbase.attributes['ltj@ykblshift'], luatexja.token.scan_dimen())}#1} -\define@key[ltj]{japaram}{talbaselineshift}{ - \directlua{tex.setattribute(luatexja.isglobal, - luatexbase.attributes['ltj@tablshift'], luatexja.token.scan_dimen())}#1} -\define@key[ltj]{japaram}{tjabaselineshift}{ - \directlua{tex.setattribute(luatexja.isglobal, - luatexbase.attributes['ltj@tkblshift'], luatexja.token.scan_dimen())}#1} -\else %%%%%%%%%%%%%%%%%%%%%%%% old tokenlib -% yalbaselineshift = -% yjabaselineshift = \define@key[ltj]{japaram}{yalbaselineshift}{% \directlua{tex.setattribute(luatexja.isglobal, - luatexbase.attributes['ltj@yablshift'], - \ltj@safe@dimen@or\ltj@defdimen{#1})}} + luatexbase.attributes['ltj@yablshift'], luatexja.token.scan_dimen())}#1\relax} \define@key[ltj]{japaram}{yjabaselineshift}{% \directlua{tex.setattribute(luatexja.isglobal, - luatexbase.attributes['ltj@ykblshift'], - \ltj@safe@dimen@or\ltj@defdimen{#1})}} -% talbaselineshift = -% tjabaselineshift = + luatexbase.attributes['ltj@ykblshift'], luatexja.token.scan_dimen())}#1\relax} \define@key[ltj]{japaram}{talbaselineshift}{% \directlua{tex.setattribute(luatexja.isglobal, - luatexbase.attributes['ltj@tablshift'], - \ltj@safe@dimen@or\ltj@defdimen{#1})}} + luatexbase.attributes['ltj@tablshift'], luatexja.token.scan_dimen())}#1\relax} \define@key[ltj]{japaram}{tjabaselineshift}{% \directlua{tex.setattribute(luatexja.isglobal, - luatexbase.attributes['ltj@tkblshift'], - \ltj@safe@dimen@or\ltj@defdimen{#1})}} -\fi %%%%%%%%%%%%%%%%%%%%%%%% + luatexbase.attributes['ltj@tkblshift'], luatexja.token.scan_dimen())}#1\relax} % jaxspmode = {, } % mode: inhibit, preonly, postonly, allow @@ -354,45 +321,33 @@ \def\ltj@tempa{preonly}\ifx\ltj@temp\ltj@tempa\def\ltj@temp{1}\fi \def\ltj@tempa{postonly}\ifx\ltj@temp\ltj@tempa\def\ltj@temp{2}\fi \def\ltj@tempa{allow}\ifx\ltj@temp\ltj@tempa\def\ltj@temp{3}\fi - \directlua{luatexja.stack.set_stack_perchar(luatexja.stack_table_index.XSP, - \ltj@safe@num@or{nil}{#1}, - \ltj@safe@num@or{nil}{\ltj@temp},0,3)}} + \ltj@@set@stack{XSP}03#1 \ltj@temp} % alxspmode = {, } % mode: inhibit, preonly, postonly, allow % or 0 1 2 3 \define@key[ltj]{japaram}{alxspmode}{% \inhibitxspcode - \expandafter\ltj@set@alxspmode#1:\relax} -\def\ltj@set@alxspmode#1,#2:{% - \lowercase{\edef\ltj@temp{#2}}% - \def\ltj@tempa{inhibit}\ifx\ltj@temp\ltj@tempa\def\ltj@temp{0}\fi - \def\ltj@tempa{preonly}\ifx\ltj@temp\ltj@tempa\def\ltj@temp{1}\fi - \def\ltj@tempa{postonly}\ifx\ltj@temp\ltj@tempa\def\ltj@temp{2}\fi - \def\ltj@tempa{allow}\ifx\ltj@temp\ltj@tempa\def\ltj@temp{3}\fi - \directlua{luatexja.stack.set_stack_perchar(luatexja.stack_table_index.XSP, - \ltj@safe@num@or{nil}{#1}, - \ltj@safe@num@or{nil}{\ltj@temp},0,3)}} + \expandafter\ltj@set@jaxspmode#1:\relax}% same code as jaxspmode % autospacing = (default: true) \define@boolkey[ltj]{japaram}{autospacing}[true]{% \ifltj@japaram@autospacing - \directlua{luatexja.ext_print_global()}\ltj@autospc=1 + \directlua{luatexja.ext_print_global()}\ltj@autospc\@ne \else - \directlua{luatexja.ext_print_global()}\ltj@autospc=0 + \directlua{luatexja.ext_print_global()}\ltj@autospc\z@ \fi} % autoxspacing = (default: true) \define@boolkey[ltj]{japaram}{autoxspacing}[true]{% \ifltj@japaram@autoxspacing - \directlua{luatexja.ext_print_global()}\ltj@autoxspc=1 + \directlua{luatexja.ext_print_global()}\ltj@autoxspc\@ne \else - \directlua{luatexja.ext_print_global()}\ltj@autoxspc=0 + \directlua{luatexja.ext_print_global()}\ltj@autoxspc\z@ \fi} % [x]]kanjiskip = -\ifltj@token@avail@scan %%%%%%%%%%%%%%%%%%%%%%%% new tokenlib - \define@key[ltj]{japaram}{kanjiskip}{\message{<#1>}\ltjsetkanjiskip #1} - \define@key[ltj]{japaram}{xkanjiskip}{\ltjsetxkanjiskip #1} + \define@key[ltj]{japaram}{kanjiskip}{\ltjsetkanjiskip#1} + \define@key[ltj]{japaram}{xkanjiskip}{\ltjsetxkanjiskip#1} \protected\def\ltjsetkanjiskip{% % SKIP \directlua{% local d = luatexja.token.scan_glue() @@ -403,26 +358,10 @@ local d = luatexja.token.scan_glue() luatexja.stack.set_stack_skip(luatexja.stack_table_index.XSK, d); node.free(d) }} -\else %%%%%%%%%%%%%%%%%%%%%%%% old tokenlib - \define@key[ltj]{japaram}{kanjiskip}{\ltjsetkanjiskip{#1}} - \define@key[ltj]{japaram}{xkanjiskip}{\ltjsetxkanjiskip{#1}} - \protected\def\ltjsetkanjiskip#1{% % SKIP - \directlua{% - local d = \ltj@safe@glue{#1} - luatexja.stack.set_stack_skip(luatexja.stack_table_index.KSK, d); node.free(d) - }\ignorespaces} - \protected\def\ltjsetxkanjiskip#1{% % SKIP - \directlua{% - local d = \ltj@safe@glue{#1} - luatexja.stack.set_stack_skip(luatexja.stack_table_index.XSK, d); node.free(d) - }\ignorespaces} -\else -\fi %%%%%%%%%%%%%%%%%%%%%%%% - % jcharwidowpenalty = \define@key[ltj]{japaram}{jcharwidowpenalty}{% %COUNT - \ltj@@set@stack0,#1:{JWP}{-10000}{10000}} + \ltj@@set@stack{JWP}{-10000}{10000}\z@#1 } % differentjfm = { large | small | average | pleft | pright | paverage | both} \define@choicekey*+[ltj]{japaram}{differentjfm}[\ltj@temp\ltj@tempr]% @@ -502,13 +441,13 @@ %%%%%%%% \ltjalchar, \ltjjachar \let\ltj@@origchar=\char \protected\def\ltj@alljachar{\relax - \csname ltj@kcat0\endcsname=0 - \csname ltj@kcat1\endcsname=0 - \csname ltj@kcat2\endcsname=0 - \csname ltj@kcat3\endcsname=0 - \csname ltj@kcat4\endcsname=0 - \csname ltj@kcat5\endcsname=0 - \csname ltj@kcat6\endcsname=0 } + \csname ltj@kcat0\endcsname\z@ + \csname ltj@kcat1\endcsname\z@ + \csname ltj@kcat2\endcsname\z@ + \csname ltj@kcat3\endcsname\z@ + \csname ltj@kcat4\endcsname\z@ + \csname ltj@kcat5\endcsname\z@ + \csname ltj@kcat6\endcsname\z@} \protected\def\ltj@allalchar{\relax \csname ltj@kcat0\endcsname="7FFFFFFF %" \csname ltj@kcat1\endcsname="7FFFFFFF %" @@ -519,18 +458,16 @@ \csname ltj@kcat6\endcsname="7FFFFFFF }%" \protected\def\ltjjachar{\afterassignment\ltj@@jachar\ltj@tempcnta} -\def\ltj@@jachar{{\directlua{tex.globaldefs = 0}\ltj@alljachar\ltj@@origchar\ltj@tempcnta}} +\def\ltj@@jachar{{\directlua{tex.globaldefs=0}\ltj@alljachar\ltj@@origchar\ltj@tempcnta}} \protected\def\ltjalchar{\afterassignment\ltj@@alchar\ltj@tempcnta} -\def\ltj@@alchar{{\directlua{tex.globaldefs = 0}\ltj@allalchar\ltj@@origchar\ltj@tempcnta}} +\def\ltj@@alchar{{\directlua{tex.globaldefs=0}\ltj@allalchar\ltj@@origchar\ltj@tempcnta}} %%%%%%%% \ltjsetmathletter, \ltjunsetmathletter \protected\def\ltjsetmathletter#1{% - \ltj@tempcnta=#1 - \directlua{luatexja.math.is_math_letters[\the\ltj@tempcnta]=true}% + \directlua{luatexja.math.is_math_letters[luatexja.token.scan_int()]=true}#1\relax } \protected\def\ltjunsetmathletter#1{% - \ltj@tempcnta=#1 - \directlua{luatexja.math.is_math_letters[\the\ltj@tempcnta]=false}% + \directlua{luatexja.math.is_math_letters[luatexja.token.scan_int()]=false}#1\relax } %%%%%%%% \ltjdeclarealtfont{100-200,3000-,5000,...} @@ -538,10 +475,10 @@ % いつも global \def\ltj@@getjfontnumber#1{% result in \ltj@tempcntc \ltj@reset@globaldefs - \begingroup\ltj@curjfnt=-1 \ltj@curtfnt=-1\relax + \begingroup\ltj@curjfnt\m@ne\ltj@curtfnt\m@ne\relax #1\directlua{luatexja.__temp = -(\the\ltj@curjfnt)*(\the\ltj@curtfnt)}\endgroup \ltj@tempcntc=\directlua{tex.sprint(luatexja.__temp)}\relax - \ifnum\ltj@tempcntc=-1 + \ifnum\ltj@tempcntc=\m@ne \@PackageError{luatexja-core}% {\string#1 is not a control sequence that represents \MessageBreak a Japanese font}{I'll use the current horizontal Japanese font instead.^^J}% @@ -716,42 +653,18 @@ } %%%%%%%% \ltjgetwd etc. -\ifltj@token@avail@scan %%%%%%%%%%%%%%%%%%%%%%%% new tokenlib \def\ltj@@getwd{% \directlua{luatexja.direction.get_box_dim('width', luatexja.token.scan_int())}} \def\ltj@@getht{% \directlua{luatexja.direction.get_box_dim('height', luatexja.token.scan_int())}} \def\ltj@@getdp{% \directlua{luatexja.direction.get_box_dim('depth', luatexja.token.scan_int())}} -\else %%%%%%%%%%%%%%%%%%%%%%%% old tokenlib -\def\ltj@@getwd#1{% - \directlua{luatexja.direction.get_box_dim('width', \the\numexpr#1\relax)}} -\def\ltj@@getht#1{% - \directlua{luatexja.direction.get_box_dim('height', \the\numexpr#1\relax)}} -\def\ltj@@getdp#1{% - \directlua{luatexja.direction.get_box_dim('depth', \the\numexpr#1\relax)}} -\fi %%%%%%%%%%%%%%%%%%%%%%%% \let\ltjgetwd=\ltj@@getwd\let\ltjgetht=\ltj@@getht\let\ltjgetdp=\ltj@@getdp %%%%%%%% \ltjsetwd= etc. -\protected\def\ltjsetwd{\begingroup - \ltj@reset@globaldefs\afterassignment\ltj@@setwd@a\ltj@tempcnta} -\def\ltj@@setwd@a{\afterassignment\ltj@@setwd@b\ltj@tempdima} -\def\ltj@@setwd@b{% - \directlua{luatexja.direction.set_box_dim('width')}% - \ltj@restore@globaldefs\endgroup} -\protected\def\ltjsetht{\begingroup - \ltj@reset@globaldefs\afterassignment\ltj@@setht@a\ltj@tempcnta} -\def\ltj@@setht@a{\afterassignment\ltj@@setht@b\ltj@tempdima} -\def\ltj@@setht@b{% - \directlua{luatexja.direction.set_box_dim('height')}% - \ltj@restore@globaldefs\endgroup} -\protected\def\ltjsetdp{\begingroup - \ltj@reset@globaldefs\afterassignment\ltj@@setdp@a\ltj@tempcnta} -\def\ltj@@setdp@a{\afterassignment\ltj@@setdp@b\ltj@tempdima} -\def\ltj@@setdp@b{% - \directlua{luatexja.direction.set_box_dim('depth')}% - \ltj@restore@globaldefs\endgroup} +\protected\def\ltjsetwd{\directlua{luatexja.direction.set_box_dim('width')}} +\protected\def\ltjsetht{\directlua{luatexja.direction.set_box_dim('height')}} +\protected\def\ltjsetdp{\directlua{luatexja.direction.set_box_dim('depth')}} %%------------------ Load module for the format