X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=src%2Fluatexja-core.sty;h=4a5d3f0e4e520b0e6fd898e09e2358bed2ff19d9;hb=847312c712d721a0198c00563075948541ced2b7;hp=5e676dd50eb05a4ba4c6bf156848e4a8f1616fe6;hpb=1e9507b6cac6749442636bff9ec9f1d7db08d63d;p=luatex-ja%2Fluatexja.git diff --git a/src/luatexja-core.sty b/src/luatexja-core.sty index 5e676dd..4a5d3f0 100644 --- a/src/luatexja-core.sty +++ b/src/luatexja-core.sty @@ -148,6 +148,7 @@ \newluatexattribute\jfam % index for current jfam \newcount\ltj@dir@count % counter for indicating direction +\newcount\ltj@adjdir@count % counter for indicating direction (for vadjust) \newluatexattribute\ltj@dir \ltj@dir=0 @@ -255,6 +256,11 @@ luatexja.stack.hmode = -tex.nest[tex.nest.ptr].mode }% } +\setbox0\vbox{% + \directlua{% This value depends on the version of LuaTeX. + luatexja.stack.vmode = -tex.nest[tex.nest.ptr].mode + }% +} % prebreakpenalty = {, } \define@key[ltj]{japaram}{kcatcode}{% @@ -535,20 +541,48 @@ \newif\ifddir \protected\def\tate{% \directlua{luatexja.direction.set_list_direction(3, 'tate')}% - \ltj@dir@count=3\tdirtrue\ydirfalse\ddirfalse} + \ltj@reset@globaldefs\ltj@dir@count=3\relax + \ifvmode\ltj@adjdir@count=3\fi\tdirtrue\ydirfalse\ddirfalse\ltj@restore@globaldefs} \protected\def\yoko{% \directlua{luatexja.direction.set_list_direction(4, 'yoko')}% - \ltj@dir@count=4\ydirtrue\tdirfalse\ddirfalse} + \ltj@reset@globaldefs\ltj@dir@count=4\relax + \ifvmode\ltj@adjdir@count=4\fi\ydirtrue\tdirfalse\ddirfalse\ltj@restore@globaldefs} \protected\def\dtou{% \directlua{luatexja.direction.set_list_direction(1, 'dtou')}% - \ltj@dir@count=1\ydirfalse\tdirfalse\ddirtrue} + \ltj@reset@globaldefs\ltj@dir@count=1\relax + \ifvmode\ltj@adjdir@count=1\fi\ydirfalse\tdirfalse\ddirtrue\ltj@restore@globaldefs} \yoko -%%%%%%%% \ifybox, \iftbox -%%%%%%%% \ltjgetwd{} etc. -\def\ltjgetwd{\expandafter\expandafter\expandafter\ltj@@getwd\ltj@grab@num} -\def\ltjgetht{\expandafter\expandafter\expandafter\ltj@@getht\ltj@grab@num} -\def\ltjgetdp{\expandafter\expandafter\expandafter\ltj@@getdp\ltj@grab@num} +\newcount\ltj@adjdir@count@backup +%%%% insert +\let\orig@insert=\insert +\protected\def\insert{\begingroup\afterassignment\ltj@@insert@A\ltj@tempcnta} +\protected\def\ltj@@insert@A{\orig@insert\ltj@tempcnta\bgroup\aftergroup\endgroup\let\next} +%%%% vadjust +\let\ltj@@orig@vadjust=\vadjust +\protected\def\vadjust{% + \ltj@@orig@vadjust\bgroup + \ifcase\ltj@adjdir@count\or\dtou\or\or\tate\or\yoko\fi + \aftergroup\ltj@@vadjust@check@dir\let\next} +\protected\def\ltj@@vadjust@check@dir{% + \directlua{luatexja.direction.check_adjust_direction()}% +} +%%%% unhbox and unvbox +\let\ltj@@orig@unhbox=\unhbox +\let\ltj@@orig@unvbox=\unvbox +\protected\def\unhbox{\begingroup\afterassignment\ltj@@unhbox\ltj@tempcnta} +\protected\def\unvbox{\begingroup\afterassignment\ltj@@unvbox\ltj@tempcnta} +\protected\def\ltj@@unhbox{% + \directlua{luatexja.direction.check_dir(\the\ltj@tempcnta)}% + \ltj@@orig@unhbox\ltj@tempcnta\endgroup} +\protected\def\ltj@@unvbox{% + \directlua{luatexja.direction.check_dir(\the\ltj@tempcnta)}% + \ltj@@orig@unvbox\ltj@tempcnta\endgroup} + +%%%%%%%% \ltjgetwd etc. +%\def\ltjgetwd{\expandafter\expandafter\expandafter\ltj@@getwd\ltj@grab@num} +%\def\ltjgetht{\expandafter\expandafter\expandafter\ltj@@getht\ltj@grab@num} +%\def\ltjgetdp{\expandafter\expandafter\expandafter\ltj@@getdp\ltj@grab@num} \def\ltj@@getwd#1{% \directlua{luatexja.direction.get_box_dim('width', \the\numexpr#1\relax)}% \ltj@tempdima% @@ -561,7 +595,9 @@ \directlua{luatexja.direction.get_box_dim('depth', \the\numexpr#1\relax)}% \ltj@tempdima% } +\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} @@ -581,7 +617,14 @@ \directlua{luatexja.direction.set_box_dim('depth')}% \ltj@restore@globaldefs\endgroup} - +%%%%%%%% \ifybox, \iftbox, \ifdbox +\def\ltj@@box@cond#1#2\fi{\fi\csname if#1\endcsname} +\def\ifybox#1{\directlua{luatexja.direction.dir_conditional(\the\numexpr #1\relax, 4)}% + \ltj@@box@cond{true}\else\ltj@@box@cond{false}\fi} +\def\iftbox#1{\directlua{luatexja.direction.dir_conditional(\the\numexpr #1\relax, 3)}% + \ltj@@box@cond{true}\else\ltj@@box@cond{false}\fi} +\def\ifdbox#1{\directlua{luatexja.direction.dir_conditional(\the\numexpr #1\relax, 1)}% + \ltj@@box@cond{true}\else\ltj@@box@cond{false}\fi} %%------------------ Load module for the format