1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
|
local lapp = require "lapp-mk4"
local mkutils = require "mkutils"
local m = {} -- use ugly module system for new lua versions support
m.optiontext = [[
${progname} - build system for tex4ht
Usage:
${progname} [options] filename ["tex4ht.sty op." "tex4ht op." "t4ht op" "latex op"]
-b,--backend (default tex4ht) Backend used for xml generation.
possible values: tex4ht or lua4ht
-c,--config (default xhtml) Custom config file
-d,--output-dir (default nil) Output directory
-e,--build-file (default nil) If build file is different than `filename`.mk4
-l,--lua Use lualatex for document compilation
-m,--mode (default default) Switch which can be used in the makefile
-n,--no-tex4ht Disable dvi file processing with tex4ht command
-s,--shell-escape Enables running external programs from LaTeX
-u,--utf8 For output documents in utf8 encoding
-x,--xetex Use xelatex for document compilation
]]
local function get_args(parameters, optiontext)
local parameters = parameters or {}
parameters.progname = parameters.progname or "make4ht"
parameters.postparams = parameters.postparams or ""
local optiontext = optiontext or m.optiontext
parameters.postfile = parameters.postfile or ""
optiontext = optiontext .. parameters.postparams .."<filename> (string) Input file name\n" .. parameters.postfile
--print("--------------\n" .. optiontext .."--------------\n")
return lapp(optiontext % parameters)
end
local function process_args(args)
local function get_inserter(args,tb)
return function(key, value)
--local v = args[key] and value or ""
local v = ""
if args[key] then v = value end
table.insert(tb,v)
end
end
local outdir = ""
local packages = ""
if args["output-dir"] ~= "nil" then
outdir = args["output-dir"]
outdir = outdir:gsub('\\','/')
outdir = outdir:gsub('/$','')
end
if args.backend == "lua4ht" then
args.lua = true
args.xetex = nil
args.utf8 = true
args["no-tex4ht"] = true
packages = packages .."\\RequirePackage{lua4ht}"
end
local compiler = args.lua and "dvilualatex" or args.xetex and "xelatex --no-pdf" or "latex"
local input = mkutils.remove_extension(args.filename)
local latex_params = {}
local insert_latex = get_inserter(args,latex_params)
insert_latex("shell-escape","-shell-escape")
table.insert(latex_params,"-jobname="..input)
table.insert(latex_params,args[4] or "")
--table.insert(latex_params,args["shell-escape"] and "-shell-escape")
local t4sty = args[1] or ""
-- test if first option is custom config file
local cfg_tmp = t4sty:match("([^,^ ]+)")
if cfg_tmp and cfg_tmp ~= args.config then
local fn = cfg_tmp..".cfg"
local f = io.open(fn,"r")
if f then
args.config = cfg_tmp
f:close()
end
end
--[[if args[1] and args[1] ~= "" then
t4sty = args[1]
else
--]]
-- Different behaviour from htlatex
local utf = args.utf8 and ",charset=utf-8" or ""
t4sty = args.config .. "," .. t4sty .. utf
--end
local tex4ht = ""
if args[2] and args[2] ~="" then
tex4ht = args[2]
else
tex4ht = args.utf8 and " -cunihtf -utf8" or ""
local xdv = args.xetex and " -.xdv" or ""
tex4ht = tex4ht .. xdv
end
local t4ht = args[3] or ""
local mode = args.mode or "default"
local build_file = input.. ".mk4"
if args["build-file"] and args["build-file"] ~= "nil" then
build_file = args["build-file"]
end
local parameters = {
htlatex = compiler
,input=input
,packages=packages
,latex_par=table.concat(latex_params," ")
--,config=ebookutils.remove_extension(args.config)
,tex4ht_sty_par=t4sty
,tex4ht_par=tex4ht
,t4ht_par=t4ht
,mode = mode
,build_file = build_file
--,t4ht_dir_format=t4ht_dir_format
}
if outdir then parameters.outdir = outdir end
print("Output dir: ",outdir)
print("Compiler: ", compiler)
print("Latex options: ", table.concat(latex_params," "))
print("tex4ht.sty :",t4sty)
print("tex4ht",tex4ht)
print("build_file", build_file)
return parameters
end
m.get_args = get_args
m.process_args = process_args
return m
|