
| Current Path : /bin/X11/ |
Linux ift1.ift-informatik.de 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64 |
| Current File : //bin/X11/lwarpmk |
#!/usr/bin/env texlua
-- Copyright 2016-2020 Brian Dunn
printversion = "v0.79"
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*,
*_html.pdf, *_html.html, *_html.sidetoc
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 splitfilename ( pathandfilename )
--
-- Separates out the path and extension from a filename.
-- Returns path, filename with extension, and extension.
-- Ex: thispath, thisfilename, thisextension = splitfilename ("path/to/filename.ext")
--
-- https://www.fhug.org.uk/wiki/wiki/doku.php?id=plugins:code_snippets:
-- split_filename_in_to_path_filename_and_extension
--
if lfs.attributes(pathandfilename,"mode") == "directory" then
local strPath = pathandfilename:gsub("[\\/]$","") -- $ (syntax highlighting)
return strPath.."\\","",""
end
pathandfilename = pathandfilename.."."
return pathandfilename:match("^(.-)([^\\/]-)%.([^\\/%.]-)%.?$")
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.
-- Also removes sourcename_html.pdf, sourcename_html.html,
-- and sourcename_html.sidetoc.
--
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* " ..
sourcename .. "_html.pdf " ..
sourcename .. "_html.html " ..
sourcename .. "_html.sidetoc " ..
" *_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 "epstopdf".
--
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] .. "\"")
thispath, thisfilename, thisextension = splitfilename(arg[i])
if ( thispath == nil ) then
os.execute ( "epstopdf " .. arg[i] )
else
os.execute (
"epstopdf " ..
thispath .. thisfilename .. "." .. thisextension .. " " ..
thispath .. thisfilename .. ".pdf"
)
end
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] .. "\"")
thispath, thisfilename, thisextension = splitfilename(arg[i])
if ( thispath == nil ) then
os.execute ( "pdftocairo -svg " .. arg[i] )
else
os.execute (
"pdftocairo -svg " ..
thispath .. thisfilename .. "." .. thisextension .. " " ..
thispath .. thisfilename .. ".svg"
)
end
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