diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/lwarp/lwarpmk.lua |
Initial commit
Diffstat (limited to 'macros/latex/contrib/lwarp/lwarpmk.lua')
-rwxr-xr-x | macros/latex/contrib/lwarp/lwarpmk.lua | 862 |
1 files changed, 862 insertions, 0 deletions
diff --git a/macros/latex/contrib/lwarp/lwarpmk.lua b/macros/latex/contrib/lwarp/lwarpmk.lua new file mode 100755 index 0000000000..3b4bb8564b --- /dev/null +++ b/macros/latex/contrib/lwarp/lwarpmk.lua @@ -0,0 +1,862 @@ +#!/usr/bin/env texlua + +-- Copyright 2016-2019 Brian Dunn + +printversion = "v0.73" +requiredconfversion = "2" -- also at *lwarpmk.conf + +function printhelp () +print ("lwarpmk: Use lwarpmk -h or lwarpmk --help for help.") ; +end + +function printusage () +-- +-- Print the usage of the lwarpmk command: +-- +print ( [[ + +lwarpmk print [-p project]: Compile the print version if necessary. +lwarpmk print1 [-p project]: Forced single compile of the print version. +lwarpmk printindex [-p project]: Process print indexes. +lwarpmk printglossary [-p project]: Process the glossary for the print version. +lwarpmk html [-p project]: Compile the HTML version if necessary. +lwarpmk html1 [-p project]: Forced single compile of the HTML version. +lwarpmk htmlindex [-p project]: Process HTML indexes. +lwarpmk htmlglossary [-p project]: Process the glossary for the html version. +lwarpmk again [-p project]: Touch the source code to trigger recompiles. +lwarpmk limages [-p project]: Process the "lateximages" created by lwarp.sty. +lwarpmk pdftohtml [-p project]: + For use with latexmk or a Makefile: + Converts project_html.pdf to project_html.html and individual HTML files. + Finishes the HTML conversion even if there was a compile error. +lwarpmk pdftosvg <list of file names>: Converts each PDF file to SVG. +lwarpmk epstopdf <list of file names>: Converts each EPS file to PDF. +lwarpmk clean [-p project]: Remove *.aux, *.toc, *.lof/t, + *.idx, *.ind, *.log, *_html_inc.*, .gl* +lwarpmk cleanall [-p project]: Remove auxiliary files, project.pdf, *.html +lwarpmk cleanlimages: Removes all images from the "lateximages" directory. +lwarpmk -h: Print this help message. +lwarpmk --help: Print this help message. + +]] ) +-- printconf () +end + +function splitfile (destfile,sourcefile) +-- +-- Split one large sourcefile into a number of files, +-- starting with destfile. +-- The file is split at each occurance of <!--|Start file|newfilename|* +-- +print ("lwarpmk: Splitting " .. sourcefile .. " into " .. destfile) ; +local sfile = io.open(sourcefile) +io.output(destfile) +for line in sfile:lines() do +i,j,copen,cstart,newfilename = string.find (line,"(.*)|(.*)|(.*)|") ; +if ( (i~= nil) and (copen == "<!--") and (cstart == "Start file")) then + -- split the file + io.output(newfilename) ; +else + -- not a splitpoint + io.write (line .. "\n") ; +end +end -- do +io.close(sfile) +end -- function + +function cvalueerror ( line, linenum , cvalue ) +-- +-- Incorrect value, so print an error and exit. +-- + print ("lwarpmk: ===") + print ("lwarpmk: " .. linenum .. " : " .. line ) ; + print ( + "lwarpmk: incorrect variable value \"" .. cvalue .. + "\" in lwarpmk.conf.\n" + ) ; + print ("lwarpmk: ===") +-- printconf () ; + os.exit(1) ; +end + +function printhowtorecompile () +-- Tells the user how to recompile to regenerate the configuration files. + print ("lwarpmk: The configuration files lwarpmk.conf and "..sourcename..".lwarpmkconf" ) + print ("lwarpmk: must be updated. To do so, recompile" ) + print ("lwarpmk: " , sourcename..".tex" ) + if ( printlatexcmd == "" ) then + print ("lwarpmk: using xe/lua/pdflatex," ) + else + print ("lwarpmk: using the command:") + print ("lwarpmk: " , printlatexcmd ) + end + print ("lwarpmk: then use lwarpmk again.") +end -- printhowtorecompile + +function ignoreconf () +-- Global argument index +argindex = 2 +end + +function loadconf () +-- +-- Load settings from the project's "lwarpmk.conf" file: +-- +-- Default configuration filename: +local conffile = "lwarpmk.conf" +local confroot = "lwarpmk" +-- Global argument index +argindex = 2 +-- Optional configuration filename: +if ( arg[argindex] == "-p" ) then + argindex = argindex + 1 + confroot = arg[argindex] + conffile = confroot..".lwarpmkconf" + argindex = argindex + 1 +end +-- Additional defaults: +confversion = "0" +opsystem = "Unix" +imagesdirectory = "lateximages" +imagesname = "image-" +latexmk = "false" +printlatexcmd = "" +HTMLlatexcmd = "" +printindexcmd = "" +HTMLindexcmd = "" +latexmkindexcmd = "" +-- to be removed: +-- indexprog = "makeindex" +-- makeindexstyle = "lwarp.ist" +-- xindylanguage = "english" +-- xindycodepage = "utf8" +-- xindystyle = "lwarp.xdy" +-- pdftotextenc = "UTF-8" +glossarycmd = "makeglossaries" +-- Verify the file exists: +if (lfs.attributes(conffile,"mode")==nil) then + -- file not exists + print ("lwarpmk: ===") + print ("lwarpmk: File \"" .. conffile .."\" does not exist.") + print ("lwarpmk: Move to the project's source directory,") + print ("lwarpmk: recompile using pdflatex, xelatex, or lualatex,") + print ("lwarpmk: then try using lwarpmk again.") + if ( arg[argindex] ~= nil ) then + print ( + "lwarpmk: (\"" .. confroot .. + "\" does not appear to be a project name.)" + ) + end + print ("lwarpmk: ===") + printhelp () ; + os.exit(1) -- exit the entire lwarpmk script +else -- file exists +-- Read the file: +print ("lwarpmk: Reading " .. conffile ..".") +local cfile = io.open(conffile) +-- Scan each line, parsing each line as: name = [[string]] +local linenum = 0 +for line in cfile:lines() do -- scan lines +linenum = linenum + 1 +i,j,cvarname,cvalue = string.find (line,"([%w-_]*)%s*=%s*%[%[([^%]]*)%]%]") ; +-- Error if incorrect enclosing characters: +if ( i == nil ) then + print ("lwarpmk: ===") + print ("lwarpmk: " .. linenum .. " : " .. line ) ; + print ("lwarpmk: Incorrect entry in " .. conffile ..".\n" ) ; + print ("lwarpmk: ===") +-- printconf () ; + os.exit(1) ; +end -- nil +if ( cvarname == "confversion" ) then + confversion = cvalue +elseif ( cvarname == "opsystem" ) then + -- Verify choice of opsystem: + if ( (cvalue == "Unix") or (cvalue == "Windows") ) then + opsystem = cvalue + else + cvalueerror ( line, linenum , cvalue ) + end +elseif ( cvarname == "sourcename" ) then sourcename = cvalue +elseif ( cvarname == "homehtmlfilename" ) then homehtmlfilename = cvalue +elseif ( cvarname == "htmlfilename" ) then htmlfilename = cvalue +elseif ( cvarname == "imagesdirectory" ) then imagesdirectory = cvalue +elseif ( cvarname == "imagesname" ) then imagesname = cvalue +elseif ( cvarname == "latexmk" ) then latexmk = cvalue +elseif ( cvarname == "printlatexcmd" ) then printlatexcmd = cvalue +elseif ( cvarname == "HTMLlatexcmd" ) then HTMLlatexcmd = cvalue +elseif ( cvarname == "printindexcmd" ) then printindexcmd = cvalue +elseif ( cvarname == "HTMLindexcmd" ) then HTMLindexcmd = cvalue +elseif ( cvarname == "latexmkindexcmd" ) then latexmkindexcmd = cvalue +elseif ( cvarname == "glossarycmd" ) then glossarycmd = cvalue +elseif ( cvarname == "pdftotextenc" ) then pdftotextenc = cvalue +else + print ("lwarpmk: ===") + print ("lwarpmk: " .. linenum .. " : " .. line ) ; + print ( + "lwarpmk: Incorrect variable name \"" .. cvarname .. "\" in " .. + conffile ..".\n" + ) ; + print ("lwarpmk: ===") +-- printconf () ; +os.exit(1) ; +end -- cvarname +end -- do scan lines +io.close(cfile) +end -- file exists +-- Error if sourcename is "lwarp". +-- This could happen if a local copy of lwarp has recently been recompiled. +if sourcename=="lwarp" then + print ("lwarpmk: ===") + print ("lwarpmk: lwarp.sty has recently been recompiled in this directory,") + print ("lwarpmk: and \"lwarpmk.conf\" is no longer set for your own project.") + print ("lwarpmk: Recompile your own project using pdf/lua/xelatex <projectname>.") + print ("lwarpmk: After a recompile, \"lwarpmk.conf\" will be set for your project,") + print ("lwarpmk: and you may again use lwarpmk.") + print ("lwarpmk: ===") + os.exit(1) +end -- sourcename of "lwarp" +-- Select some operating-system commands: +if opsystem=="Unix" then -- For Unix / Linux / Mac OS: + rmname = "rm" + mvname = "mv" + cpname = "cp" + touchnamepre = "touch" + touchnamepost = "" + newtouchname = "touch" + dirslash = "/" + opquote= "\'" + cmdgroupopenname = " ( " + cmdgroupclosename = " ) " + seqname = " && " + bgname = " &" +elseif opsystem=="Windows" then -- For Windows + rmname = "DEL" + mvname = "MOVE" + cpname = "COPY" + touchnamepre = "COPY /b" + touchnamepost = "+,," + newtouchname = "echo empty >" + dirslash = "\\" + opquote= "\"" + cmdgroupopenname = "" + cmdgroupclosename = "" + seqname = " & " + bgname = "" +else + print ("lwarpmk: ===") + print ("lwarpmk: Select Unix or Windows for opsystem." ) + print ("lwarpmk: ===") + os.exit(1) +end --- for Windows +-- Warning if the operating system does not appear to be correct, +-- in case files were transferred to another system. +if ( (package.config:sub(1,1)) ~= dirslash ) then + print ("lwarpmk: ===") + print ("lwarpmk: It appears that lwarpmk.conf is for a different operating system." ) + printhowtorecompile () + print ("lwarpmk: ===") + os.exit(1) +end +-- Error if the configuration file's version is not current: +if ( confversion ~= requiredconfversion ) then + print ("lwarpmk: ===") + printhowtorecompile () + print ("lwarpmk: ===") + os.exit(1) +end +end -- loadconf + +function executecheckerror ( executecommands , errormessage ) +-- +-- Execute an operating system call, +-- and maybe exit with an error message. +-- +local err +err = os.execute ( executecommands ) +if ( err ~= 0 ) then + print ("lwarpmk: ===") + print ("lwarpmk: " .. errormessage ) + print ("lwarpmk: ===") + os.exit(1) +end +end -- executecheckerror + +function refreshdate () +os.execute(touchnamepre .. " " .. sourcename .. ".tex " .. touchnamepost) +end + +function reruntoget (filesource) +-- +-- Scan the LaTeX log file for the phrase "Rerun to get", +-- indicating that the file should be compiled again. +-- Return true if found. +-- +local fsource = io.open(filesource) +for line in fsource:lines() do +if ( string.find(line,"Rerun to get") ~= nil ) then + io.close(fsource) + return true +end -- if +end -- do +io.close(fsource) +return false +end + +function onetime (latexcmd, fsuffix) +-- +-- Compile one time, return true if should compile again. +-- fsuffix is "" for print, "_html" for HTML output. +-- +print("lwarpmk: Compiling with: " .. latexcmd) +executecheckerror ( + latexcmd , + "Compile error." +) +return (reruntoget(sourcename .. fsuffix .. ".log") ) ; +end + +function manytimes (latexcmd, fsuffix) +-- +-- Compile up to five times. +-- fsuffix is "" for print, "_html" for HTML output +-- +if onetime(latexcmd, fsuffix) == true then +if onetime(latexcmd, fsuffix) == true then +if onetime(latexcmd, fsuffix) == true then +if onetime(latexcmd, fsuffix) == true then +if onetime(latexcmd, fsuffix) == true then +end end end end end +end + +function verifyfileexists (filename) +-- +-- Exit if the given file does not exist. +-- +if (lfs.attributes ( filename , "modification" ) == nil ) then + print ("lwarpmk: ===") + print ("lwarpmk: " .. filename .. " not found." ) ; + print ("lwarpmk: ===") + os.exit (1) ; +end +end + +function pdftohtml () +-- +-- Convert <project>_html.pdf into HTML files: +-- +-- Convert to text: +print ("lwarpmk: Converting " .. sourcename + .."_html.pdf to " .. sourcename .. "_html.html") +os.execute("pdftotext -enc " .. pdftotextenc .. " -nopgbrk -layout " + .. sourcename .. "_html.pdf " .. sourcename .. "_html.html") +-- Split the result into individual HTML files: +splitfile (homehtmlfilename .. ".html" , sourcename .. "_html.html") +end + +function removeaux () +-- +-- Remove auxiliary files: +-- All .aux files are removed since there may be many bbl*.aux files. +-- +os.execute ( rmname .. " *.aux " .. + sourcename ..".toc " .. sourcename .. "_html.toc " .. + sourcename ..".lof " .. sourcename .. "_html.lof " .. + sourcename ..".lot " .. sourcename .. "_html.lot " .. + " *.idx " .. + " *.ind " .. + sourcename ..".ps " .. sourcename .."_html.ps " .. + sourcename ..".log " .. sourcename .. "_html.log " .. + sourcename ..".gl* " .. sourcename .. "_html.gl* " .. + " *_html_inc.* " + ) +end + +function checkhtmlpdfexists () +-- +-- Error if the HTML document does not exist. +-- The lateximages are drawn from the HTML PDF version of the document, +-- so "lwarpmk html" must be done before "lwarpmk limages". +-- +local htmlpdffile = io.open(sourcename .. "_html.pdf", "r") +if ( htmlpdffile == nil ) then + print ("") + print ("lwarpmk: ===") + print ("lwarpmk: The HTML version of the document does not exist.") + print ("lwarpmk: Enter \"lwarpmk html\" to compile the HTML version.") + print ("lwarpmk: ===") + os.exit(1) +end +io.close (htmlpdffile) +end -- checkhtmlpdfexists + +function warnlimages () +-- +-- Warning of a missing <sourcename>-images.txt file: + print ("lwarpmk: ===") + print ("lwarpmk: \"" .. sourcename .. "-images.txt\" does not exist.") + print ("lwarpmk: Your project does not use SVG math or other lateximages,") + print ("lwarpmk: or the file has been deleted somehow.") + print ("lwarpmk: Use \"lwarpmk html1\" to recompile your project") + print ("lwarpmk: and recreate \"" .. sourcename .. "-images.txt\".") + print ("lwarpmk: If your project does not use SVG math or other lateximages,") + print ("lwarpmk: then \"" .. sourcename .. "-images.txt\" will never exist, and") + print ("lwarpmk: \"lwarpmk limages\" will not be necessary.") + print ("lwarpmk: ===") +end -- warnlimages + +function warnlimagesrecompile () +-- Warning if must recompile before creating limages: + print ("") + print ("lwarpmk: ===") + print ("lwarpmk: Cross-references are not yet correct.") + print ("lwarpmk: The document must be recompiled before creating the lateximages.") + print ("lwarpmk: Enter \"lwarpmk html1\" again, then try \"lwarpmk limages\" again.") + print ("lwarpmk: ===") +end --warnlimagesrecompile + +function checklimages () +-- +-- Check <sourcename>.txt to see if need to recompile first. +-- If any entry has a page number of zero, then there were incorrect images. +-- +print ("lwarpmk: Checking for a valid " .. sourcename .. "-images.txt file.") +local limagesfile = io.open(sourcename .. "-images.txt", "r") +if ( limagesfile == nil ) then + warnlimages () + os.exit(1) +end +-- Track warning to recompile if find a page 0 +local pagezerowarning = false +-- Scan <sourcename>.txt +for line in limagesfile:lines() do + -- lwimgpage is the page number in the PDF which has the image + -- lwimghash is true if this filename is a hash + -- lwimgname is the lateximage filename root to assign for the image + i,j,lwimgpage,lwimghash,lwimgname = string.find (line,"|(.*)|(.*)|(.*)|") + -- For each entry: + if ( (i~=nil) ) then + -- If the page number is 0, image references are incorrect + -- and must recompile the soure document: + if ( lwimgpage == "0" ) then + pagezerowarning = true + end + end -- if i~=nil +end -- do +-- The last line should be |end|end|end|. +-- If not, the compile must have aborted, and the images are incomplete. +if ( lwimgpage ~= "end" ) then + warnlimagesrecompile() + os.exit(1) ; +end +if ( pagezerowarning ) then + warnlimagesrecompile() + os.exit(1) ; +end -- pagezerowarning +end -- checklimages + +function createuniximage ( lwimgfullname ) +-- +-- Create one lateximage for Unix / Linux / Mac OS. +-- +executecheckerror ( + cmdgroupopenname .. + "pdfseparate -f " .. lwimgpage .. " -l " .. lwimgpage .. " " .. + sourcename .."_html.pdf " .. + imagesdirectory .. dirslash .."lateximagetemp-%d" .. ".pdf" .. + seqname .. + -- Crop the image: + "pdfcrop --hires " .. imagesdirectory .. dirslash .. "lateximagetemp-" .. + lwimgpage .. ".pdf " .. + imagesdirectory .. dirslash .. lwimgname .. ".pdf" .. + seqname .. + -- Convert the image to svg: + "pdftocairo -svg -noshrink " .. imagesdirectory .. dirslash .. lwimgname .. ".pdf " .. + imagesdirectory .. dirslash .. lwimgname ..".svg" .. + seqname .. + -- Remove the temporary files: + rmname .. " " .. imagesdirectory .. dirslash .. lwimgname .. ".pdf" .. seqname .. + rmname .. " " .. imagesdirectory .. dirslash .. "lateximagetemp-" .. lwimgpage .. ".pdf" .. + cmdgroupclosename .. " >/dev/null " .. bgname + , + "File error trying to convert " .. lwimgfullname +) +-- Every 32 images, wait for completion at below normal priority, +-- allowing other image tasks to catch up. +numimageprocesses = numimageprocesses + 1 +if ( numimageprocesses > 32 ) then + numimageprocesses = 0 + print ( "lwarpmk: waiting" ) + executecheckerror ( "wait" , "File error trying to wait.") +end +end -- createuniximage + +function createwindowsimage ( lwimgfullname ) +-- +-- Create one lateximage for Windows. +-- +-- Every 32 images, wait for completion at below normal priority, +-- allowing other image tasks to catch up. +numimageprocesses = numimageprocesses + 1 +if ( numimageprocesses > 32 ) then + numimageprocesses = 0 + thiswaitcommand = "/WAIT /BELOWNORMAL" + print ( "lwarpmk: waiting" ) +else + thiswaitcommand = "" +end +-- Execute the image generation command +executecheckerror ( + "start /B " .. thiswaitcommand .. " \"\" lwarp_one_limage " .. + lwimgpage .. " " .. + lwimghash .. " " .. + lwimgname .. " " .. + sourcename .. " <nul >nul" + , + "File error trying to create image." +) +end -- createwindowsimage + +function createonelateximage ( line ) +-- +-- Given the next line of <sourcename>.txt, convert a single image. +-- +-- lwimgpage is the page number in the PDF which has the image +-- lwimghash is true if this filename is a hash +-- lwimgname is the lateximage filename root to assign for the image +i,j,lwimgpage,lwimghash,lwimgname = string.find (line,"|(.*)|(.*)|(.*)|") +-- For each entry: +if ( (i~=nil) ) then + -- Skip if the page number is 0: + if ( lwimgpage == "0" ) then + pagezerowarning = true + -- Skip if the page number is "end": + else if ( lwimgpage == "end" ) then + else + -- Skip is this image is hashed and already exists: + local lwimgfullname = imagesdirectory .. dirslash .. lwimgname .. ".svg" + if ( + (lwimghash ~= "true") or + (lfs.attributes(lwimgfullname,"mode")==nil) -- file not exists + ) + then -- not hashed or not exists: + -- Print the name of the file being generated: + print ( "lwarpmk: " .. lwimgname ) + -- Touch/create the dest so that only once instance tries to build it: + executecheckerror ( + newtouchname .. " " .. lwimgfullname , + "File error trying to touch " .. lwimgfullname + ) + -- Separate out the image into its own single-page pdf: + if opsystem=="Unix" then + createuniximage (lwimgfullname) + elseif opsystem=="Windows" then + createwindowsimage (lwimgfullname) + end + end -- not hashed or not exists + end -- not page "end" + end -- not page 0 +end -- not nil +end -- createonelateximage + +function createlateximages () +-- +-- Create lateximages based on <sourcename>-images.txt: +-- +-- See if the document must be recompiled first: +checklimages () +-- See if the HTML version exists: +checkhtmlpdfexists () +-- Attempt to create the lateximages: +print ("lwarpmk: Creating lateximages.") +local limagesfile = io.open(sourcename .. "-images.txt", "r") +if ( limagesfile == nil ) then + warnlimages () + os.exit(1) +end +-- Create the lateximages directory, ignore error if already exists +err = os.execute("mkdir " .. imagesdirectory) +-- For Windows, create lwarp_one_limage.cmd from lwarp_one_limage.txt: +if opsystem=="Windows" then + executecheckerror ( + cpname .. " lwarp_one_limage.txt lwarp_one_limage.cmd" , + "File error trying to copy lwarp_one_limage.txt to lwarp_one_limage.cmd" + ) +end -- create lwarp_one_limage.cmd +-- Track the number of parallel processes +numimageprocesses = 0 +-- Track warning to recompile if find a page 0 +pagezerowarning = false +-- Scan <sourcename>.txt +for line in limagesfile:lines() do + createonelateximage ( line ) +end -- do +io.close(limagesfile) +print ( "lwarpmk limages: ===") +print ( "lwarpmk limages: Wait a moment for the images to complete" ) +print ( "lwarpmk limages: before reloading the page." ) +print ( "lwarpmk limages: ===") +print ( "lwarpmk limages: Done." ) +if ( pagezerowarning == true ) then + print ( "lwarpmk limages: WARNING: Images will be incorrect." ) + print ( "lwarpmk limages: Enter \"lwarpmk cleanlimages\", then" ) + print ( "lwarpmk limages: recompile the document one more time, then" ) + print ( "lwarpmk limages: repeat \"lwarpmk images\" again." ) +end -- pagezerowarning +end -- function + +function convertepstopdf () +-- +-- Converts EPS files to PDF files. +-- The filenames are arg[argindex] and up. +-- arg[1] is the command "pdftosvg". +-- +ignoreconf () +for i = argindex , #arg do + if (lfs.attributes(arg[i],"mode")==nil) then + print ("lwarpmk: File \"" .. arg[i] .. "\" does not exist.") + else + print ("lwarpmk: Converting \"" .. arg[i] .. "\"") + os.execute ( "epstopdf " .. arg[i] ) + end -- if +end -- do +end --function + +function convertpdftosvg () +-- +-- Converts PDF files to SVG files. +-- The filenames are arg[argindex] and up. +-- arg[1] is the command "pdftosvg". +-- +ignoreconf () +for i = argindex , #arg do + if (lfs.attributes(arg[i],"mode")==nil) then + print ("lwarpmk: File \"" .. arg[i] .. "\" does not exist.") + else + print ("lwarpmk: Converting \"" .. arg[i] .. "\"") + os.execute ( "pdftocairo -svg " .. arg[i] ) + end -- if +end -- do +end --function + +-- Force an update and conclude processing: +function updateanddone () +print ("lwarpmk: Forcing an update of " .. sourcename ..".tex.") +refreshdate () +print ("lwarpmk: " .. sourcename ..".tex is ready to be recompiled.") +print ("lwarpmk: Done.") +end -- function + +-- Start of the main code: -- + +-- lwarpmk --version : + +if (arg[1] == "--version") then +print ( "lwarpmk: " .. printversion ) + +else -- not --version + +-- print intro: + +print ("lwarpmk: " .. printversion .. " Automated make for the LaTeX lwarp package.") + +-- lwarpmk print: + +if arg[1] == "print" then +loadconf () +if ( latexmk == "true" ) then + print ("lwarpmk: Compiling with: " .. printlatexcmd) + executecheckerror ( + printlatexcmd , + "Compile error." + ) + print ("lwarpmk: Done.") +else -- not latexmk + verifyfileexists (sourcename .. ".tex") ; + -- See if up to date: + if ( + ( lfs.attributes ( sourcename .. ".pdf" , "modification" ) == nil ) or + ( + lfs.attributes ( sourcename .. ".tex" , "modification" ) > + lfs.attributes ( sourcename .. ".pdf" , "modification" ) + ) + ) then + -- Recompile if not yet up to date: + manytimes(printlatexcmd, "") + print ("lwarpmk: Done.") ; + else + print ("lwarpmk: " .. sourcename .. ".pdf is up to date.") ; + end +end -- not latexmk + +-- lwarpmk print1: + +elseif arg[1] == "print1" then + loadconf () + verifyfileexists (sourcename .. ".tex") ; + onetime(printlatexcmd, "") + print ("lwarpmk: Done.") ; + +-- lwarpmk printindex: +-- Compile the index then touch the source +-- to trigger a recompile of the document: + +elseif arg[1] == "printindex" then +loadconf () +os.execute ( printindexcmd ) +print ("lwarpmk: -------") +updateanddone () + +-- lwarpmk printglossary: +-- Compile the glossary then touch the source +-- to trigger a recompile of the document: + +elseif arg[1] == "printglossary" then +loadconf () +print ("lwarpmk: Processing the glossary.") + +os.execute(glossarycmd .. " " .. sourcename) +updateanddone () + +-- lwarpmk html: + +elseif arg[1] == "html" then +loadconf () +if ( latexmk == "true" ) then + print ("lwarpmk: Compiling with: " .. HTMLlatexcmd) + executecheckerror ( + HTMLlatexcmd , + "Compile error." + ) + pdftohtml () + print ("lwarpmk: Done.") +else -- not latexmk + verifyfileexists ( sourcename .. ".tex" ) ; + -- See if exists and is up to date: + if ( + ( lfs.attributes ( homehtmlfilename .. ".html" , "modification" ) == nil ) or + ( + lfs.attributes ( sourcename .. ".tex" , "modification" ) > + lfs.attributes ( homehtmlfilename .. ".html" , "modification" ) + ) + ) then + -- Recompile if not yet up to date: + manytimes(HTMLlatexcmd, "_html") + pdftohtml () + print ("lwarpmk: Done.") + else + print ("lwarpmk: " .. homehtmlfilename .. ".html is up to date.") + end +end -- not latexmk + +-- lwarpmk html1: + +elseif arg[1] == "html1" then + loadconf () + verifyfileexists ( sourcename .. ".tex" ) ; + onetime(HTMLlatexcmd, "_html") + pdftohtml () + print ("lwarpmk: Done.") + +-- lwarpmk pdftohtml: +elseif arg[1] == "pdftohtml" then + loadconf () + pdftohtml () + +-- lwarpmk htmlindex: +-- Compile the index then touch the source +-- to trigger a recompile of the document: + +elseif arg[1] == "htmlindex" then +loadconf () +os.execute ( HTMLindexcmd ) +print ("lwarpmk: -------") +updateanddone () + +-- lwarpmk htmlglossary: +-- Compile the glossary then touch the source +-- to trigger a recompile of the document. +-- The <sourcename>.xdy file is created by the glossaries package. + +elseif arg[1] == "htmlglossary" then +loadconf () +print ("lwarpmk: Processing the glossary.") +os.execute(glossarycmd .. " " .. sourcename .. "_html") +updateanddone () + +-- lwarpmk limages: +-- Scan the <sourcename>.txt file to create lateximages. + +elseif arg[1] == "limages" then +loadconf () +print ("lwarpmk: Processing images.") +createlateximages () +print ("lwarpmk: Done.") + +-- lwarpmk again: +-- Touch the source to trigger a recompile. + +elseif arg[1] == "again" then +loadconf () +updateanddone () + +-- lwarpmk clean: +-- Remove project.aux, .toc, .lof, .lot, .log, *.idx, *.ind, *_html_inc.*, .gl* + +elseif arg[1] == "clean" then +loadconf () +removeaux () +print ("lwarpmk: Done.") + +-- lwarpmk cleanall +-- Remove project.aux, .toc, .lof, .lot, .log, *.idx, *.ind, *_html_inc.*, .gl* +-- and also project.pdf, project.dvi, *.html + +elseif arg[1] == "cleanall" then +loadconf () +removeaux () +os.execute ( rmname .. " " .. + sourcename .. ".pdf " .. sourcename .. "_html.pdf " .. + sourcename .. ".dvi " .. sourcename .. "_html.dvi " .. + "*.html" + ) +print ("lwarpmk: Done.") + +-- lwarpmk cleanlimages +-- Remove images from the imagesdirectory. + +elseif arg[1] == "cleanlimages" then +loadconf () +os.execute ( rmname .. " " .. imagesdirectory .. dirslash .. "*" ) +print ("lwarpmk: Done.") + +-- lwarpmk epstopdf <list of file names> +-- Convert EPS files to PDF using epstopdf +elseif arg[1] == "epstopdf" then +convertepstopdf () +print ("lwarpmk: Done.") + +-- lwarpmk pdftosvg <list of file names> +-- Convert PDF files to SVG using pdftocairo +elseif arg[1] == "pdftosvg" then +convertpdftosvg () +print ("lwarpmk: Done.") + +-- lwarpmk with no argument : + +elseif (arg[1] == nil) then +printhelp () + +-- lwarpmk -h or lwarpmk --help : + +elseif (arg[1] == "-h" ) or (arg[1] == "--help") then +printusage () + +-- Unknown command: + +else +printhelp () +print ("\nlwarpmk: ****** Unknown command \""..arg[1].."\". ******\n") +end + +end -- not --version |