diff options
Diffstat (limited to 'macros/luatex/generic/luatexja/src')
-rw-r--r-- | macros/luatex/generic/luatexja/src/lltjext.sty | 4 | ||||
-rw-r--r-- | macros/luatex/generic/luatexja/src/ltj-base.sty | 15 | ||||
-rw-r--r-- | macros/luatex/generic/luatexja/src/ltj-direction.lua | 24 | ||||
-rw-r--r-- | macros/luatex/generic/luatexja/src/ltj-kinsoku.tex (renamed from macros/luatex/generic/luatexja/src/ltj-kinsoku_make.tex) | 44 | ||||
-rw-r--r-- | macros/luatex/generic/luatexja/src/ltj-latex.sty | 77 | ||||
-rw-r--r-- | macros/luatex/generic/luatexja/src/ltj-plain.sty | 12 | ||||
-rw-r--r-- | macros/luatex/generic/luatexja/src/ltjclasses.dtx | 13 | ||||
-rw-r--r-- | macros/luatex/generic/luatexja/src/luatexja-compat.sty | 22 | ||||
-rw-r--r-- | macros/luatex/generic/luatexja/src/luatexja-core.sty | 26 | ||||
-rw-r--r-- | macros/luatex/generic/luatexja/src/luatexja.lua | 22 | ||||
-rw-r--r-- | macros/luatex/generic/luatexja/src/luatexja.sty | 4 | ||||
-rw-r--r-- | macros/luatex/generic/luatexja/src/patches/lltjdefs.sty | 15 | ||||
-rw-r--r-- | macros/luatex/generic/luatexja/src/patches/lltjp-atbegshi.sty | 62 | ||||
-rw-r--r-- | macros/luatex/generic/luatexja/src/patches/lltjp-geometry.sty | 52 |
14 files changed, 225 insertions, 167 deletions
diff --git a/macros/luatex/generic/luatexja/src/lltjext.sty b/macros/luatex/generic/luatexja/src/lltjext.sty index 9e1421b130..d19db9ab61 100644 --- a/macros/luatex/generic/luatexja/src/lltjext.sty +++ b/macros/luatex/generic/luatexja/src/lltjext.sty @@ -738,7 +738,6 @@ \lineskip\z@skip\baselineskip\z@skip\@preamble} \def\endarray{\crcr\egroup\egroup\@end@alignbox\@arrayright} } - \@ifpackageloaded{array}{% \let\tabular=\ltj@lltjext@orig@tabular \let\array=\ltj@lltjext@orig@array @@ -746,8 +745,7 @@ }{% \let\ltj@lltjext@orig@tabular\relax \let\ltj@lltjext@orig@array\relax - \RequirePackage{filehook,etoolbox} - \AtEndOfPackageFile{array}{\ltj@lltjext@patch@array} + \ltj@ExecuteAfterPackage{array}{\ltj@lltjext@patch@array} } %%%%%%%%%%%%%%%% LuaTeX-ja original diff --git a/macros/luatex/generic/luatexja/src/ltj-base.sty b/macros/luatex/generic/luatexja/src/ltj-base.sty index 605797f3a3..622b387723 100644 --- a/macros/luatex/generic/luatexja/src/ltj-base.sty +++ b/macros/luatex/generic/luatexja/src/ltj-base.sty @@ -13,7 +13,7 @@ \ifltj@in@latex %<*LaTeX> \NeedsTeXFormat{LaTeX2e} - \ProvidesPackage{ltj-base}[2020-07-27] + \ProvidesPackage{ltj-base}[2020-08-04] \fi %</LaTeX> %%------------------ Tiny helpers @@ -96,13 +96,6 @@ %! plain であるか. \ltj@csletcs{ifltj@in@plain}{iffalse} -%% \ltj@require@package{<package>}{<date>} -%! サブパッケージを読み込む. LaTeX では \RequirePackage、それ以外では -%! \input を使う. <date> は必須だが空でもよい. -\def\ltj@require@package#1#2{ - \RequirePackage{#1}[#2] -} - %% \ltj@print{<message>} %! 端末への出力. \let\ltj@print\typeout @@ -116,11 +109,6 @@ \ltj@csletcs{ifltj@in@plain}{iffalse} \fi -%% \ltj@require@package{<package>}{<date>} -\def\ltj@require@package#1#2{ - \input #1.sty\relax -} - %% \ltj@print{<message>} \def\ltj@print#1{ \immediate\write16{#1} @@ -299,6 +287,7 @@ %% from Sonja Maus, ``Looking Ahead for a <box>'', %% TUGBoat, 11, No. 4, 1990. \newbox\ltj@afbox +\directlua{luatexja.afbox_number=\the\ltj@afbox} \protected\def\ltj@afterbox#1{% \def\ltj@afb@xarg{#1}% \afterassignment\ltj@afb@x diff --git a/macros/luatex/generic/luatexja/src/ltj-direction.lua b/macros/luatex/generic/luatexja/src/ltj-direction.lua index 523397d804..4c6c3b6bd7 100644 --- a/macros/luatex/generic/luatexja/src/ltj-direction.lua +++ b/macros/luatex/generic/luatexja/src/ltj-direction.lua @@ -900,8 +900,7 @@ do local sd = to_direct(s) local box_dir = get_box_dir(sd, dir_yoko) if box_dir%dir_math_mod ~= list_dir then - setbox( - 'ltj@afbox', + setbox('ltj@afbox', to_node(copy_list(make_dir_whatsit(sd, sd, list_dir, 'box_move'))) -- copy_list しないとリストの整合性が崩れる……? ) @@ -1059,8 +1058,7 @@ do local finalize_inner local function finalize_dir_node(db,new_dir) local b = getlist(db) - if getid(b)==id_whatsit and getsubtype(b)==sid_user - and getfield(b, 'user_id')==DIR then + while b and ((getid(b)~=id_hlist) and (getid(b)~=id_vlist)) do local ob = b; b = node_remove(b,b); setfield(db, 'head', b); node_free(ob) end @@ -1115,19 +1113,21 @@ do end end end - local getbox = tex.getbox + local getbox, shipout = tex.getbox, tex.shipout local setbox, copy = node.direct.setbox, node.direct.copy - local lua_mem_kb = 0 - function luatexja.direction.finalize() - local a = to_direct(tex.getbox("AtBeginShipoutBox")) + local afbox + function luatexja.direction.shipout() + start_time_measure 'box_primitive_hook' + if (not afbox) and luatexja.afbox_number then afbox = luatexja.afbox_number end + local a = to_direct(getbox 'ltj@afbox') local a_dir = get_box_dir(a, dir_yoko) if a_dir~=dir_yoko then local b = create_dir_node(a, a_dir, dir_yoko, false) setfield(b, 'head', a); a = b end - setfield(shipout_temp, 'head', a) - finalize_inner(shipout_temp) - setbox('global', "AtBeginShipoutBox", copy(getlist(shipout_temp))) - setfield(shipout_temp, 'head',nil) + setfield(shipout_temp, 'head', a); finalize_inner(shipout_temp) + setbox(afbox, copy(getlist(shipout_temp))); setfield(shipout_temp, 'head',nil) + shipout(afbox) + stop_time_measure 'box_primitive_hook' end end diff --git a/macros/luatex/generic/luatexja/src/ltj-kinsoku_make.tex b/macros/luatex/generic/luatexja/src/ltj-kinsoku.tex index 5d25ff0f11..d5b9c183b7 100644 --- a/macros/luatex/generic/luatexja/src/ltj-kinsoku_make.tex +++ b/macros/luatex/generic/luatexja/src/ltj-kinsoku.tex @@ -1,27 +1,22 @@ -%#!luatex ltj-kinsoku_make.tex -%\tracingall -\input luatexja.sty - -\catcode`\@=11 \ltj@tempcnta="0%" \loop\ifnum\ltj@tempcnta<"100%" \ltjsetparameter{alxspmode={\ltj@tempcnta,0}}% \advance\ltj@tempcnta by1 \repeat -\ltj@tempcnta=`\0%" -\loop\ifnum\ltj@tempcnta<`\:%" +\ltj@tempcnta=`0%" +\loop\ifnum\ltj@tempcnta<`:%" \ltjsetparameter{alxspmode={\ltj@tempcnta,3}}% \advance\ltj@tempcnta by1 \repeat -\ltj@tempcnta=`\A%" -\loop\ifnum\ltj@tempcnta<`\[%" +\ltj@tempcnta=`A%" +\loop\ifnum\ltj@tempcnta<`[%" \ltjsetparameter{alxspmode={\ltj@tempcnta,3}}% \advance\ltj@tempcnta by1 \repeat -\ltj@tempcnta=`\a%" +\ltj@tempcnta=`a%" \loop\ifnum\ltj@tempcnta<`\{%" \ltjsetparameter{alxspmode={\ltj@tempcnta,3}}% \advance\ltj@tempcnta by1 @@ -446,11 +441,28 @@ \ltjsetparameter{jaxspmode={`「,preonly}} \ltjsetparameter{jaxspmode={`」,postonly}} -\catcode`\_=12 -\directlua{ - s = table.copy(luatexja.stack.charprop_stack_table[0]) - s.kanjiskip = nil; s.xkanjiskip = nil - table.tofile('ltj-kinsoku.lua', s, 'return', false, true, false) +\ltjsetparameter{% + kanjiskip=\z@ plus .4pt minus .5pt, + xkanjiskip=2.40554pt plus 1pt minus 1pt, + yalbaselineshift=\z@, yjabaselineshift=\z@, + jcharwidowpenalty=500 } -\bye +% default setting of kansujichar (luatexja-compat) +\define@key[ltj]{japaram}{kansujichar}{\ltj@@set@stack{KSJ}{0}{0x7FFFFFFF}#1 } + +\ltjsetparameter{kansujichar={0,`〇}} +\ltjsetparameter{kansujichar={1,`一}} +\ltjsetparameter{kansujichar={2,`二}} +\ltjsetparameter{kansujichar={3,`三}} +\ltjsetparameter{kansujichar={4,`四}} +\ltjsetparameter{kansujichar={5,`五}} +\ltjsetparameter{kansujichar={6,`六}} +\ltjsetparameter{kansujichar={7,`七}} +\ltjsetparameter{kansujichar={8,`八}} +\ltjsetparameter{kansujichar={9,`九}} + +\directlua{% + local s = table.copy(luatexja.stack.charprop_stack_table[0]) + luatexja.base.save_cache('ltj-kinsoku_default', {s, version=1}) +} diff --git a/macros/luatex/generic/luatexja/src/ltj-latex.sty b/macros/luatex/generic/luatexja/src/ltj-latex.sty index ca774fe8cd..55fd5d4ebd 100644 --- a/macros/luatex/generic/luatexja/src/ltj-latex.sty +++ b/macros/luatex/generic/luatexja/src/ltj-latex.sty @@ -12,7 +12,7 @@ \def\luatexjalatexLoaded{\endinput} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{ltj-latex}[2020-05-17 LaTeX support of LuaTeX-ja] +\ProvidesPackage{ltj-latex}[2020-08-08 LaTeX support of LuaTeX-ja] % cleanup at end of the document %\let\ltj@@orig@end=\@@end @@ -27,45 +27,49 @@ \usepackage{lltjcore} %%% patching commands -\RequirePackage{filehook} - -\def\ltj@pkgpatch@im#1{% - \@ifnextchar[{\ltj@pkgpatch@im@{#1}}{\ltj@pkgpatch@im@{#1}[lltjp-#1]}}%] -\def\ltj@pkgpatch@im@#1[#2]{% - \AtEndOfPackageFile*{#1}{% - \@ifpackageloaded{#2}{}{% - \@namedef{ver@#2.\@pkgextension}{0000/00/00}%dummy - \if\catcode`@=11\let\ltj@temp\relax\else - \edef\ltj@temp{\noexpand\catcode`@=\the\catcode`@\relax}\makeatletter - \fi - \@@input{#2.\@pkgextension}\ltj@temp - }% +\newif\ifltj@ltfilehook@avail +\@ifl@t@r\fmtversion{2020-10-01}{% + \ifnum\patch@level<0\relax \ifnum\patch@level<-6 \ltj@ltfilehook@availtrue\fi + \else\ltj@ltfilehook@availtrue\fi +}{} +\ifltj@ltfilehook@avail + \def\@@ltj@ExecuteAfterPackage#1{\AddToHook{package/after/#1}} + \def\@@ltj@ExecuteBeforePackage#1{\AddToHook{package/before/#1}} + \def\ltj@ExecuteAfterPackage{\@ifstar\@@ltj@ExecuteAfterPackage@star\@@ltj@ExecuteAfterPackage} + \def\@@ltj@ExecuteAfterPackage@star#1#2{% + \@ifpackageloaded{#1}{#2}{\@@ltj@ExecuteAfterPackage{#1}{#2}}% + } + \def\ltj@ExecuteBeforePackage{\@ifstar\@@ltj@ExecuteBeforePackage@star\@@ltj@ExecuteBeforePackage} + \def\@@ltj@ExecuteBeforePackage@star#1#2{% + \@ifpackageloaded{#1}{#2}{\@@ltj@ExecuteBeforePackage{#1}{#2}}% + } +\else + \RequirePackage{filehook} + \let\ltj@ExecuteAfterPackage=\AtEndOfPackageFile + \let\ltj@ExecuteBeforePackage=\AtBeginOfPackageFile +\fi +\def\ltj@pkgpatch@im#1{\@ifnextchar[{\ltj@pkgpatch@im@{#1}}{\ltj@pkgpatch@im@{#1}[lltjp-#1]}}%] +\def\ltj@pkgpatch@im@#1[#2]{\ltj@ExecuteAfterPackage*{#1}{\ltj@pkgpatch@im@@{#2}}} +\def\ltj@pkgpatch@im@@#1{% + \@ifpackageloaded{#1}{}{% + \if\catcode`@=11\let\ltj@temp\relax\else + \edef\ltj@temp{\noexpand\catcode`@=\the\catcode`@\relax}\makeatletter + \fi + \@@input{#1.\@pkgextension}\ltj@temp }% } -\def\ltj@pkgpatch#1{% - \@ifnextchar[{\ltj@pkgpatch@@{#1}}{\ltj@pkgpatch@@{#1}[lltjp-#1]}}%] -\def\ltj@pkgpatch@@#1[#2]{% - \gpreto\@begindocumenthook{% - \@ifpackageloaded{#1}{% - \@ifpackageloaded{#2}{}{\RequirePackage{#2}}% - }{}% +\def\ltj@pkgpatch#1{\@ifnextchar[{\ltj@pkgpatch@{#1}}{\ltj@pkgpatch@{#1}[lltjp-#1]}}%] +\ifltj@ltfilehook@avail + \def\ltj@pkgpatch@@{\AddToHook{env/document/before}[luatexja.autopatch]} +\else + \def\ltj@pkgpatch@@{\gpreto\@begindocumenthook} +\fi +\def\ltj@pkgpatch@#1[#2]{% + \ltj@pkgpatch@@{% + \@ifpackageloaded{#1}{\@ifpackageloaded{#2}{}{\RequirePackage{#2}}}{}% }% } - -%%% default parameters -\directlua{ - local s = kpse.find_file('ltj-kinsoku.lua', 'tex') - luatexja.stack.charprop_stack_table[0] = s and dofile(s) or {} -} - -\ltjsetparameter{kanjiskip=\z@ plus .4pt minus .5pt, - xkanjiskip=.25\zw plus 1pt minus 1pt, - autospacing, autoxspacing, jacharrange={-1}, - yalbaselineshift=\z@, yjabaselineshift=\z@, - jcharwidowpenalty=500, differentjfm=paverage -} - \expandafter\let\csname JY3/mc/m/n/10\endcsname\relax %%% patch for packages @@ -83,7 +87,8 @@ \ltj@pkgpatch@im{unicode-math} \ltj@pkgpatch@im{siunitx} \ltj@pkgpatch@im{microtype} -\ltj@pkgpatch@im{everyshi} + +\ifltj@ltshipout@avail\else\ltj@pkgpatch@im{everyshi}\fi \RequirePackage{lltjp-geometry} diff --git a/macros/luatex/generic/luatexja/src/ltj-plain.sty b/macros/luatex/generic/luatexja/src/ltj-plain.sty index 16e71e1060..58baa9ff9d 100644 --- a/macros/luatex/generic/luatexja/src/ltj-plain.sty +++ b/macros/luatex/generic/luatexja/src/ltj-plain.sty @@ -57,16 +57,8 @@ \def\gt{\tengt\tentgt} \mc -\directlua{ - local s = kpse.find_file('ltj-kinsoku.lua', 'tex') - luatexja.stack.charprop_stack_table[0] = s and dofile(s) or {} -} - -\ltjsetparameter{kanjiskip=\z@ plus .4pt minus .4pt, - xkanjiskip=.25\zw plus 1pt minus 1pt, - autospacing, autoxspacing, jacharrange={-1}, - yalbaselineshift=\z@, yjabaselineshift=\z@, - jcharwidowpenalty=500, differentjfm=paverage, +\ltjsetparameter{% + autospacing, autoxspacing, differentjfm=paverage, jatextfont={0, \tenmin}, jascriptfont={0, \sevenmin}, jascriptscriptfont={0, \fivemin}, } diff --git a/macros/luatex/generic/luatexja/src/ltjclasses.dtx b/macros/luatex/generic/luatexja/src/ltjclasses.dtx index dd156b3393..a868bcb58e 100644 --- a/macros/luatex/generic/luatexja/src/ltjclasses.dtx +++ b/macros/luatex/generic/luatexja/src/ltjclasses.dtx @@ -133,6 +133,7 @@ % 新設の|ptexmin|オプション指定時にのみ行うようにした。 % 句読点を「、」「。」に統一。} % \changes{v1.8e-ltj-19}{2020/07/27}{|everyshi|パッケージへのパッチを別パッケージへ分離。} +% \changes{v1.8e-ltj-20}{2020/08/03}{\LaTeX~2020-10-01への対応.} % \fi % % \iffalse @@ -4706,8 +4707,12 @@ % \section{各種パッケージへの対応} % もともと縦組での利用を想定されていないいくつかのパッケージについて、 % 補正するためのコードを記述しておきます。 -% この節のコードは|filehook|パッケージ(Lua\TeX-ja読み込み時に自動でロードされます) -% の機能を用いています。 +%% この節のコードは|filehook|パッケージ(Lua\TeX-ja読み込み時に自動でロードされます) +%% の機能を用いています。 +% +% [2020-08-03 LTJ] \LaTeX\~2020-10-01に対応するため、Lua\TeX-jaの提供する命令 +% (|filehook|パッケージの命令の別名か、新\LaTeX のフック機構を利用して同様の内容を書いたもの) +% に置き換えました。 % % \subsection{\texttt{ftnright}パッケージ} % 脚注番号の書式が|ftnright|パッケージによって勝手に書き換えられるので、 @@ -4715,8 +4720,8 @@ % \changes{v1.7d}{2017/02/19}{コード追加} % \begin{macrocode} %<*article|report|book> -\AtBeginOfPackageFile*{ftnright}{\let\ltjt@orig@@makefntext=\@makefntext} -\AtEndOfPackageFile*{ftnright}{\let\@makefntext=\ltjt@orig@@makefntext} +\ltj@ExecuteBeforePackage*{ftnright}{\let\ltjt@orig@@makefntext=\@makefntext} +\ltj@ExecuteAfterPackage*{ftnright}{\let\@makefntext=\ltjt@orig@@makefntext} %</article|report|book> % \end{macrocode} % diff --git a/macros/luatex/generic/luatexja/src/luatexja-compat.sty b/macros/luatex/generic/luatexja/src/luatexja-compat.sty index f55bf51114..2d6d053979 100644 --- a/macros/luatex/generic/luatexja/src/luatexja-compat.sty +++ b/macros/luatex/generic/luatexja/src/luatexja-compat.sty @@ -65,7 +65,7 @@ \expandafter\let\csname ifltj@in@latex\expandafter\endcsname \csname iftrue\endcsname \NeedsTeXFormat{LaTeX2e} - \ProvidesPackage{luatexja-compat}[2018/03/29 Compatibility with pTeX] + \ProvidesPackage{luatexja-compat}[2020-08-08 Compatibility with pTeX] \fi %</LaTeX> % Load core module if not yet. @@ -99,26 +99,10 @@ \def\sjis{\ltj@code@conv{sjis}} \def\ucs{\ltj@code@conv{ucs}} -\def\ltj@code@conv#1{% - \directlua{luatexja.compat.from_#1(token.scan_int())}% -} - -\def\kansuji{% - \directlua{luatexja.compat.to_kansuji(token.scan_int())}% -} +\def\ltj@code@conv#1{\directlua{luatexja.compat.from_#1(token.scan_int())}} +\def\kansuji{\directlua{luatexja.compat.to_kansuji(token.scan_int())}} \define@key[ltj]{japaram}{kansujichar}{\ltj@@set@stack{KSJ}{0}{0x7FFFFFFF}#1 } - -\ltjsetparameter{kansujichar={0,`〇}} -\ltjsetparameter{kansujichar={1,`一}} -\ltjsetparameter{kansujichar={2,`二}} -\ltjsetparameter{kansujichar={3,`三}} -\ltjsetparameter{kansujichar={4,`四}} -\ltjsetparameter{kansujichar={5,`五}} -\ltjsetparameter{kansujichar={6,`六}} -\ltjsetparameter{kansujichar={7,`七}} -\ltjsetparameter{kansujichar={8,`八}} -\ltjsetparameter{kansujichar={9,`九}} \ltj@@decl@array@param{kansujichar} \ifltj@in@latex diff --git a/macros/luatex/generic/luatexja/src/luatexja-core.sty b/macros/luatex/generic/luatexja/src/luatexja-core.sty index 4acc74cb32..fee1a78a2f 100644 --- a/macros/luatex/generic/luatexja/src/luatexja-core.sty +++ b/macros/luatex/generic/luatexja/src/luatexja-core.sty @@ -65,7 +65,7 @@ \expandafter\let\csname ifltj@in@latex\expandafter\endcsname \csname iftrue\endcsname \NeedsTeXFormat{LaTeX2e} - \ProvidesPackage{luatexja-core}[2020-07-27 Core of LuaTeX-ja] + \ProvidesPackage{luatexja-core}[2020-08-08 Core of LuaTeX-ja] \fi %</LaTeX> %% Load prerequisite packages. @@ -80,7 +80,6 @@ \RequirePackage{xkeyval} [2012/10/14] % v2.6b \RequirePackage{etoolbox} \RequirePackage{lltjp-atbegshi} - \AtBeginShipoutInit \IfFileExists{everyhook.sty}{\RequirePackage{everyhook}\ltj@everyhook@availtrue}{} \else %<*!LaTeX> \input luatexbase.sty @@ -88,8 +87,6 @@ \input ltxcmds.sty \input pdftexcmds.sty \input xkeyval - \input lltjp-atbegshi.sty - \AtBeginShipoutInit \fi %</LaTeX> \endlinechar=-1 % @@ -619,7 +616,7 @@ %%%% \hbox, \vbox, \vtop \setbox\z@\hbox{% - \primitive\everymath{} + \primitive\everymath{}% $\directlua{% This value depends on the version of LuaTeX. luatexja.stack.mmode = -tex.nest[tex.nest.ptr].mode }$% @@ -655,8 +652,6 @@ \protected\def\ltj@@reset@badness{\luafunction\ltj@@reset@badness@inner} -\AtBeginShipout{\directlua{luatexja.direction.finalize()}} - %%%% \raise, \lower, \moveleft, \moveright \newluafunction\ltj@@lua@raisebox@inner \directlua{ @@ -686,6 +681,7 @@ %%%%\vsplit \let\ltj@@orig@vsplit=\vsplit \protected\def\vsplit{\directlua{luatexja.direction.vsplit()}} + %%%% \vcenter \let\ltj@@orig@vcenter=\vcenter \protected\def\vcenter{\ltj@afterbox\ltj@@vcenter\vbox} @@ -693,6 +689,21 @@ \ltj@@lua@raisebox\ltj@@orig@vcenter{\box\ltj@afbox}% } +%%%% \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{ @@ -745,6 +756,7 @@ %%------------------ Load module for the format +\directlua{luatexja.load_kinsoku()} \ifltj@in@latex %<*LaTeX> \RequirePackage{ltj-latex} \else\ifltj@in@plain %<*plain> diff --git a/macros/luatex/generic/luatexja/src/luatexja.lua b/macros/luatex/generic/luatexja/src/luatexja.lua index 988f51955e..074d050276 100644 --- a/macros/luatex/generic/luatexja/src/luatexja.lua +++ b/macros/luatex/generic/luatexja/src/luatexja.lua @@ -347,6 +347,22 @@ do end end +do + local cache_ver = 1 -- must be same as ltj-kinsoku.tex + local cache_outdate_fn = function (t) return t.version~=cache_ver end + local t = ltjs.charprop_stack_table + function luatexja.load_kinsoku() + for i,_ in pairs(t) do t[i]=nil end + local kinsoku = ltjb.load_cache('ltj-kinsoku_default',cache_outdate_fn) + if kinsoku and kinsoku[1] then + t[0] = kinsoku[1] + else + t[0] = {}; tex.print(cat_lp, '\\input ltj-kinsoku.tex\\relax') + end + luatexja.load_kinsoku=nil + end +end + -- debug do @@ -372,8 +388,7 @@ local function debug_show_node_X(p,print_fn, limit, inner_depth) local k = prefix local s local pt, pic = node_type(p.id), (has_attr(p, attr_icflag) or 0) % icflag_table.PROCESSED_BEGIN_FLAG - local base = prefix .. string.format('%X', pic) - .. ' ' .. pt .. ' ' .. tostring(p.subtype) .. ' ' + local base = prefix .. string.format('%X', pic) .. ' ' .. pt .. ' ' .. tostring(p.subtype) .. ' ' if pt == 'glyph' then s = base .. ' ' .. (p.char<0xF0000 and utfchar(p.char) or '') @@ -505,6 +520,9 @@ local function debug_show_node_X(p,print_fn, limit, inner_depth) for i=1,#p.data do print_fn(s .. ' [' .. i .. '] = ' .. tostring(p.data[i].csname)) end + elseif p.subtype==16 then + s = s .. ' mode=' .. p.mode .. ', literal="' .. p.data .. '"' + print_fn(s) else print_fn(s) end diff --git a/macros/luatex/generic/luatexja/src/luatexja.sty b/macros/luatex/generic/luatexja/src/luatexja.sty index d51b575f76..0f16a8c190 100644 --- a/macros/luatex/generic/luatexja/src/luatexja.sty +++ b/macros/luatex/generic/luatexja/src/luatexja.sty @@ -35,13 +35,13 @@ \expandafter\let\csname ifltj@in@latex\expandafter\endcsname \csname iftrue\endcsname \NeedsTeXFormat{LaTeX2e} - \ProvidesPackage{luatexja}[2020-08-02 Japanese Typesetting with Lua(La)TeX] + \ProvidesPackage{luatexja}[2020-08-08 Japanese Typesetting with Lua(La)TeX] \DeclareOption{disablejfam}{\ltj@disablejfamtrue} \DeclareOption*{} \ProcessOptions\relax \fi %</LaTeX> %%%% VERSION -\def\LuaTeXjaversion{20200802.0} +\def\LuaTeXjaversion{20200808.0} \directlua{require('ltj-unicode-ccfix.lua')}% catcode of ideographs diff --git a/macros/luatex/generic/luatexja/src/patches/lltjdefs.sty b/macros/luatex/generic/luatexja/src/patches/lltjdefs.sty index e0dba37547..76a3147036 100644 --- a/macros/luatex/generic/luatexja/src/patches/lltjdefs.sty +++ b/macros/luatex/generic/luatexja/src/patches/lltjdefs.sty @@ -3,12 +3,10 @@ % \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{lltjdefs}[2020/03/16 Default font settings of LuaTeX-ja] +\ProvidesPackage{lltjdefs}[2020-08-08 Default font settings of LuaTeX-ja] \ifdefined\ltj@stdmcfont\else\def\ltj@stdmcfont{file:HaranoAjiMincho-Regular.otf}\fi \ifdefined\ltj@stdgtfont\else\def\ltj@stdgtfont{file:HaranoAjiGothic-Medium.otf}\fi -%\ifdefined\ltj@stdmcfont\else\def\ltj@stdmcfont{IPAExMincho}\fi -%\ifdefined\ltj@stdgtfont\else\def\ltj@stdgtfont{IPAExGothic}\fi \ifdefined\ltj@stdyokojfm\else\def\ltj@stdyokojfm{ujis}\fi \ifdefined\ltj@stdtatejfm\else\def\ltj@stdtatejfm{ujisv}\fi \InputIfFileExists{luatexja.cfg}{% @@ -34,11 +32,9 @@ \newcommand\kanjiencodingdefault{JY3} \newcommand\kanjifamilydefault{\mcdefault} \newcommand\kanjiseriesdefault{\mddefault} -\ifdefined\@rmfamilyhook - %% LaTeX 2020-02-02 +\ifdefined\@rmfamilyhook%% LaTeX 2020-02-02 \newcommand\kanjishapedefault{\shapedefault} -\else - %% LaTeX 2019-10-01 +\else %% LaTeX 2019-10-01 \newcommand\kanjishapedefault{\updefault} \fi @@ -78,8 +74,7 @@ \DeclareOldFontCommand{\gt}{\normalfont\gtfamily}{} \unless\ifltj@disablejfam - \DeclareSymbolFont{mincho}{JY3}{mc}{m}{n} - \jfam\symmincho + \DeclareSymbolFont{mincho}{JY3}{mc}{m}{n}\jfam\symmincho \SetSymbolFont{mincho}{bold}{JY3}{gt}{m}{n} \DeclareSymbolFontAlphabet{\mathmc}{mincho} \DeclareMathAlphabet{\mathgt}{JY3}{gt}{m}{n} @@ -132,6 +127,8 @@ \expandafter\patchcmd\csname em \endcsname{\itshape}{\gtfamily\itshape}{}{} \def\eminnershape{\mcfamily \upshape} +\ltjsetparameter{autospacing, autoxspacing, differentjfm=paverage} + \ltjdefcharrange{1}{"80-"36F, "1E00-"1EFF} \ltjdefcharrange{2}{"370-"4FF, "1F00-"1FFF} \ltjdefcharrange{3}{% diff --git a/macros/luatex/generic/luatexja/src/patches/lltjp-atbegshi.sty b/macros/luatex/generic/luatexja/src/patches/lltjp-atbegshi.sty index ecdfd48c22..8512023874 100644 --- a/macros/luatex/generic/luatexja/src/patches/lltjp-atbegshi.sty +++ b/macros/luatex/generic/luatexja/src/patches/lltjp-atbegshi.sty @@ -2,23 +2,40 @@ % lltjp-atbegshi.sty % -\ifdefined\NeedsTeXFormat - \NeedsTeXFormat{LaTeX2e} - \ProvidesPackage{lltjp-atbegshi}[2020-07-30 Patch to atbegshi for LuaTeX-ja] - \RequirePackage{atbegshi} -\else - \input atbegshi.sty -\fi +\newif\ifltj@ltshipout@avail +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{lltjp-atbegshi}[2020-08-08 Patching \string\shipout\space hooks for LuaTeX-ja] +\@ifl@t@r\fmtversion{2020-10-01}{% + \ifnum\patch@level<0\relax \ifnum\patch@level<-6 \ltj@ltshipout@availtrue\fi + \else\ltj@ltshipout@availtrue\fi +}{} +\ifltj@ltshipout@avail\else\RequirePackage{atbegshi}\fi + +% concept: execute all hooks inside yoko direction \vbox -%-------------------------------------- -% following codes are almost copied from -% pxatbegshi.sty 2019/09/07 v0.5 (in platex-tools bundle, by H. Yamashita). +\ifltj@ltshipout@avail +%<*ltshipout>----------------------------------- +% +\RequirePackage{expl3} +\ExplSyntaxOn\makeatletter +\box_new:N \l__platex_shipout_dummy_box +\pretocmd {\__shipout_execute_cont:} + {\tex_setbox:D \l__platex_shipout_dummy_box \tex_vbox:D \c_group_begin_token \yoko } {} {} +\apptocmd {\__shipout_execute_cont:} {\c_group_end_token} {} {} +\ExplSyntaxOff +%</ltshipout>----------------------------------- + +\else +\AtBeginShipoutInit +%<*atbegshi>------------------------------------- +% patching atbegshi.sty +%%% following codes are almost copied from +%%% pxatbegshi.sty 2019/09/07 v0.5 (in platex-tools bundle, by H. Yamashita). %% internal macros are locally effective \begingroup -%--------------------------------------- helpers - +% helpers %% unique tokens \def\pxabgs@mark{\pxabgs@mark@} \def\pxabgs@fin{\pxabgs@fin@} @@ -27,29 +44,25 @@ \def\pxabgs@patch@cmd#1#2#3{% \ifx#1\relax\else \def\pxabgs@next##1#2##2\pxabgs@mark##3\pxabgs@fin{% - \ifx\pxabgs@mark##3\pxabgs@mark - \let#1\relax + \ifx\pxabgs@mark##3\pxabgs@mark\let#1\relax \else - \def\pxabgs@fragment{##2}% - \def#1{##1#3##2}% + \def\pxabgs@fragment{##2}\def#1{##1#3##2}% \fi}% \expandafter\pxabgs@next#1\pxabgs@mark#2\pxabgs@mark\pxabgs@fin \fi } -%--------------------------------------- - -% concept: execute all hooks inside yoko direction \vbox - % prepare -\let\pxabgs@AtBegShi@Output\AtBegShi@Output +\ifdefined\AtBegShi@Output + \let\pxabgs@AtBegShi@Output\AtBegShi@Output +\else\let\pxabgs@AtBegShi@Output\relax\fi % try first patch \pxabgs@patch@cmd\pxabgs@AtBegShi@Output {\let\AtBegShi@OrgProtect\protect}% {\setbox8\vbox\bgroup\yoko\let\AtBegShi@OrgProtect\protect} \pxabgs@patch@cmd\pxabgs@AtBegShi@Output - {\AtBeginShipoutOriginalShipout\box\AtBeginShipoutBox}% - {\AtBeginShipoutOriginalShipout\box\AtBeginShipoutBox\egroup} + {\AtBeginShipoutOriginalShipout\box\AtBeginShipoutBox}% + {\AtBeginShipoutOriginalShipout\box\AtBeginShipoutBox\egroup} \pxabgs@patch@cmd\pxabgs@AtBegShi@Output {% \begingroup @@ -75,5 +88,6 @@ \endgroup %% internal macros are no longer effective - +%</atbegshi>------------------------------------- +\fi \endinput diff --git a/macros/luatex/generic/luatexja/src/patches/lltjp-geometry.sty b/macros/luatex/generic/luatexja/src/patches/lltjp-geometry.sty index 9b8f1fc7a1..eba249fa5e 100644 --- a/macros/luatex/generic/luatexja/src/patches/lltjp-geometry.sty +++ b/macros/luatex/generic/luatexja/src/patches/lltjp-geometry.sty @@ -3,7 +3,7 @@ % \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{lltjp-geometry}[2020/02/25 Patch to geometry for LuaTeX-ja with vertical writing mode] +\ProvidesPackage{lltjp-geometry}[2020-08-05 Patch to geometry for LuaTeX-ja with vertical writing mode] \RequirePackage{expl3} \ifdefined\if@ltj@@geometry@tate\expandafter\endinput\fi \newif\if@ltj@@geometry@tate @@ -29,33 +29,65 @@ } \fi -\RequirePackage{filehook} +%============================================ +\unless\ifdefined\ltj@ExecuteAfterPackage +\expandafter\newif\csname ifltj@ltfilehook@avail\endcsname +\@ifl@t@r\fmtversion{2020-10-01}{% + \ifnum\patch@level<0\relax \ifnum\patch@level<-6 \ltj@ltfilehook@availtrue\fi + \else\ltj@ltfilehook@availtrue\fi +}{} +\ifltj@ltfilehook@avail + \def\@@ltj@ExecuteAfterPackage#1{\AddToHook{package/after/#1}} + \def\@@ltj@ExecuteBeforePackage#1{\AddToHook{package/before/#1}} + \def\ltj@ExecuteAfterPackage{\@ifstar\@@ltj@ExecuteAfterPackage@star\@@ltj@ExecuteAfterPackage} + \def\@@ltj@ExecuteAfterPackage@star#1#2{% + \@ifpackageloaded{#1}{#2}{\@@ltj@ExecuteAfterPackage{#1}{#2}}% + } + \def\ltj@ExecuteBeforePackage{\@ifstar\@@ltj@ExecuteBeforePackage@star\@@ltj@ExecuteBeforePackage} + \def\@@ltj@ExecuteBeforePackage@star#1#2{% + \@ifpackageloaded{#1}{#2}{\@@ltj@ExecuteBeforePackage{#1}{#2}}% + } +\else + \RequirePackage{filehook} + \let\ltj@ExecuteAfterPackage=\AtEndOfPackageFile + \let\ltj@ExecuteBeforePackage=\AtBeginOfPackageFile +\fi +\fi +%============================================ + \RequirePackage{etoolbox} \newif\ifGm@ltj@layoutswitch \let\orig@PackageWarningNoLine=\PackageWarningNoLine % define ifGm@swap@papersize if it is undefined \expandafter\newif\csname ifGm@swap@papersize\endcsname -\AtBeginOfPackageFile{geometry}{% +\ExplSyntaxOn +\ltj@ExecuteBeforePackage{geometry}{% \edef\Gm@ltj@topskip{\the\topskip} \edef\Gm@ltj@headsep{\the\headsep} \edef\Gm@ltj@footskip{\the\footskip} +\bool_set_false:N \l_tmpa_bool \ifluatex - \ifnum\ltjgetparameter{direction}=3 \@ltj@@geometry@tatetrue\fi + \ifnum\ltjgetparameter{direction}=3 \bool_set_true:N \l_tmpa_bool \fi \else - \@gobble\iftrue\csname iftdir\endcsname\@ltj@@geometry@tatetrue\fi + \@gobble\iftrue\csname iftdir\endcsname \bool_set_true:N \l_tmpa_bool \fi \fi -\csname tl_if_in:NnT\endcsname\@begindocumenthook{\tate}{\@ltj@@geometry@tatetrue} -\if@ltj@@geometry@tate +\ifltj@ltfilehook@avail + \prop_map_inline:Nn \g__hook_begindocument_code_prop + { \tl_if_in:nnT {#2} {\tate} {\bool_set_true:N \l_tmpa_bool} } +\else + \tl_if_in:NnT \@begindocumenthook {\tate} {\bool_set_true:N \l_tmpa_bool} +\fi +\bool_if:NT \l_tmpa_bool { \if@ltj@@geometry@forceoff \@ltj@@geometry@tatefalse \else \let\PackageWarningNoLine\@gobbletwo% 警告抑止 \fi -\fi } - -\AtEndOfPackageFile{geometry}{% +} +\ExplSyntaxOff +\ltj@ExecuteAfterPackage{geometry}{% \let\PackageWarningNoLine=\orig@PackageWarningNoLine \if@ltj@@geometry@tate \let\PackageWarningNoLine=\orig@PackageWarningNoLine |