From: Hironori Kitagawa Date: Thu, 10 Feb 2022 21:14:22 +0000 (+0900) Subject: target release date: 2022-02-11 X-Git-Tag: 20220211.0~1^2~1 X-Git-Url: http://git.osdn.jp/view?a=commitdiff_plain;h=3d82bb6bd1c72774d809db474a8d19408df25f2a;p=luatex-ja%2Fluatexja.git target release date: 2022-02-11 --- diff --git a/doc/luatexja-en.pdf b/doc/luatexja-en.pdf index c97ff3a..5ebcaab 100644 Binary files a/doc/luatexja-en.pdf and b/doc/luatexja-en.pdf differ diff --git a/doc/luatexja-ja.pdf b/doc/luatexja-ja.pdf index 32da85e..0014d5e 100644 Binary files a/doc/luatexja-ja.pdf and b/doc/luatexja-ja.pdf differ diff --git a/doc/luatexja.dtx b/doc/luatexja.dtx index 24c31e1..bdd6f3a 100644 --- a/doc/luatexja.dtx +++ b/doc/luatexja.dtx @@ -7838,19 +7838,45 @@ stretch_priority={kanjiskip=-35,xkanjiskip=-25,others=50} 初期値は1(つまり\cs{lineskip}(の自然長))である. \end{cslist} -さらに,バージョン20220207.0以降では次の命令が提供される: +さらに,バージョン20220211.0以降では次の命令が提供される. \begin{cslist} - \item[\cs{ltjghostjachar}] + \item[\cs{ltjghostbeginjachar}] \LuaTeX-ja本体が提供している\cs{ltjfakeparbegin}, \cs{ltjfakeboxbdd}と類似の命令である. 実行された箇所が(限定・非限定を問わず)水平モードであった場合に,実行された箇所は - 「文字クラス0の\textbf{JAchar}」の直前かつ直後であると,\LuaTeX-jaの和文処理グルー挿入処理に認識させる. + 「文字クラス0の\textbf{JAchar}」の直前であると, + \LuaTeX-jaの和文処理グルー挿入処理に認識させる.以下の実行例を参照. - 主な仕様用途は和文ゴーストでの使用である.\Pkg{BXghost}パッケージ(\cite{bxghost})などでは - 伝統的に全角空白(\texttt{U+3000})と\verb+\kern-1\zw+を組み合わせた方法が使われてきたが, - \LuaTeX-jaでは全角空白を使っただけではうまくいかない可能性があるため,新たに命令が用意された. +\medskip +\begin{LTXexample}[width=18\zw] +\ltjsetparameter{kanjiskip=14pt,xkanjiskip=50pt} +\let\LG=\ltjghostbeforejachar +A\LG B \par% ==> ALchar--(xkanjiskip)--\LG +A\LG 字 \par% ==> ALchar--(xkanjiskip)--\LG +漢\LG B \par% ==> JAchar--(kanjiskip)--\LG +漢\LG 字 \par% ==> JAchar--(kanjiskip)--\LG +\end{LTXexample} + + \item[\cs{ltjghostafterjachar}] + \cs{ltjghostbeginjachar}と対を成す命令で,実行された箇所は + 「文字クラス0の\textbf{JAchar}」の直後であると, + \LuaTeX-jaの和文処理グルー挿入処理に認識させる.以下の実行例を参照. - なお,本命令は将来的に\LuaTeX-ja本体に組み込む可能性もある. +\medskip +\begin{LTXexample}[width=18\zw] +\ltjsetparameter{kanjiskip=14pt,xkanjiskip=50pt} +\let\LG=\ltjghostafterjachar +A\LG B \par% ==> \LG--(xkanjiskip)--ALchar +漢\LG B \par% ==> \LG--(xkanjiskip)--ALchar +A\LG 字 \par% ==> \LG--(kanjiskip)--JAchar +漢\LG 字 \par% ==> \LG--(kanjiskip)--JAchar +\end{LTXexample} \end{cslist} +なお,バージョン20220207.0で追加された\cs{ltjghostjachar}は実装にバグがあったのと「両側」 +という点が扱いづらかったので,将来は削除する予定である. + +両命令の主な仕様用途は和文ゴーストでの使用である.\Pkg{BXghost}パッケージ(\cite{bxghost})などでは +伝統的に全角空白(\texttt{U+3000})と\verb+\kern-1\zw+を組み合わせた方法が使われてきたが, +\LuaTeX-jaでは全角空白を使っただけではうまくいかない可能性があるため,新たに命令が用意された. % diff --git a/src/addons/luatexja-adjust.sty b/src/addons/luatexja-adjust.sty index bf66d8f..ab0c580 100644 --- a/src/addons/luatexja-adjust.sty +++ b/src/addons/luatexja-adjust.sty @@ -64,7 +64,7 @@ \expandafter\let\csname ifltj@in@latex\expandafter\endcsname \csname iftrue\endcsname \NeedsTeXFormat{LaTeX2e} - \ProvidesPackage{luatexja-adjust}[2022-02-07] + \ProvidesPackage{luatexja-adjust}[2022-02-11] \fi % % Load core module if not yet. @@ -146,7 +146,7 @@ t[\the\ltj@@ghost@jachar@inner@before] = function() cgj(1) end; t[\the\ltj@@ghost@jachar@inner@after] = function() cgj(2) end }% -\protected\def\ltjghostjachar{\ifhmode\relax\luafunction\ltj@@ghost@jachar@inner@both\fi} +\protected\def\ltjghostjachar{\ifhmode\relax\luafunction\ltj@@ghost@jachar@inner@both\fi}% will be removed \protected\def\ltjghostbeforejachar{\ifhmode\relax\luafunction\ltj@@ghost@jachar@inner@before\fi} \protected\def\ltjghostafterjachar{\ifhmode\relax\luafunction\ltj@@ghost@jachar@inner@after\fi} diff --git a/src/ltj-adjust.lua b/src/ltj-adjust.lua index a82a4ef..71584d8 100644 --- a/src/ltj-adjust.lua +++ b/src/ltj-adjust.lua @@ -569,16 +569,17 @@ do local attr_curtfnt = luatexbase.attributes['ltj@curtfnt'] local dir_tate = luatexja.dir_table.dir_tate local get_dir_count = ltjd.get_dir_count - local function get_current_jfont(n) - return has_attr(n, (get_dir_count()==dir_tate) and attr_curtfnt or attr_curjfnt) - end local ltjf_font_metric_table = ltjf.font_metric_table + local function get_current_metric(n) + local fn = has_attr(n, (get_dir_count()==dir_tate) and attr_curtfnt or attr_curjfnt) + return fn and ltjf_font_metric_table[fn] + end local function whatsit_callback(Np, lp, Nq) if Np and Np.nuc then return Np elseif Np and getfield(lp, 'user_id') == GHOST_JACHAR then Np.first = lp; Np.nuc = lp; Np.last = lp; Np.class = 0 if getfield(lp,'value')<2 then - if Nq and Nq.met then Np.met = Nq.met; else Np.met = ltjf_font_metric_table[get_current_jfont(lp)] end + 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) @@ -590,8 +591,7 @@ do local x, y = node_prev(Nq.nuc), Nq.nuc Nq.first, Nq.nuc, Nq.last = x, x, x if getfield(y,'value')%2==0 then - if Np and Np.met then Nq.met = Np.met - else Nq.met = ltjf_font_metric_table[get_current_jfont(y)] end + if Np and Nq.met then Nq.met = Np.met; else Nq.met = get_current_metric(y) end Nq.pre = 0; Nq.post = 0; Nq.xspc = 3 else Nq.met, Nq.pre = nil, nil; end s = node_remove(head, y); node_free(y) diff --git a/src/luatexja.sty b/src/luatexja.sty index ae389af..26ebad2 100644 --- a/src/luatexja.sty +++ b/src/luatexja.sty @@ -27,7 +27,7 @@ \newif\ifltj@disablejfam %%%% VERSION -\def\LuaTeXjaversion{20220207.0} +\def\LuaTeXjaversion{20220211.0} %% Check if LaTeX is used. \begingroup\expandafter\expandafter\expandafter\endgroup