Hi Nasser > > Unfortunately, I had to remove this build file after trying > it on my actual large latex file. > > This is what happened. After waiting for almost 30 hrs, and counted > tex4ht calling dvilualatex 10 times ! I decided it went into > an infinite loop for some reason. It takes 2-2.5 hrs for one > call.
You are right, I had two bugs in the script! First is that the compilation_count variable wasn't updated, so it is always 1, second is that it compiles one time more than necessary even when I fixed that issue. Try this version: ----------------------------- local htlatex = require "make4ht-htlatex" local function get_checksum(main_file, extensions) -- make checksum for temporary files local checksum = "" local extensions = extensions or {"aux", "4tc", "xref"} for _, ext in ipairs(extensions) do local f = io.open(main_file .. "." .. ext, "r") if f then local content = f:read("*all") f:close() -- make checksum of the file and previous checksum -- this way, we will detect change in any file checksum = md5.sumhexa(checksum .. content) end end return checksum end Make:add("myhtlatex", function(par) -- get checksum of temp files before compilation local checksum = get_checksum(par.input) local status = htlatex.htlatex(par) -- stop processing on error if status ~= 0 then return status end -- get checksum after compilation local newchecksum = get_checksum(par.input) -- this is needed to prevent possible infinite loops local compilation_count = 1 local max_compilations = 3 -- <- change as you want while checksum ~= newchecksum do -- if compilation_count => max_compilations then return status end status = htlatex.htlatex(par) -- stop processing on error if status ~= 0 then return status end checksum = newchecksum -- get checksum after compilation newchecksum = get_checksum(par.input) compilation_count = compilation_count + 1 end return status end) Make:myhtlatex {} ------------ Best regards, Michal