X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=src%2Fluatexja-core.sty;h=f5240669c57451523be9956c943c11b6d80e0d5c;hb=0526b27bf88ed7f2adedef267f4d9226f6f5a692;hp=cf4b8a5872385048b220433382b5e8cb1cfeff5d;hpb=ef9d01b3e5965876c5333b5365d014a024d13c2f;p=luatex-ja%2Fluatexja.git diff --git a/src/luatexja-core.sty b/src/luatexja-core.sty index cf4b8a5..f524066 100644 --- a/src/luatexja-core.sty +++ b/src/luatexja-core.sty @@ -65,24 +65,27 @@ \expandafter\let\csname ifltj@in@latex\expandafter\endcsname \csname iftrue\endcsname \NeedsTeXFormat{LaTeX2e} - \ProvidesPackage{luatexja-core}[2014/06/22 Core of LuaTeX-ja] + \ProvidesPackage{luatexja-core}[2014/09/24 Core of LuaTeX-ja] \fi % %% Load prerequisite packages. \endlinechar=13 % +\newif\ifltj@everyhook@avail\ltj@everyhook@availfalse %! 外部パッケージは普通の \endlinechar で読まないと危険. \ifltj@in@latex %<*LaTeX> \RequirePackage{luaotfload} [2013/05/10] % v2.2 - \RequirePackage{infwarerr} [2010/04/08] % v1.3 \RequirePackage{ltxcmds} [2011/11/09] % v1.22 \RequirePackage{pdftexcmds} [2011/11/29] % v0.20 \RequirePackage{xkeyval} [2012/10/14] % v2.6b + \RequirePackage{atbegshi} + \IfFileExists{everyhook.sty}{\RequirePackage{everyhook}\ltj@everyhook@availtrue}{} \else %<*!LaTeX> \input luaotfload.sty - \input infwarerr.sty \input ltxcmds.sty \input pdftexcmds.sty \input xkeyval + \input atbegshi.sty + \AtBeginShipoutInit \fi % \endlinechar=-1 % @@ -143,7 +146,7 @@ \newluatexattribute\jfam % index for current jfam \newluatexattribute\ltj@dir - +\newlanguage\ltj@@japanese \ltj@dir=0 \ltj@icflag=0 \ltj@origchar=0 @@ -249,9 +252,6 @@ \directlua{% This value depends on the version of LuaTeX. luatexja.stack.hmode = -tex.nest[tex.nest.ptr].mode }% - $\directlua{% This value depends on the version of LuaTeX. - luatexja.stack.mmode = -tex.nest[tex.nest.ptr].mode - }$% } \setbox0\vbox{% \directlua{% This value depends on the version of LuaTeX. @@ -438,6 +438,7 @@ \ltj@@decl@array@param{boxdir} \def\ltjgetparameter#1{% \directlua{luatexja.base.start_time_measure('get_par')}% + % stop call is moved in luatexja.lua \ifcsname ltj@@array@param/#1\endcsname \expandafter\ltx@firstoftwo \else @@ -448,11 +449,9 @@ } \def\ltj@@getparam@one#1{% \directlua{luatexja.ext_get_parameter_unary('#1')}% - \directlua{luatexja.base.stop_time_measure('get_par')}% }% \def\ltj@@getparam@two#1#2{% \directlua{luatexja.ext_get_parameter_binary('#1', \ltj@safe@num@or{nil}{#2})}% - \directlua{luatexja.base.stop_time_measure('get_par')}% } %%%%%%%% \ltjalchar, \ltjjachar @@ -492,7 +491,7 @@ %%%%%%%% \ltjdeclarealtfont{100-200,3000-,5000,...} % の 第 3 引数の文字達は で組む % いつも global -\def\ltj@@getjfontnumber#1{% result in \ltj@tempcntc +\def\ltj@@getjfontnumber#1{% result in \ltj@tempcntc \ltj@reset@globaldefs \begingroup\ltj@curjfnt=-1 \ltj@curtfnt=-1\relax #1\directlua{luatexja.__temp = -(\the\ltj@curjfnt)*(\the\ltj@curtfnt)}\endgroup @@ -503,7 +502,7 @@ a Japanese font}{I'll use the current horizontal Japanese font instead.^^J}% \ltj@tempcntc=\ltj@curjfnt \fi\ltj@restore@globaldefs} - + \protected\def\ltjdeclarealtfont#1#2#3{% {\ltj@@getjfontnumber#1\@tempcnta=\ltj@tempcntc% \@tempcnta: 基底フォント \ltj@@getjfontnumber#2% @@ -553,28 +552,52 @@ \yoko %%%% 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} +\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\ltj@@insert@B\let\next} +\protected\def\ltj@@insert@B{\directlua{luatexja.direction.populate_insertion_dir_whatsit()}\endgroup} + %%%% vadjust \let\ltj@@orig@vadjust=\vadjust \protected\def\vadjust{% \ltj@@orig@vadjust\bgroup - \directlua{luatexja.direction.set_list_direction('adj')}% + \directlua{luatexja.direction.set_list_direction_hook('adj')}% \aftergroup\ltj@@vadjust@check@dir\let\next} \protected\def\ltj@@vadjust@check@dir{% \directlua{luatexja.direction.check_adjust_direction()}% } %%%% \hbox, \vbox, \vtop -\everyhbox{% - \directlua{luatexja.direction.set_list_direction()}% - \aftergroup\ltj@@reset@badness -} -\everyvbox{% - \directlua{luatexja.direction.set_list_direction()}% - \aftergroup\ltj@@reset@badness +\setbox0\hbox{% + $\directlua{% This value depends on the version of LuaTeX. + luatexja.stack.mmode = -tex.nest[tex.nest.ptr].mode + }$% } +\ifltj@everyhook@avail + \PushPreHook{hbox}{% + \directlua{luatexja.direction.set_list_direction_hook()}% + \aftergroup\ltj@@reset@badness + } + \PushPreHook{vbox}{% + \directlua{luatexja.direction.set_list_direction_hook()}% + \aftergroup\ltj@@reset@badness + } +\else + {\catcode`\!=0\catcode`\\=12 + !@PackageWarningNoLine{luatexja-core}{% + I will use \everyhbox and \everyvbox directly !MessageBreak + for supporting multiple directions, !MessageBreak + since everyhook.sty is not available}} + \everyhbox{% + \directlua{luatexja.direction.set_list_direction_hook()}% + \aftergroup\ltj@@reset@badness + } + \everyvbox{% + \directlua{luatexja.direction.set_list_direction_hook()}% + \aftergroup\ltj@@reset@badness + } +\fi \protected\def\ltj@@reset@badness{% \directlua{% if luatexja.global_temp then @@ -584,6 +607,7 @@ end }% } +\AtBeginShipout{\directlua{luatexja.direction.finalize()}} %%%% \raise, \lower, \moveleft, \moveright \let\ltj@@orig@raise=\raise @@ -616,16 +640,29 @@ } %%%% \unhbox and \unvbox +\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{% - \directlua{luatexja.direction.check_dir(\the\ltj@tempcnta)}% + \directlua{luatexja.direction.unbox_check_dir()}% \ltj@@orig@unhbox\ltj@tempcnta} \protected\def\ltj@@unvbox{% - \directlua{luatexja.direction.check_dir(\the\ltj@tempcnta)}% + \directlua{luatexja.direction.unbox_check_dir()}% \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{% + \directlua{luatexja.direction.unbox_check_dir(true)}% + \ltj@@orig@unhcopy\ltj@tempcnta + \directlua{luatexja.direction.uncopy_restore_whatsit()}} +\protected\def\ltj@@unvcopy{% + \directlua{luatexja.direction.unbox_check_dir(true)}% + \ltj@@orig@unvcopy\ltj@tempcnta + \directlua{luatexja.direction.uncopy_restore_whatsit()}} %%%% lastbox @@ -635,9 +672,6 @@ } %%%%%%%% \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%