On 23 Feb 2024, at 13:32, Pablo Rodriguez via ntg-context
wrote: Dear list,
I have the following sample file:
\starttext whatever
\startluacode luatex.wrapup( function() local t = {} local pdf_file_name = tex.jobname..".pdf" local sha_pdf = utilities.sha2.hash256(io.loaddata(pdf_file_name)) local c_r = environment.currentrun t[c_r] = sha_pdf local exists_pdf = ("%s_%s-%s.pdf"):format(c_r-1, tex.jobname, t[c_r-1]) if io.exists(exists_pdf) then os.remove(exists_pdf) end os.rename(pdf_file_name, ("%s_%s-%s.pdf"):format(c_r, tex.jobname, sha_pdf)) end ) \stopluacode \stoptext
In short, it adds its SHA256 to the final filename.
Since renames the PDF document in each run, I would like to remove the output from the previous run.
The table seems not to store the value from a previous run.
I see now that I am creating it again with each run.
Is there any way to check if compilation needs any other run?
Many thanks for your help,
Rather than use the wrapup() hook can why not rename the file using a second job on the command line? So your compile command might look like: $ context jobname.tex add_sha.tex Jobname.tex is your main file and generates jobname.pdf as its output, while add_sha.tex contains the rename logic: \starttext \startluacode local pdf_file_name = "jobname.pdf" local sha_pdf = utilities.sha2.hash256(io.loaddata(pdf_file_name)) os.rename(pdf_file_name, ("%s-%s.pdf"):format(pdf_file_name, sha_pdf)) \stopluacode Done \stoptext — Bruce Horrocks Hampshire, UK