OSDN Git Service

target release date: 2023-12-30
[luatex-ja/luatexja.git] / src / ltj-base.sty
index 605797f..5b3c77e 100644 (file)
 
 \ifltj@in@latex                 %<*LaTeX>
   \NeedsTeXFormat{LaTeX2e}
-  \ProvidesPackage{ltj-base}[2020-07-27]
+  \ProvidesPackage{ltj-base}[2021-03-16]
 \fi                             %</LaTeX>
 
 %%------------------ Tiny helpers
 
 %% Registers
 %\newcount\ltj@tempcnta % defined at luatexja-core.sty
+%\newcount\ltj@tempdima % defined at luatexja-core.sty
 \newcount\ltj@tempcntb
 \newcount\ltj@tempcntc
-\newdimen\ltj@tempdima
 % \newskip\ltj@tempskipa unused
 % \newtoks\ltj@temptoks unused
 
 %% \ltj@q@mark
 \protected\def\ltj@q@mark{\ltj@q@mark@}
 
-%! etoolbox の \letcs, \cslet, \csletcs.
-%% \ltj@letcs
-\protected\def\ltj@letcs#1#2{
-  \expandafter\let\expandafter#1\csname#2\endcsname
-}
-
-%% \ltj@cslet
-\protected\def\ltj@cslet#1#2{
-  \expandafter\let\csname#1\endcsname#2
-}
-
+%! etoolbox の \csletcs.
 %% \ltj@csletcs
 \protected\def\ltj@csletcs#1#2{
   \expandafter\let\csname#1\expandafter\endcsname
   \else\expandafter\ltx@secondoftwo\fi
 }
 
-%% \ltj@if@empty{<stuff>}{<yes>}{<no>}
-%! <stuff> が空であるか.
-% Checks if <stuff> is empty.
-\long\def\ltj@if@empty#1{
-  \ltj@ifx{\ltj@@q@empty#1\ltj@@q@empty}
-}
 \protected\def\ltj@@q@empty{\ltj@@q@empty@}
 
 %% \ltj@if@blank{<stuff>}{<yes>}{<no>}
 %! 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
-
 \else                           %<*!LaTeX>
 
 %% \ifltj@in@plain
   \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}
-}
-
 \fi                             %</LaTeX>
 %%------------------ Value-token handling
 
 %% \ltj@gobble@glue <glue>
 %! 次に続くグルー値を(2 回展開で)読み捨てる. 
 \def\ltj@gobble@glue{
-  \directlua{token.scan_glue()}
+  \directlua{node.free(token.scan_glue())}
 }
 
 %% \ltj@gobble@dimen <dimen>
 %!   (command_name が "assign_int" であるトークン).
 %! (注意: まだ文字表記(`A)に対応していません.)
 \def\ltj@grab@num{
-  \directlua{tex.sprint('{' .. token.scan_int() .. '}')}
+  \directlua{tex.sprint(luatexbase.catcodetables['latex-package'], '{' .. token.scan_int() .. '}')}
 }
 
 %%------------------ Safe passing
   }
 }
 
-%% \ltj@safe@real{<real>}
-%! 実数. これは十進表記に限る.
-% For a real number given in decimal notation or a macro that
-% expands to such notation.
-\def\ltj@safe@real#1{
-  (tonumber("\luatexluaescapestring{#1}"))
-}
-
-%% \ltj@val@counter{<counter>}
-%! LaTeX カウンタの現在値.
-% For the current value of a LaTeX counter.
-\def\ltj@val@counter#1{
-  (\expandafter\number\csname c@#1\endcsname)
-}
-
-%% \ltj@val@skip{<skip>}
-% For the current value of a skip (or LaTeX-length) parameter.
-%! グルーレジスタ(LaTeX 長さ変数).
-%! 整形式のグルー値にも使える.
-\def\ltj@val@skip#1{
-  (luatexja.base.to_skip("\the\glueexpr#1\relax"))
-}
 %! 整形式の整数 → 数値 : \number#1
 %! 内部寸法 → 数値 : \number#1
 %! 整形式の寸法 → 数値 : \number\dimexpr#1\relax
   "\luatexluaescapestring{\detokenize{#1}}"
 }
 
-%% \ltj@luaescape{<text>}
-%! 非トークン化して Lua エスケープ.
-\def\ltj@luaescape#1{
-  \luatexluaescapestring{\detokenize{#1}}
-}
-%% \ltj@luaxescape{<text>}
-%! 非トークン化せずに(展開ありで) Lua エスケープ.
-%! つまり単なる \luatexescape.
-\let\ltj@luaxescape\luatexluaescapestring
-
-
 %%------------------ debug logging
 \ifdefined\LuaTeXjaDebugEnabled
 
 
 %% \ltj@afterbox <token><box>
 %% -> \setbox\ltj@afbox<box><token>
-%% from Sonja Maus, ``Looking Ahead for a <box>'',
-%%      TUGBoat, 11, No. 4, 1990.
+%% idea from the atbegshi package
 \newbox\ltj@afbox
+\directlua{luatexja.afbox_number=\the\ltj@afbox}
 \protected\def\ltj@afterbox#1{%
-  \def\ltj@afb@xarg{#1}%
-  \afterassignment\ltj@afb@x
-  \chardef\ltj@@next`.}
-\def\ltj@afb@x{\futurelet\ltj@@next\ltj@afb@xtest}
-\def\ltj@afb@xtest{%
-  \ifcase\ifx\ltj@@next\hbox\tw@\fi
-         \ifx\ltj@@next\vbox\tw@\fi
-         \ifx\ltj@@next\vtop\tw@\fi
-         \ifx\ltj@@next\box\@ne\fi
-         \ifx\ltj@@next\copy\@ne\fi
-         \ifx\ltj@@next\vsplit\@ne\fi
-         \ifx\ltj@@next\lastbox\@ne\fi
-         0% ``A <box> was ...'' error will be causes by \setbox later anyway.
-  \or\afterassignment\ltj@afb@xarg
-  \or\afterassignment\ltj@afb@xagarg
-  \fi
-  \setbox\ltj@afbox
+  \def\ltj@afbox@@arg{#1}\edef\ltj@afbox@@grouplevel{\number\currentgrouplevel}%
+  \afterassignment\ltj@afbox@@\setbox\ltj@afbox}
+\def\ltj@afbox@@{%
+  \ifnum\ltj@afbox@@grouplevel<\currentgrouplevel\expandafter\aftergroup\fi\ltj@afbox@@arg
 }
-\def\ltj@afb@xagarg{\aftergroup\ltj@afb@xarg}
 
 
 %%------------------ all done