summaryrefslogtreecommitdiff
path: root/support/make4ht/extensions/make4ht-ext-latexmk_build.lua
diff options
context:
space:
mode:
Diffstat (limited to 'support/make4ht/extensions/make4ht-ext-latexmk_build.lua')
-rw-r--r--support/make4ht/extensions/make4ht-ext-latexmk_build.lua38
1 files changed, 38 insertions, 0 deletions
diff --git a/support/make4ht/extensions/make4ht-ext-latexmk_build.lua b/support/make4ht/extensions/make4ht-ext-latexmk_build.lua
index bf4dcdde5a..b9ed94b0dc 100644
--- a/support/make4ht/extensions/make4ht-ext-latexmk_build.lua
+++ b/support/make4ht/extensions/make4ht-ext-latexmk_build.lua
@@ -12,8 +12,31 @@ function M.modify_build(make)
first = pos
end
end
+ -- we need to save contents of the .tmp file, to prevent extra executions from latexmk
+ -- tex4ht command overwrites content that was set by LaTeX with it's own stuff
+ local tmp_file
+ make:add("save_tmp", function(par)
+ local f = io.open(par.input .. ".tmp", "r")
+ if f then
+ tmp_file = f:read("*all")
+ f:close()
+ end
+ return 0
+ end)
+ make:add("load_tmp", function(par)
+ if tmp_file then
+ local f = io.open(par.input .. ".tmp", "w")
+ if f then
+ f:write(tmp_file)
+ end
+ end
+ return 0
+ end)
-- if htlatex was found
if first then
+ -- handle tmp file
+ make:load_tmp {}
+ make:save_tmp {}
-- add dummy latexmk call to the build sequence
make:latexmk {}
-- replace name, command and type in the first htlatex
@@ -26,6 +49,21 @@ function M.modify_build(make)
-- remove the dummy latexmk
table.remove(build_seq)
end
+ -- remove htlatex calls from the build sequence, they are unnecessary
+ local new_build_seq = {}
+ for pos, v in ipairs(build_seq) do
+ if v.name ~= "htlatex" and v.name ~= "tex4ht" then
+ table.insert(new_build_seq, v)
+ elseif v.name == "tex4ht" then
+ -- insert save_tmp before tex4ht
+ table.insert(new_build_seq, build_seq[#build_seq])
+ -- remove save_tmp from the end
+ table.remove(build_seq)
+ -- and now insert tex4ht
+ table.insert(new_build_seq, v)
+ end
+ end
+ make.build_seq = new_build_seq
return make
end
return M