summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/scripts/make4ht/mkutils.lua
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/scripts/make4ht/mkutils.lua')
-rwxr-xr-xMaster/texmf-dist/scripts/make4ht/mkutils.lua47
1 files changed, 38 insertions, 9 deletions
diff --git a/Master/texmf-dist/scripts/make4ht/mkutils.lua b/Master/texmf-dist/scripts/make4ht/mkutils.lua
index 63924eeb50e..fd32c91e087 100755
--- a/Master/texmf-dist/scripts/make4ht/mkutils.lua
+++ b/Master/texmf-dist/scripts/make4ht/mkutils.lua
@@ -372,7 +372,7 @@ env.Make:add("latexmk", function(par)
par.expanded = command % par
-- quotes in latex_command must be escaped, they cause Latexmk error
par.expanded = par.expanded:gsub('"', '\\"')
- local newcommand = 'latexmk -latex="${expanded}" ${tex_file}' % par
+ local newcommand = 'latexmk -latex="${expanded}" -dvi ${tex_file}' % par
os.execute(newcommand)
return Make.testlogfile(par)
end, {correct_exit= 0})
@@ -396,6 +396,10 @@ end
function load_config(settings, config_name)
local settings = settings or main_settings
+ -- the extensions requested from the command line should take precedence over
+ -- extensions enabled in the config file
+ local saved_extensions = settings.extensions
+ settings.extensions = {}
env.settings = settings
env.mode = settings.mode
if config_name and not file_exists(config_name) then
@@ -411,9 +415,28 @@ function load_config(settings, config_name)
local fn, msg = run(code,env)
if not fn then print(msg) end
assert(fn)
+ -- reload extensions from command line arguments for the "format" parameter
+ for _,v in ipairs(saved_extensions) do
+ table.insert(settings.extensions, v)
+ end
return env
end
+env.Make:add("xindy", function(par)
+ -- par.encoding = par.encoding or "utf8"
+ -- par.language = par.language or "english"
+ par.idxfile = par.idxfile or par.input .. ".idx"
+ local modules = par.modules or {par.input}
+ local t = {}
+ for k,v in ipairs(modules) do
+ t[#t+1] = "-M ".. v
+ end
+ par.moduleopt = table.concat(t, " ")
+ local xindy_call = "xindy -L ${language} -C ${encoding} ${moduleopt} ${idxfile}" % par
+ print(xindy_call)
+ return os.execute(xindy_call)
+end, { language = "english", encoding = "utf8"})
+
local function find_lua_file(name)
local extension_path = name:gsub("%.", "/") .. ".lua"
return kpse.find_file(extension_path, "lua")
@@ -495,19 +518,25 @@ function load_extensions(extensions, format)
-- diable the extension
for _, v in ipairs(extensions) do
local enable = v.type == "+" and true or nil
+ -- load extenisons in a correct order
-- don't load extensions multiple times
- if not module_names[v.name] then
- module_names[v.name] = enable
- -- load extenisons in a correct order
+ if enable and not module_names[v.name] then
table.insert(extension_sequence, v.name)
end
+ -- the last extension request can disable it
+ module_names[v.name] = enable
end
for _, name in ipairs(extension_sequence) do
- local extension = load_extension(name,format)
- if extension then
- table.insert(extension_table, extension)
- else
- print("Cannot load extension: ".. name)
+ -- the extension can be inserted into the extension_sequence, but disabled
+ -- later.
+ if module_names[name] == true then
+ local extension = load_extension(name,format)
+ if extension then
+ print("Load extension", name)
+ table.insert(extension_table, extension)
+ else
+ print("Cannot load extension: ".. name)
+ end
end
end
return extension_table