OSDN Git Service

support for not setting \ltj@{y,t}{a,k}blshift (unset -> 0pt)
authorHironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
Thu, 18 Aug 2022 06:29:18 +0000 (15:29 +0900)
committerHironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
Thu, 18 Aug 2022 06:29:46 +0000 (15:29 +0900)
src/lltjext.sty
src/ltj-adjust.lua
src/ltj-charrange.lua
src/ltj-jfmglue.lua
src/luatexja-core.sty
src/luatexja.lua
src/patches/lltjp-tascmac.sty

index 532e7a2..a6ad8ad 100644 (file)
@@ -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
    {\@@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{%
index 52f60a9..bb473de 100644 (file)
@@ -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
index 1f7c94f..66d5ece 100644 (file)
@@ -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
index db90fed..3018470 100644 (file)
@@ -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
index 12caebd..7fdf646 100644 (file)
@@ -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                             %</LaTeX>
 
 %% Load prerequisite packages.
 \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''
 \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
 
 % {y,t}{ja,al}baselineshift = <dimen>
 % yjabaselineshift = <dimen>
-\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 = {<char_code>, <mode>}
 % mode: inhibit, preonly, postonly, allow
 % autospacing = <bool> (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}
 % autoxspacing = <bool> (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}
index 6247c23..cb74a99 100644 (file)
@@ -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
-      -- 負の値は <U+0080 の文字の文字範囲,として出てくる.この時はいつも欧文文字なので 1 を返す
-         return (c<0) and 1 or ltjc.get_range_setting(c)
+         -- 負の値は <U+0080 の文字の文字範囲,として出てくる.この時はいつも欧文文字なので 1 を返す
+         if c<0 then return 1 else return (ltjc.get_range_setting(c)==0) and 0 or 1 end
       end,
       prebreakpenalty = function(c, t)
          return ltjs.get_stack_table(stack_ind.PRE + ltjb.in_unicode(c, true), 0, t)
index 4d2d350..ab02250 100644 (file)
@@ -1,13 +1,9 @@
 %
 % lltjp-tascmac.sty
 %  based on tascmac.sty [2016/04/15 v2.0b (community edition)]
-% \tbaselineshift=\z@ ==> \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}
 
 }
 
 %% 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}}
   \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
   \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
 
 %% \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
 
 %% 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
 %