OSDN Git Service

better handling of dir_node
[luatex-ja/luatexja.git] / src / luatexja-core.sty
index 4638366..5e676dd 100644 (file)
 %%%%%%%% \inhibitglue
 \protected\def\ltj@reset@globaldefs{%
   \directlua{luatexja.global_temp = tex.globaldefs; tex.globaldefs = 0}}
-\protected\def\ltj@restore@globaldefs{\directlua{tex.globaldefs = luatexja.global_temp}}
+\protected\def\ltj@restore@globaldefs{\directlua{tex.globaldefs = luatexja.global_temp}\relax}
 \protected\def\inhibitglue{\ifhmode\ltj@@ihb\fi}
 \def\ltj@@ihb{\relax\directlua{luatexja.jfmglue.create_inhibitglue_node()}}
 
 %%%%%%%% \yoko, \tate, \ifydir, \iftdir
 \newif\ifydir
 \newif\iftdir
+\newif\ifddir
 \protected\def\tate{%
   \directlua{luatexja.direction.set_list_direction(3, 'tate')}%
-  \ltj@dir@count=3 \tdirtrue\ydirfalse
-}
+  \ltj@dir@count=3\tdirtrue\ydirfalse\ddirfalse}
 \protected\def\yoko{%
   \directlua{luatexja.direction.set_list_direction(4, 'yoko')}%
-  \ltj@dir@count=4 \ydirtrue\tdirfalse
-}
+  \ltj@dir@count=4\ydirtrue\tdirfalse\ddirfalse}
+\protected\def\dtou{%
+  \directlua{luatexja.direction.set_list_direction(1, 'dtou')}%
+  \ltj@dir@count=1\ydirfalse\tdirfalse\ddirtrue}
 \yoko
 
 %%%%%%%% \ifybox, \iftbox
-%%%%%%%% \ltjgetwd{<box_num>}
+%%%%%%%% \ltjgetwd{<box_num>} 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%
+}
+\def\ltj@@getht#1{%
+  \directlua{luatexja.direction.get_box_dim('height', \the\numexpr#1\relax)}%
+  \ltj@tempdima%
+}
+\def\ltj@@getdp#1{%
+  \directlua{luatexja.direction.get_box_dim('depth', \the\numexpr#1\relax)}%
+  \ltj@tempdima%
+}
+
+\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}