diff options
Diffstat (limited to 'Master/texmf-dist/scripts/make4ht/mkutils.lua')
-rwxr-xr-x | Master/texmf-dist/scripts/make4ht/mkutils.lua | 47 |
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 |