From 6de0644ec81443a4bb7cc273ad79db611e41b398 Mon Sep 17 00:00:00 2001 From: Hironori Kitagawa Date: Thu, 18 Aug 2022 15:29:18 +0900 Subject: [PATCH] support for not setting \ltj@{y,t}{a,k}blshift (unset -> 0pt) --- src/lltjext.sty | 6 +++--- src/ltj-adjust.lua | 3 ++- src/ltj-charrange.lua | 4 ++-- src/ltj-jfmglue.lua | 10 ++++++---- src/luatexja-core.sty | 36 +++++++++++---------------------- src/luatexja.lua | 14 ++++++------- src/patches/lltjp-tascmac.sty | 46 ++++++++++++++++++++++--------------------- 7 files changed, 56 insertions(+), 63 deletions(-) diff --git a/src/lltjext.sty b/src/lltjext.sty index 532e7a2..a6ad8ad 100644 --- a/src/lltjext.sty +++ b/src/lltjext.sty @@ -3,7 +3,7 @@ % \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{lltjext}[2021-04-20 v1.2k-ltj-13 Macros for vertical writing] +\ProvidesPackage{lltjext}[2022-08-18 v1.2k-ltj-14 Macros for vertical writing] \RequirePackage{luatexja} \newcount\ltj@ext@dir \let\ltj@lltjext@orig@tabular=\tabular @@ -509,8 +509,8 @@ {\@@picture<#1>(#2,#3)}{\@@picture<#1>(#2,#3)(0,0)}} \newdimen\@picwd \def\ltj@@pic@reset@blshift{% - \ltj@yablshift\z@\ltj@ykblshift\z@ - \ltj@tablshift\z@\ltj@tkblshift\z@ + \unsetattribute\ltj@yablshift\unsetattribute\ltj@ykblshift + \unsetattribute\ltj@tablshift\unsetattribute\ltj@tkblshift }% \def\@@picture<#1>(#2,#3)(#4,#5){% \edef\ltj@@pic@save@blshift{% diff --git a/src/ltj-adjust.lua b/src/ltj-adjust.lua index 52f60a9..bb473de 100644 --- a/src/ltj-adjust.lua +++ b/src/ltj-adjust.lua @@ -590,7 +590,8 @@ do if Nq and Nq.met then Np.met = Nq.met; else Np.met = get_current_metric(lp) end Np.pre = 0; Np.post = 0; Np.xspc = 3 else Np.met, Np.pre = nil, nil; end - Np.auto_kspc, Np.auto_xspc = (has_attr(lp, attr_autospc)==1), (has_attr(lp, attr_autoxspc)==1) + Np.auto_kspc, Np.auto_xspc + = not has_attr(lp, attr_autospc, 0), not has_attr(lp, attr_autoxspc, 0) return Np else return Np end end diff --git a/src/ltj-charrange.lua b/src/ltj-charrange.lua index 1f7c94f..66d5ece 100644 --- a/src/ltj-charrange.lua +++ b/src/ltj-charrange.lua @@ -72,7 +72,7 @@ end local function get_range_setting(i) -- i: internal range number local a = tex_getattr(kcat_attr_table[i]) - return floor((a==UNSET and 0 or a)/pow_table[i])%2 + return (a==UNSET and 0 or a)&pow_table[i] end -- glyph_node p は和文文字か? @@ -85,7 +85,7 @@ function luatexja.charrange.is_ucs_in_japanese_char_direct(p ,c) end function luatexja.charrange.is_japanese_char_curlist(c) -- assume that c>=0x80 - return get_range_setting(jcr_table_main[c])~= jcr_noncjk + return get_range_setting(jcr_table_main[c])==0 end -- EXT diff --git a/src/ltj-jfmglue.lua b/src/ltj-jfmglue.lua index db90fed..3018470 100644 --- a/src/ltj-jfmglue.lua +++ b/src/ltj-jfmglue.lua @@ -3,7 +3,7 @@ -- luatexbase.provides_module({ name = 'luatexja.jfmglue', - date = '2022-08-16', + date = '2022-08-18', description = 'Insertion process of JFM glues, [x]kanjiskip and others', }) luatexja.jfmglue = luatexja.jfmglue or {} @@ -622,7 +622,8 @@ do Nx.post = table_current_stack[POST + c] or 0 Nx.xspc = table_current_stack[XSP + c] or 3 Nx.kcat = table_current_stack[KCAT + c] or 0 - Nx.auto_kspc, Nx.auto_xspc = (has_attr(x, attr_autospc)==1), (has_attr(x, attr_autoxspc)==1) + Nx.auto_kspc, Nx.auto_xspc + = not has_attr(x, attr_autospc, 0), not has_attr(x, attr_autoxspc, 0) return m, mc, cls end function set_np_xspc_jachar_hbox(Nx, x) @@ -634,7 +635,8 @@ do Nx.post = table_current_stack[POST + c] or 0 Nx.xspc = table_current_stack[XSP + c] or 3 Nx.kcat = table_current_stack[KCAT + c] or 0 - Nx.auto_kspc, Nx.auto_xspc = (has_attr(x, attr_autospc)==1), (has_attr(x, attr_autoxspc)==1) + Nx.auto_kspc, Nx.auto_xspc + = not has_attr(x, attr_autospc, 0), not has_attr(x, attr_autoxspc, 0) end -- 欧文文字のデータを取得 @@ -657,7 +659,7 @@ do end Nx.met = nil Nx.xspc = table_current_stack[XSP + c] or 3 - Nx.auto_xspc = (has_attr(x, attr_autoxspc)==1) + Nx.auto_xspc = not has_attr(x, attr_autoxspc, 0) end local set_np_xspc_alchar = set_np_xspc_alchar -- change the information for the next loop diff --git a/src/luatexja-core.sty b/src/luatexja-core.sty index 12caebd..7fdf646 100644 --- a/src/luatexja-core.sty +++ b/src/luatexja-core.sty @@ -65,7 +65,7 @@ \expandafter\let\csname ifltj@in@latex\expandafter\endcsname \csname iftrue\endcsname \NeedsTeXFormat{LaTeX2e} - \ProvidesPackage{luatexja-core}[2022-08-17 Core of LuaTeX-ja] + \ProvidesPackage{luatexja-core}[2022-08-18 Core of LuaTeX-ja] \fi % %% Load prerequisite packages. @@ -125,10 +125,6 @@ \newdimen\ltj@dimen@jQ \ltj@dimen@jQ=0.25mm \let\jQ=\ltj@dimen@jQ \let\jH=\jQ -%%%%%%%% error message -\def\ltj@defnum{0} -\def\ltj@defdimen{0} - %%%%%%%% Attributes for Japanese typesetting. \newattribute\ltj@icflag % attribute for italic correction \newattribute\ltj@curjfnt % index for ``current horizontal Japanese font'' @@ -148,13 +144,8 @@ \newlanguage\ltj@@japanese \ltj@dir\z@ \ltj@icflag\z@ -\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 @@ -357,18 +348,15 @@ % {y,t}{ja,al}baselineshift = % yjabaselineshift = -\define@key[ltj]{japaram}{yalbaselineshift}{% - \directlua{tex.setattribute(luatexja.isglobal, - luatexbase.attributes['ltj@yablshift'], token.scan_dimen())}#1\relax} -\define@key[ltj]{japaram}{yjabaselineshift}{% - \directlua{tex.setattribute(luatexja.isglobal, - luatexbase.attributes['ltj@ykblshift'], token.scan_dimen())}#1\relax} -\define@key[ltj]{japaram}{talbaselineshift}{% - \directlua{tex.setattribute(luatexja.isglobal, - luatexbase.attributes['ltj@tablshift'], token.scan_dimen())}#1\relax} -\define@key[ltj]{japaram}{tjabaselineshift}{% - \directlua{tex.setattribute(luatexja.isglobal, - luatexbase.attributes['ltj@tkblshift'], token.scan_dimen())}#1\relax} +\def\ltj@set@blshift@#1{\directlua{% + local n = token.scan_dimen() + tex.setattribute(luatexja.isglobal, + luatexbase.attributes['#1'], (n==0) and -0x7FFFFFFF or n)% +}} +\define@key[ltj]{japaram}{yalbaselineshift}{\ltj@set@blshift@{ltj@yablshift}#1\relax} +\define@key[ltj]{japaram}{yjabaselineshift}{\ltj@set@blshift@{ltj@ykblshift}#1\relax} +\define@key[ltj]{japaram}{talbaselineshift}{\ltj@set@blshift@{ltj@tablshift}#1\relax} +\define@key[ltj]{japaram}{tjabaselineshift}{\ltj@set@blshift@{ltj@tkblshift}#1\relax} % jaxspmode = {, } % mode: inhibit, preonly, postonly, allow @@ -392,7 +380,7 @@ % autospacing = (default: true) \define@boolkey[ltj]{japaram}{autospacing}[true]{% \ifltj@japaram@autospacing - \directlua{luatexja.ext_print_global()}\ltj@autospc\@ne + \directlua{luatexja.ext_print_global()}\unsetattribute\ltj@autospc \else \directlua{luatexja.ext_print_global()}\ltj@autospc\z@ \fi} @@ -400,7 +388,7 @@ % autoxspacing = (default: true) \define@boolkey[ltj]{japaram}{autoxspacing}[true]{% \ifltj@japaram@autoxspacing - \directlua{luatexja.ext_print_global()}\ltj@autoxspc\@ne + \directlua{luatexja.ext_print_global()}\unsetattribute\ltj@autoxspc \else \directlua{luatexja.ext_print_global()}\ltj@autoxspc\z@ \fi} diff --git a/src/luatexja.lua b/src/luatexja.lua index 6247c23..cb74a99 100644 --- a/src/luatexja.lua +++ b/src/luatexja.lua @@ -204,9 +204,9 @@ end -- EXT: print parameters that don't need arguments do local tex_getattr = tex.getattribute - local function getattr(a) - local r = tex_getattr(a) - return (r==-0x7FFFFFFF) and 0 or r + local function getattr(a, d) + local r = tex_getattr(a); d = d or 0 + return (r==-0x7FFFFFFF) and d or r end luatexja.unary_pars = { yalbaselineshift = function(t) @@ -231,10 +231,10 @@ do return ltjs.get_stack_table(stack_ind.JWP, 0, t) end, autospacing = function(t) - return getattr('ltj@autospc') + return getattr('ltj@autospc', 1) end, autoxspacing = function(t) - return getattr('ltj@autoxspc') + return getattr('ltj@autoxspc', 1) end, differentjfm = function(t) local f, r = luatexja.jfmglue.diffmet_rule, '???' @@ -284,8 +284,8 @@ do c=0 -- external range 217 == internal range 0 elseif c==31*ltjc.ATTR_RANGE then c=0 end - -- 負の値は \ltj@tablshift=\z@ -% \ybaselineshift=\z@ ==> \ltj@yablshift=\z@ -% \dimen...=\tbaselineshift ==> \dimen...=\ltj@tablshift sp -% \dimen...=\ybaselineshift ==> \dimen...=\ltj@yablshift sp \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{lltjp-tascmac}[2020/12/24 Patch to (t)ascmac for LuaTeX-ja] +\ProvidesPackage{lltjp-tascmac}[2022-08-18 Patch to (t)ascmac for LuaTeX-ja] \RequirePackage{tascmac} @@ -30,9 +26,11 @@ } %% boxnote environment +\def\ltj@backup@attr#1#2{\ifnum#1=-"7FFFFFFF #2\z@\else #2=#1sp\fi\unsetattribute#1} +\def\ltj@restore@attr#1#2{\ifdim#2=\z@ \unsetattribute#1\else #1#2\fi} \def\boxnote{\par\vspace{.3\baselineskip}% - \@saveybaselineshift\ltj@yablshift sp\ltj@yablshift\z@ - \@savetbaselineshift\ltj@tablshift sp\ltj@tablshift\z@ + \ltj@backup@attr\ltj@yablshift\@saveybaselineshift + \ltj@backup@attr\ltj@tablshift\@savetbaselineshift \setbox\@nbox=\hbox{\@ascgrp\vrule width1.08pt depth35pt b\hss a\hss b} \@whiledim \wd\@nbox<\hsize \do{ \setbox\@nbox=\hbox{\@ascgrp\unhbox\@nbox \hss a\hss b}} @@ -40,12 +38,13 @@ \vrule width1.08pt depth35pt}% \@bw=\wd\@nbox\advance\@bw -40pt \begin{lrbox}{\@nbody}\begin{minipage}{\@bw}% (KN:1998/02/27) - \ltj@yablshift\@saveybaselineshift \ltj@tablshift\@savetbaselineshift}% + \ltj@restore@attr\ltj@yablshift\@saveybaselineshift + \ltj@restore@attr\ltj@tablshift\@savetbaselineshift}% %% screen environment \def\screen{% - \@saveybaselineshift\ltj@yablshift sp\ltj@yablshift\z@ - \@savetbaselineshift\ltj@tablshift sp\ltj@tablshift\z@ + \ltj@backup@attr\ltj@yablshift\@saveybaselineshift + \ltj@backup@attr\ltj@tablshift\@savetbaselineshift \@ifnextchar[{\@screen}{\@screen[0]}} \def\@screen[#1]{\ifcase#1\def\@r{20}\def\@s{9.8pt}\def\@sx{10pt}\or \def\@r{18}\def\@s{8.8pt}\def\@sx{9pt}\or @@ -58,26 +57,28 @@ \def\@r{4}\def\@s{1.8pt}\def\@sx{2pt}\fi \par\vspace{.3\baselineskip}\@scw\linewidth \advance\@scw -\@r pt \setbox\scb@x=\hbox to\@scw\bgroup\begin{minipage}{\@scw}% (KN:1998/02/27) - \ltj@yablshift\@saveybaselineshift \ltj@tablshift\@savetbaselineshift}% + \ltj@restore@attr\ltj@yablshift\@saveybaselineshift + \ltj@restore@attr\ltj@tablshift\@savetbaselineshift}% %% itembox environment \def\@itembox[#1]#2{% - \@saveybaselineshift\ltj@yablshift sp\ltj@yablshift\z@ - \@savetbaselineshift\ltj@tablshift sp\ltj@tablshift\z@ + \ltj@backup@attr\ltj@yablshift\@saveybaselineshift + \ltj@backup@attr\ltj@tablshift\@savetbaselineshift \par\vspace{.3\baselineskip}% \setbox\@iboxstr=\hbox{% - \ltj@yablshift\@saveybaselineshift \ltj@tablshift\@savetbaselineshift #2}% + \ltj@restore@attr\ltj@yablshift\@saveybaselineshift + \ltj@restore@attr\ltj@tablshift\@savetbaselineshift #2}% \@itemh\ht\@iboxstr\advance\@itemh\dp\@iboxstr \vspace{.5\@itemh}\bgroup\@scw\linewidth \advance\@scw-20pt\@iboxpos={#1}% \setbox\scb@x=\hbox to\@scw\bgroup\begin{minipage}{\@scw}% - \ltj@yablshift\@saveybaselineshift - \ltj@tablshift\@savetbaselineshift + \ltj@restore@attr\ltj@yablshift\@saveybaselineshift + \ltj@restore@attr\ltj@tablshift\@savetbaselineshift \vspace*{.5\@itemh}}% %% \keytop \def\@keytop[#1]#2{% - {\setbox0=\hbox{\shortstack{#2}}\ltj@yablshift\z@\ltj@tablshift\z@% + {\setbox0=\hbox{\shortstack{#2}}\unsetattribute\ltj@yablshift\unsetattribute\ltj@tablshift% \dimen0=\wd0\advance\dimen0 5pt\dimen1=\dp0\advance\dimen1 2.5pt% \setbox\scscb@x=\hbox to\dimen0{% \@scw\wd0\hfil\vtop{\offinterlineskip @@ -92,7 +93,7 @@ %% \mask \def\mask#1#2{{\setbox\@bwsp=\hbox{#1}% - \setbox0=\hbox{\ltj@yablshift\z@\ltj@tablshift\z@ \@ascgrp#2}% + \setbox0=\hbox{\unsetattribute\ltj@yablshift\unsetattribute\ltj@tablshift \@ascgrp#2}% \dimen0=\wd\@bwsp\dimen1=\ht\@bwsp\advance\dimen1\dp\@bwsp\dimen2=-\dimen1 \setdim@{\dimen0}{\wd0}\setdim@{\dimen1}{\ht0}% \setbox\@@bwsp=\hbox to\dimen0{\leaders @@ -104,7 +105,7 @@ %% \maskbox \def\Maskbox#1#2#3#4#5#6{{% - \setbox0=\hbox{\ltj@yablshift\z@\ltj@tablshift\z@ \@ascgrp#3}% + \setbox0=\hbox{\unsetattribute\ltj@yablshift\unsetattribute\ltj@tablshift \@ascgrp#3}% \dimen0=#1\@setdim{\dimen0}{\wd0}\dimen1=#2\@setdim{\dimen1}{\ht0}% \ifx#4c\skip0=0pt plus1fil\skip1=\skip0\fi \ifx#4r\skip0=0pt plus1fil\skip1=0pt\fi @@ -119,12 +120,13 @@ %% shadebox environment \def\shadebox{\par\vspace{.3\baselineskip}% - \@saveybaselineshift\ltj@yablshift sp\ltj@yablshift\z@ - \@savetbaselineshift\ltj@tablshift sp\ltj@tablshift\z@ + \ltj@backup@attr\ltj@yablshift\@saveybaselineshift + \ltj@backup@attr\ltj@tablshift\@savetbaselineshift \dimen0\linewidth \advance\dimen0-20pt \advance\dimen0-2\fboxrule \advance\dimen0-\shaderule \setbox\@tempboxa=\hbox\bgroup\minipage{\dimen0}% - \ltj@yablshift\@saveybaselineshift \ltj@tablshift\@savetbaselineshift} + \ltj@restore@attr\ltj@yablshift\@saveybaselineshift + \ltj@restore@attr\ltj@tablshift\@savetbaselineshift}% %% \yen % -- 2.11.0