summaryrefslogtreecommitdiff
path: root/support/make4ht/make4ht
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /support/make4ht/make4ht
Initial commit
Diffstat (limited to 'support/make4ht/make4ht')
-rwxr-xr-xsupport/make4ht/make4ht110
1 files changed, 110 insertions, 0 deletions
diff --git a/support/make4ht/make4ht b/support/make4ht/make4ht
new file mode 100755
index 0000000000..564bc6e7a0
--- /dev/null
+++ b/support/make4ht/make4ht
@@ -0,0 +1,110 @@
+#!/usr/bin/env texlua
+-- Package make4ht. Author Michal Hoftich <michal.h21@gmail.com>
+-- This package is subject of LPPL license, version 1.3
+kpse.set_program_name("luatex")
+
+
+
+local make4ht = require("make4ht-lib")
+local lapp = require("lapp-mk4")
+local mkutils = require("mkutils")
+local mkparams = require("mkparams")
+local mk_config = require("make4ht-config")
+-- args string is here just as sample, we dont pass it it to
+-- mkparams.get_args() so default args string is used
+local args = [[
+make4ht - build system for tex4ht
+Usage:
+make4ht [options] filename ["tex4ht.sty op." "tex4ht op." "t4ht op" "latex op"]
+-c,--config (default xhtml) Custom config file
+-d,--output-dir (default nil) Output directory
+-l,--lua Use lualatex for document compilation
+-s,--shell-escape Enables running external programs from LaTeX
+-u,--utf8 For output documents in utf8 encoding
+-x,--xetex Use xelatex for document compilation
+<filename> (string) Input file name
+]]
+
+-- set version number. the template should be replaced by the
+-- actual version number by the build script
+local version = "v0.2g"
+mkparams.version_number = version
+
+local args = mkparams.get_args()
+
+local parameters = mkparams.process_args(args)
+
+local mode = parameters.mode
+local build_file = parameters.build_file
+
+-- handle output formats
+local allowed_output_formats = {xhtml = true, html5=true, odt = true, docbook=true, tei=true}
+-- formatter is Lua library which must provide at least prepare_parameters
+-- and process_build_sequence functions
+local formatter
+local output_format = parameters.output_format
+if allowed_output_formats[ output_format ] then
+ formatter = mkutils.load_output_format(output_format)
+else
+ -- load html5 as default output format
+ if output_format then
+ print("Cannot load output format: ".. output_format)
+ end
+ formatter = mkutils.load_output_format("html5")
+end
+-- find make4ht configuration file
+local configname = "make4ht"
+local conffile = mk_config.find_config(configname) or mk_config.find_xdg_config(configname)
+if conffile then
+ print("Using configuration file: " .. conffile)
+ mkutils.load_config(parameters, conffile)
+end
+local extensions = formatter.prepare_extensions(parameters.extensions)
+extensions = mkutils.load_extensions(extensions, output_format)
+
+
+
+-- run extensions with prepare_parameters function
+parameters = formatter.prepare_parameters(parameters,extensions)
+local make = mkutils.load_config(parameters, build_file)["Make"]
+make.params = parameters
+if make:length() < 1 then
+ if mode == "draft" then
+ make:htlatex()
+ else
+ make:htlatex()
+ make:htlatex()
+ make:htlatex()
+ end
+end
+
+
+if not args["no-tex4ht"] then
+ make:tex4ht()
+end
+
+local ext = args.xetex and "xdv" or "dvi"
+if #make.image_patterns > 0 then
+ make.params.t4ht_par = make.params.t4ht_par .. " -p"
+end
+make:t4ht {ext = ext}
+-- run extensions which modify the build sequence
+if #extensions > 0 then
+ make = mkutils.extensions_modify_build(extensions, make)
+end
+
+-- allow output formats to modify the build process at the end
+make = formatter.modify_build(make) or make
+
+
+make:match("tmp$", function() return false,"tmp file" end)
+make:match(".*",function(filename,par)
+ local outdir = '' --par["outdir"] and par["outdir"] .."/" or ''
+ if par['outdir'] ~= "" then outdir = par['outdir'] .. '/' end
+ print("outdir: "..outdir)
+ local outfilename = outdir .. filename
+ mkutils.copy(filename,outfilename)
+ return true
+end)
+
+make:run()