summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/ctex/engine/ctex-engine-luatex.def
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/ctex/engine/ctex-engine-luatex.def')
-rw-r--r--Master/texmf-dist/tex/latex/ctex/engine/ctex-engine-luatex.def104
1 files changed, 46 insertions, 58 deletions
diff --git a/Master/texmf-dist/tex/latex/ctex/engine/ctex-engine-luatex.def b/Master/texmf-dist/tex/latex/ctex/engine/ctex-engine-luatex.def
index 997f4f93986..1c47572caf8 100644
--- a/Master/texmf-dist/tex/latex/ctex/engine/ctex-engine-luatex.def
+++ b/Master/texmf-dist/tex/latex/ctex/engine/ctex-engine-luatex.def
@@ -24,10 +24,10 @@
%%
%% ---------------------------------------------------------------------
%%
-\GetIdInfo$Id: ctex.dtx 6604451 2021-06-20 17:08:49 +0800 Qing Lee <sobenlee@gmail.com> $
+\GetIdInfo$Id: ctex.dtx fcbe2c0 2021-12-12 18:20:54 +0800 Qing Lee <sobenlee@gmail.com> $
{LuaLaTeX adapter (CTEX)}
\ProvidesExplFile{ctex-engine-luatex.def}
- {\ExplFileDate}{2.5.7}{\ExplFileDescription}
+ {\ExplFileDate}{2.5.8}{\ExplFileDescription}
\msg_new:nnn { ctex } { luatexja-loaded }
{
Package~`luatexja'~can~not~be~loaded~before~`ctex'.\\
@@ -168,20 +168,30 @@
\char_set_catcode_space:n { 32 }
\lua_now:e
{
- local func = lua.get_functions_table()
+ ctex = ctex or { }
+ local ctex = ctex
+ local functions = lua.get_functions_table()
+ local new_luafunction = luatexbase.new_luafunction
+ local create, set_lua = token.create, token.set_lua
+ local lua_cmds = {
+ lua_call = true ,
+ lua_expandable_call = true ,
+ }
+ local newluacmd = function (name, func, ...)
+ local tok = create(name)
+ local id = lua_cmds[tok.cmdname] and tok.index
+ local id = id or new_luafunction(name)
+ set_lua(name, id, ...)
+ functions[id] = func
+ end
+ ctex.newluacmd = newluacmd
local ltjfont = luatexja.jfont
local getattribute = tex.getattribute
- local set_lua = token.set_lua
+ local tex_set, sprint = tex.set, tex.sprint
local scan_int, scan_arg = token.scan_int, token.scan_argument
- local new_luafunction = luatexbase.new_luafunction
- local id = new_luafunction("ctex")
- func[id] = ltjfont.add_kyenc_list
- set_lua("ctex_ltj_add_kyenc:n", id, "global", "protected")
- local id = new_luafunction("ctex")
- func[id] = ltjfont.is_kenc
- set_lua("ctex_ltj_is_kenc:n", id, "global")
- local id = new_luafunction("ctex")
- func[id] = function ()
+ newluacmd("ctex_ltj_add_kyenc:n", ltjfont.add_kyenc_list, "global", "protected")
+ newluacmd("ctex_ltj_is_kenc:n", ltjfont.is_kenc, "global")
+ newluacmd("ctex_ltj_patch_external_font:n", function ()
local s = scan_arg()
local is_braced, is_quoted
if s:sub(1,1) == '{' and s:sub(-1)=='}' then
@@ -194,57 +204,37 @@
if is_braced then s = '{'..s..'}'
elseif is_quoted then s = '"'..s..'"'
end
- tex.sprint(-2, s)
- end
- set_lua("ctex_ltj_patch_external_font:n", id, "global")
- local id = new_luafunction("ctex")
- func[id] = function ()
+ sprint(-2, s)
+ end, "global")
+ newluacmd("ctex_ltj_use_jfont:", function ()
font.current(getattribute("ltj@curjfnt"))
- end
- set_lua("ctex_ltj_use_jfont:", id, "global", "protected")
- local id = new_luafunction("ctex")
- func[id] = function ()
+ end, "global", "protected")
+ newluacmd("ctex_ltj_set_alt_font:nnnn", function ()
local b = tonumber(scan_arg())
local e = tonumber(scan_arg())
local alt = scan_arg()
local base = scan_arg()
ltjfont.set_alt_font_latex(b, e, alt, base)
- end
- set_lua("ctex_ltj_set_alt_font:nnnn", id, "global", "protected")
- local id = new_luafunction("ctex")
- func[id] = function ()
+ end, "global", "protected")
+ newluacmd("ctex_ltj_clear_alt_font:n", function ()
local base = scan_arg()
ltjfont.clear_alt_font_latex(base)
- end
- set_lua("ctex_ltj_clear_alt_font:n", id, "global", "protected")
- local id = new_luafunction("ctex")
- func[id] = function ()
+ end, "global", "protected")
+ newluacmd("ctex_ltj_pickup_alt_font:nn", function ()
local base = scan_arg()
local size = scan_arg()
ltjfont.output_alt_font_cmd("y", base)
ltjfont.pickup_alt_font_a(size)
- end
- set_lua("ctex_ltj_pickup_alt_font:nn", id, "global", "protected")
- local id = new_luafunction("ctex")
- func[id] = function ()
+ end, "global", "protected")
+ newluacmd("__ctex_ltj_pickup_alt_font:Nn", function ()
local num = scan_int()
local base = scan_arg()
ltjfont.pickup_alt_font_b(num, base)
- end
- set_lua("__ctex_ltj_pickup_alt_font:Nn", id, "global", "protected")
- local id = new_luafunction("ctex")
- func[id] = \LuaTeXjaversion > 20200412.0
- and ltjfont.does_alt_set
- or function ()
- local base = scan_arg()
- ltjfont.does_alt_set(base)
- end
- set_lua("__ctex_ltj_if_alt_set:nT", id, "global")
- local id = new_luafunction("ctex")
- func[id] = function ()
- tex.set("globaldefs", 0)
- end
- set_lua("ctex_ltj_zero_globaldefs:", id, "global", "protected")
+ end, "global", "protected")
+ newluacmd("__ctex_ltj_if_alt_set:nT", ltjfont.does_alt_set, "global")
+ newluacmd("ctex_ltj_zero_globaldefs:", function ()
+ tex_set("globaldefs", 0)
+ end, "global", "protected")
}
\group_end:
\cs_new_protected:Npn \ctex_ltj_select_font:
@@ -262,7 +252,8 @@
\group_begin:
\tl_set_eq:NN \f@encoding \CJK@encoding
\tl_set_eq:NN \f@family \CJK@family
- \__ctex_ltj_push_fontname:n { \use:c { \curr@fontshape / \f@size } }
+ \cs_set_eq:NN \pickup@font \ctex_ltj_pickup_font:
+ \__ctex_ltj_push_fontname:n { \curr@fontshape / \f@size }
\ctex_ltj_pickup_font:
\group_end:
\font@name
@@ -273,12 +264,12 @@
\cs_new_protected:Npn \__ctex_ltj_push_fontname:n #1
{
\seq_gpush:No \g__ctex_ltj_fontname_seq { \font@name }
- \cs_gset_nopar:Npx \font@name {#1}
+ \tl_gset:Nx \font@name { \exp_not:c {#1} }
}
\cs_new_protected:Npn \__ctex_ltj_pop_fontname:
{
\seq_gpop:NNT \g__ctex_ltj_fontname_seq \l__ctex_ltj_tmp_tl
- { \cs_gset_eq:NN \font@name \l__ctex_ltj_tmp_tl }
+ { \tl_gset_eq:NN \font@name \l__ctex_ltj_tmp_tl }
}
\seq_new:N \g__ctex_ltj_fontname_seq
\cs_new_protected:Npn \ctex_ltj_pickup_font:
@@ -351,7 +342,7 @@
{
\group_begin:
\use:e { \exp_not:N \split@name #1 / \f@size } \@nil
- \__ctex_ltj_push_fontname:n { \use:c { \curr@fontshape / \f@size } }
+ \__ctex_ltj_push_fontname:n { \curr@fontshape / \f@size }
\ctex_ltj_pickup_font:
\group_end:
\__ctex_ltj_pop_fontname:
@@ -1247,17 +1238,14 @@
local fmt = luatexja.jfont.font_metric_table
local getattribute = tex.getattribute
local setdimen = tex.setdimen
- local func = lua.get_functions_table()
- local id = luatexbase.new_luafunction("ctex")
- func[id] = function ()
+ ctex.newluacmd("ctex_update_kanjisize:", function ()
local ft = fmt[getattribute("ltj@curjfnt")] or nulltable
local ft = ft and ft.char_type or nulltable
local fk = ft and ft[0] or nulltable
setdimen("cht", fk.height or 0)
setdimen("cdp", fk.depth or 0)
setdimen("cwd", fk.width or ft.zw or 0)
- end
- token.set_lua("ctex_update_kanjisize:", id, "global", "protected")
+ end, "global", "protected")
}
\group_end:
\ctex_add_to_selectfont:n { \ctex_update_kanjisize: }