\expandafter\let\csname ifltj@in@latex\expandafter\endcsname
\csname iftrue\endcsname
\NeedsTeXFormat{LaTeX2e}
- \ProvidesPackage{luatexja-core}[2020-08-04 Core of LuaTeX-ja]
+ \ProvidesPackage{luatexja-core}[2021-05-11 Core of LuaTeX-ja]
\fi %</LaTeX>
%% Load prerequisite packages.
\RequirePackage{pdftexcmds} [2011/11/29] % v0.20
\RequirePackage{xkeyval} [2012/10/14] % v2.6b
\RequirePackage{etoolbox}
- \RequirePackage{lltjp-atbegshi}
\IfFileExists{everyhook.sty}{\RequirePackage{everyhook}\ltj@everyhook@availtrue}{}
\else %<*!LaTeX>
\input luatexbase.sty
\input ltxcmds.sty
\input pdftexcmds.sty
\input xkeyval
- \input lltjp-atbegshi.sty
\fi %</LaTeX>
\endlinechar=-1 %
\ltj@charclass\z@
\ltj@curjfnt\m@ne
\ltj@curtfnt\m@ne
+\ltj@yablshift\z@
+\ltj@ykblshift\z@
+\ltj@tablshift\z@
+\ltj@tkblshift\z@
%%%%%%%% Attributes for character ranges
\newcount\ltj@tempcnta
stop_time_measure(scan_arg())
end
}
-\protected\def\/{\relax\luafunction\ltj@@italic@inner}
+\begingroup\catcode`\/=11
+\global\let\ltj@@orig@/=\/
+\protected\gdef\ltj@@/{\relax\luafunction\ltj@@italic@inner}
+\global\let\/\ltj@@/ %% PRIMITIVE
+\endgroup
\luadef\ltj@@start@time@measure\ltj@@start@time@measure@inner
\luadef\ltj@@stop@time@measure\ltj@@stop@time@measure@inner
%%%%%%%% \inhibitglue
\newluafunction\ltj@reset@globaldefs@inner
\newluafunction\ltj@restore@globaldefs@inner
+\newluafunction\ltj@@disihb@inner
\newluafunction\ltj@@ihb@inner
\newluafunction\ltj@@fakeparbegin@inner
\newluafunction\ltj@@fakeboxbdd@inner
+\newluafunction\ltj@@ins@xk@inner
+\newluafunction\ltj@@ins@k@inner
\directlua{
local t = lua.get_functions_table()
t[\the\ltj@reset@globaldefs@inner]
= function() luatexja.global_temp = tex.globaldefs; tex.globaldefs = 0 end
t[\the\ltj@restore@globaldefs@inner]
= function() tex.globaldefs = luatexja.global_temp end
+ t[\the\ltj@@disihb@inner] = luatexja.jfmglue.create_disinhibitglue_node
t[\the\ltj@@ihb@inner] = luatexja.jfmglue.create_inhibitglue_node
t[\the\ltj@@fakeparbegin@inner] = luatexja.jfmglue.create_beginpar_node
t[\the\ltj@@fakeboxbdd@inner] = luatexja.jfmglue.create_boxbdd_node
+ t[\the\ltj@@ins@xk@inner] = luatexja.jfmglue.insert_xk_skip
+ t[\the\ltj@@ins@k@inner] = luatexja.jfmglue.insert_k_skip
}
\protected\luadef\ltj@reset@globaldefs \ltj@reset@globaldefs@inner
\protected\luadef\ltj@restore@globaldefs\ltj@restore@globaldefs@inner
+\protected\def\disinhibitglue{\ifhmode\relax\luafunction\ltj@@disihb@inner\fi}
\protected\def\inhibitglue{\ifhmode\relax\luafunction\ltj@@ihb@inner\fi}
\protected\def\ltjfakeparbegin{\ifhmode\relax\luafunction\ltj@@fakeparbegin@inner\fi}
\protected\def\ltjfakeboxbdd{\ifhmode\relax\luafunction\ltj@@fakeboxbdd@inner\fi}
+\protected\luadef\insertxkanjiskip \ltj@@ins@xk@inner
+\protected\luadef\insertkanjiskip \ltj@@ins@k@inner
%%%%%%%% \ltjdefcharrange<name>{100-200,3000-,5000,...}
\csname ltj@kcat5\endcsname="7FFFFFFF %"
\csname ltj@kcat6\endcsname="7FFFFFFF }%"
-\protected\def\ltjjachar{\afterassignment\ltj@@jachar\ltj@tempcnta}
+\protected\def\ltjjachar{\leavevmode\afterassignment\ltj@@jachar\ltj@tempcnta}
\def\ltj@@jachar{{\directlua{tex.globaldefs=0}\ltj@alljachar\ltj@@origchar\ltj@tempcnta}}
-\protected\def\ltjalchar{\afterassignment\ltj@@alchar\ltj@tempcnta}
+\protected\def\ltjalchar{\leavevmode\afterassignment\ltj@@alchar\ltj@tempcnta}
\def\ltj@@alchar{{\directlua{tex.globaldefs=0}\ltj@allalchar\ltj@@origchar\ltj@tempcnta}}
%%%%%%%% \ltjsetmathletter<number>, \ltjunsetmathletter<number>
\yoko
%%%% insert
-\let\orig@insert=\insert
+\let\ltj@@orig@insert\insert
\newluafunction\ltj@@lua@populate@insertwhatsit@inner
\directlua{
local t = lua.get_functions_table()
= luatexja.direction.populate_insertion_dir_whatsit
}
\luadef\ltj@@lua@populate@insertwhatsit\ltj@@lua@populate@insertwhatsit@inner
-\protected\def\insert{\begingroup\afterassignment\ltj@@insert@A\ltj@tempcnta}
-\protected\def\ltj@@insert@A{\orig@insert\ltj@tempcnta\bgroup
+\protected\def\ltj@@insert{\begingroup\afterassignment\ltj@@insert@A\ltj@tempcnta}
+\let\insert\ltj@@insert %% PRIMITIVE
+\protected\def\ltj@@insert@A{\ltj@@orig@insert\ltj@tempcnta\bgroup
\aftergroup\ltj@@insert@B\let\ltj@@next}
\protected\def\ltj@@insert@B{\ltj@@lua@populate@insertwhatsit\endgroup}
%%%% vadjust
-\let\ltj@@orig@vadjust=\vadjust
-\protected\def\vadjust{%
+\let\ltj@@orig@vadjust\vadjust
+\protected\def\ltj@@vadjust{%
\ltj@@orig@vadjust\bgroup
\directlua{luatexja.direction.set_list_direction_hook('adj')}%
\aftergroup\ltj@@vadjust@check@dir\let\ltj@@next}
+\let\vadjust\ltj@@vadjust %% PRIMITIVE
\protected\def\ltj@@vadjust@check@dir{%
\directlua{luatexja.direction.check_adjust_direction()}%
}
\PushPreHook{hbox}{\ltj@@box@dirhook\aftergroup\ltj@@reset@badness}
\PushPreHook{vbox}{\ltj@@box@dirhook\aftergroup\ltj@@reset@badness}
\else
- \let\ltj@@everyhbox=\everyhbox\let\ltj@@everyvbox=\everyvbox
+ \let\ltj@@everyhbox\everyhbox\let\ltj@@everyvbox\everyvbox
\newtoks\ltj@@i@everyhbox\newtoks\ltj@@i@everyvbox
- \let\everyhbox=\ltj@@i@everyhbox\let\everyvbox=\ltj@@i@everyvbox
+ \let\everyhbox\ltj@@i@everyhbox\let\everyvbox\ltj@@i@everyvbox
\ltj@@everyhbox{\ltj@@box@dirhook
\aftergroup\ltj@@reset@badness\the\ltj@@i@everyhbox}
\ltj@@everyvbox{\ltj@@box@dirhook
\aftergroup\ltj@@reset@badness\the\ltj@@i@everyvbox}
\fi
-\protected\def\ltj@@reset@badness{\luafunction\ltj@@reset@badness@inner}
+\luadef\ltj@@reset@badness\ltj@@reset@badness@inner
%%%% \raise, \lower, \moveleft, \moveright
\newluafunction\ltj@@lua@raisebox@inner
t[\the\ltj@@lua@raisebox@inner]=luatexja.direction.raise_box
}
\protected\luadef\ltj@@lua@raisebox\ltj@@lua@raisebox@inner
-\let\ltj@@orig@raise=\raise
-\let\ltj@@orig@lower=\lower
-\protected\def\raise{\ltj@reset@globaldefs\afterassignment\ltj@@raise\ltj@tempdima}
-\protected\def\lower{\ltj@reset@globaldefs\afterassignment\ltj@@raise\ltj@tempdima-}
-\protected\def\ltj@@raise{%
+\let\ltj@@orig@raise\raise
+\let\ltj@@orig@lower\lower
+\protected\def\ltj@@raise{\ltj@reset@globaldefs\afterassignment\ltj@@raise@\ltj@tempdima}
+\protected\def\ltj@@lower{\ltj@reset@globaldefs\afterassignment\ltj@@raise@\ltj@tempdima-}
+\protected\def\ltj@@raise@{%
\ltj@restore@globaldefs
\edef\ltj@@raise@a{%
\ltj@@lua@raisebox\ltj@@orig@raise\the\ltj@tempdima\noexpand\box\ltj@afbox
}\ltj@afterbox\ltj@@raise@a}
-\let\ltj@@orig@moveleft=\moveleft
-\let\ltj@@orig@moveright=\moveright
-\protected\def\moveleft{\ltj@reset@globaldefs\afterassignment\ltj@@moveleft\ltj@tempdima}
-\protected\def\moveright{\ltj@reset@globaldefs\afterassignment\ltj@@moveleft\ltj@tempdima-}
-\protected\def\ltj@@moveleft{%
+\let\ltj@@orig@moveleft\moveleft
+\let\ltj@@orig@moveright\moveright
+\protected\def\ltj@@moveleft{\ltj@reset@globaldefs\afterassignment\ltj@@moveleft@\ltj@tempdima}
+\protected\def\ltj@@moveright{\ltj@reset@globaldefs\afterassignment\ltj@@moveleft@\ltj@tempdima-}
+\protected\def\ltj@@moveleft@{%
\ltj@restore@globaldefs
\edef\ltj@@moveleft@a{%
\ltj@@lua@raisebox\ltj@@orig@moveleft\the\ltj@tempdima\noexpand\box\ltj@afbox
}\ltj@afterbox\ltj@@moveleft@a}
+\let\raise\ltj@@raise %% PRIMITIVE
+\let\lower\ltj@@lower %% PRIMITIVE
+\let\moveleft\ltj@@moveleft %% PRIMITIVE
+\let\moveright\ltj@@moveright %% PRIMITIVE
%%%%\vsplit
-\let\ltj@@orig@vsplit=\vsplit
-\protected\def\vsplit{\directlua{luatexja.direction.vsplit()}}
+\let\ltj@@orig@vsplit\vsplit
+\protected\def\ltj@@vsplit{\directlua{luatexja.direction.vsplit()}}
+\let\vsplit\ltj@@vsplit %% PRIMITIVE
%%%% \vcenter
-\let\ltj@@orig@vcenter=\vcenter
-\protected\def\vcenter{\ltj@afterbox\ltj@@vcenter\vbox}
-\protected\def\ltj@@vcenter{%
+\let\ltj@@orig@vcenter\vcenter
+\protected\def\ltj@@vcenter{\ltj@afterbox\ltj@@vcenter@\vbox}
+\protected\def\ltj@@vcenter@{%
\ltj@@lua@raisebox\ltj@@orig@vcenter{\box\ltj@afbox}%
}
+\let\vcenter\ltj@@vcenter %% PRIMITIVE
-%%%% \shipout
-\newluafunction\ltj@@lua@shipout@inner
-\directlua{
- local t = lua.get_functions_table()
- t[\the\ltj@@lua@shipout@inner]=luatexja.direction.shipout
-}
-\protected\luadef\ltj@@lua@shipout\ltj@@lua@shipout@inner
-\protected\def\ltj@shipout{\ltj@afterbox\ltj@@lua@shipout}
-\ifprimitive\shipout\let\shipout\ltj@shipout\fi
-\ifcsname tex_shipout:D\endcsname
- \expandafter\let\csname tex_shipout:D\endcsname\ltj@shipout
-\fi
-\ifdefined\AtBeginShipoutOriginalShipout
- \let\AtBeginShipoutOriginalShipout\ltj@shipout
-\fi
%%%% \unhbox and \unvbox
\newluafunction\ltj@@lua@unboxcheckdir@inner
\directlua{
}
\luadef\ltj@@lua@unboxcheckdir\ltj@@lua@unboxcheckdir@inner
\long\def \@gobbletwo #1#2{}
-\let\ltj@@orig@unhbox=\unhbox
-\let\ltj@@orig@unvbox=\unvbox
-\protected\def\unhbox{\ltj@reset@globaldefs\afterassignment\ltj@@unhbox\ltj@tempcnta}
-\protected\def\unvbox{\ltj@reset@globaldefs\afterassignment\ltj@@unvbox\ltj@tempcnta}
-\protected\def\ltj@@unhbox{%
- \ltj@@lua@unboxcheckdir\ltj@@orig@unhbox\ltj@tempcnta}
-\protected\def\ltj@@unvbox{%
- \ltj@@lua@unboxcheckdir\ltj@@orig@unvbox\ltj@tempcnta}
-\let\ltj@@orig@unhcopy=\unhcopy
-\let\ltj@@orig@unvcopy=\unvcopy
-\protected\def\unhcopy{\ltj@reset@globaldefs\afterassignment\ltj@@unhcopy\ltj@tempcnta}
-\protected\def\unvcopy{\ltj@reset@globaldefs\afterassignment\ltj@@unvcopy\ltj@tempcnta}
-\protected\def\ltj@@unhcopy{%
+\let\ltj@@orig@unhbox\unhbox
+\let\ltj@@orig@unvbox\unvbox
+\protected\def\ltj@@unhbox{\ltj@reset@globaldefs\afterassignment\ltj@@unhbox@\ltj@tempcnta}
+\protected\def\ltj@@unvbox{\ltj@reset@globaldefs\afterassignment\ltj@@unvbox@\ltj@tempcnta}
+\protected\def\ltj@@unhbox@{\ltj@@lua@unboxcheckdir\ltj@@orig@unhbox\ltj@tempcnta}
+\protected\def\ltj@@unvbox@{\ltj@@lua@unboxcheckdir\ltj@@orig@unvbox\ltj@tempcnta}
+\let\ltj@@orig@unhcopy\unhcopy
+\let\ltj@@orig@unvcopy\unvcopy
+\protected\def\ltj@@unhcopy{\ltj@reset@globaldefs\afterassignment\ltj@@unhcopy@\ltj@tempcnta}
+\protected\def\ltj@@unvcopy{\ltj@reset@globaldefs\afterassignment\ltj@@unvcopy@\ltj@tempcnta}
+\protected\def\ltj@@unhcopy@{%
\directlua{luatexja.direction.unbox_check_dir(true)}%
\ltj@@orig@unhcopy\ltj@tempcnta
\directlua{luatexja.direction.uncopy_restore_whatsit()}}
-\protected\def\ltj@@unvcopy{%
+\protected\def\ltj@@unvcopy@{%
\directlua{luatexja.direction.unbox_check_dir(true)}%
\ltj@@orig@unvcopy\ltj@tempcnta
\directlua{luatexja.direction.uncopy_restore_whatsit()}}
+\let\unhbox\ltj@@unhbox %% PRIMITIVE
+\let\unvbox\ltj@@unvbox %% PRIMITIVE
+\let\unhcopy\ltj@@unhcopy %% PRIMITIVE
+\let\unvcopy\ltj@@unvcopy %% PRIMITIVE
%%%% lastbox
\let\ltj@@orig@lastbox=\lastbox
-\protected\def\lastbox{%
- \directlua{luatexja.direction.lastbox_hook()}\ltj@@orig@lastbox
-}
+\protected\def\ltj@@lastbox{\directlua{luatexja.direction.lastbox_hook()}\ltj@@orig@lastbox}
+\let\lastbox\ltj@@lastbox %% PRIMITIVE
%%%%%%%% \ltjgetwd<box_num> etc.
-\def\ltj@@getwd{%
- \directlua{luatexja.direction.get_box_dim('width', token.scan_int())}}
-\def\ltj@@getht{%
- \directlua{luatexja.direction.get_box_dim('height', token.scan_int())}}
-\def\ltj@@getdp{%
- \directlua{luatexja.direction.get_box_dim('depth', token.scan_int())}}
+\def\ltj@@getwd{\directlua{luatexja.direction.get_box_dim('width', token.scan_int())}}
+\def\ltj@@getht{\directlua{luatexja.direction.get_box_dim('height', token.scan_int())}}
+\def\ltj@@getdp{\directlua{luatexja.direction.get_box_dim('depth', token.scan_int())}}
\let\ltjgetwd=\ltj@@getwd\let\ltjgetht=\ltj@@getht\let\ltjgetdp=\ltj@@getdp
%%%%%%%% \ltjsetwd<box_num>=<dimen> etc.
%%------------------ Load module for the format
+\directlua{luatexja.load_kinsoku()}
\ifltj@in@latex %<*LaTeX>
\RequirePackage{ltj-latex}
\else\ifltj@in@plain %<*plain>