Better toks code
This commit is contained in:
parent
f12fa8a2e6
commit
f7a76b69d8
@ -37,12 +37,12 @@ local function tex_variable(value, scanner, name, default)
|
|||||||
end
|
end
|
||||||
|
|
||||||
local real_pdf_variables, pdf_variable_names = {}, {'pageresources'}
|
local real_pdf_variables, pdf_variable_names = {}, {'pageresources'}
|
||||||
local pdf_toks = {}
|
local pdf_toks_map = {}
|
||||||
local pdf_variables = setmetatable(pdf.variable, {
|
local pdf_variables = setmetatable(pdf.variable, {
|
||||||
__index = function(_, k)
|
__index = function(_, k)
|
||||||
local v = real_pdf_variables[k]
|
local v = real_pdf_variables[k]
|
||||||
if v then return v end
|
if v then return v end
|
||||||
v = pdf_toks[k]
|
v = pdf_toks_map[k]
|
||||||
if v then
|
if v then
|
||||||
return tex.toks[v]
|
return tex.toks[v]
|
||||||
end
|
end
|
||||||
@ -51,7 +51,7 @@ local pdf_variables = setmetatable(pdf.variable, {
|
|||||||
if real_pdf_variables[k] then
|
if real_pdf_variables[k] then
|
||||||
return set_local(real_pdf_variables, k, v)
|
return set_local(real_pdf_variables, k, v)
|
||||||
end
|
end
|
||||||
local toks = pdf_toks[k]
|
local toks = pdf_toks_map[k]
|
||||||
if toks then
|
if toks then
|
||||||
tex.toks[toks] = v
|
tex.toks[toks] = v
|
||||||
end
|
end
|
||||||
@ -59,6 +59,35 @@ local pdf_variables = setmetatable(pdf.variable, {
|
|||||||
})
|
})
|
||||||
pdf.variable_names = pdf_variable_names
|
pdf.variable_names = pdf_variable_names
|
||||||
|
|
||||||
|
local pdf_toks
|
||||||
|
if status.ini_version then
|
||||||
|
local pdf_toks_list = {}
|
||||||
|
function pdf_toks(name, default)
|
||||||
|
pdf_variable_names[#pdf_variable_names+1] = name
|
||||||
|
pdf_toks_list[#pdf_toks_list+1] = {name, default}
|
||||||
|
end
|
||||||
|
function initialize_pdf_toks()
|
||||||
|
for i=1,#pdf_toks_list do
|
||||||
|
local entry = pdf_toks_list[i]
|
||||||
|
local csname = 'pdfvariable ' .. entry[1]
|
||||||
|
token.set_char(csname, 0) -- Ensure that csname exists
|
||||||
|
local t = token.create(csname)
|
||||||
|
tex.runtoks(function()
|
||||||
|
token.put_next(token.create'newtoks', t)
|
||||||
|
end)
|
||||||
|
pdf_toks_map[entry[1]] = t.index
|
||||||
|
tex.toks[t.index] = entry[2]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
else
|
||||||
|
function pdf_toks(name, default)
|
||||||
|
pdf_variable_names[#pdf_variable_names+1] = name
|
||||||
|
local t = token.create('pdfvariable ' .. name)
|
||||||
|
pdf_toks_map[name] = t.index
|
||||||
|
tex.toks[t.index] = default
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
local function pdf_variable(value, scanner, name, default)
|
local function pdf_variable(value, scanner, name, default)
|
||||||
pdf_variable_names[#pdf_variable_names+1] = name
|
pdf_variable_names[#pdf_variable_names+1] = name
|
||||||
token.luacmd('pdfvariable ' .. name, function(_, scanning)
|
token.luacmd('pdfvariable ' .. name, function(_, scanning)
|
||||||
@ -89,6 +118,8 @@ pdf_variable(count_code, token.scan_int, 'minorversion', 7)
|
|||||||
pdf_variable(count_code, token.scan_int, 'compresslevel', 0)
|
pdf_variable(count_code, token.scan_int, 'compresslevel', 0)
|
||||||
pdf_variable(count_code, token.scan_int, 'objcompresslevel', 0) -- 0 is actually the only supported value right now, so this is basically ignored
|
pdf_variable(count_code, token.scan_int, 'objcompresslevel', 0) -- 0 is actually the only supported value right now, so this is basically ignored
|
||||||
|
|
||||||
|
pdf_toks('pageresources', '')
|
||||||
|
|
||||||
function tex.getbodydir() return tex.bodydirection end
|
function tex.getbodydir() return tex.bodydirection end
|
||||||
function tex.getpagedir() return tex.pagedirection end
|
function tex.getpagedir() return tex.pagedirection end
|
||||||
function tex.setbodydir(i) tex.bodydirection = i end
|
function tex.setbodydir(i) tex.bodydirection = i end
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
\directlua{unhook_expl()}
|
\directlua{unhook_expl()}
|
||||||
% See baseregisters for list of toks pdfvariables
|
% See baseregisters for list of toks pdfvariables
|
||||||
\expandafter\newtoks\csname pdfvariable \space pageresources\endcsname
|
\directlua{initialize_pdf_toks()}
|
||||||
\ifx\@tfor\undefined
|
\ifx\@tfor\undefined
|
||||||
\def\@tfor#1\do#2{}
|
\def\@tfor#1\do#2{}
|
||||||
\fi
|
\fi
|
||||||
|
@ -17,5 +17,5 @@
|
|||||||
\endgroup
|
\endgroup
|
||||||
\input load-unicode-data.tex
|
\input load-unicode-data.tex
|
||||||
\input etex.src
|
\input etex.src
|
||||||
\expandafter\newtoks\csname pdfvariable \space pageresources\endcsname
|
\directlua{initialize_pdf_toks()}
|
||||||
\dump
|
\dump
|
||||||
|
Loading…
Reference in New Issue
Block a user