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 /support/tex4ebook/tex4ebook |
Initial commit
Diffstat (limited to 'support/tex4ebook/tex4ebook')
-rwxr-xr-x | support/tex4ebook/tex4ebook | 217 |
1 files changed, 217 insertions, 0 deletions
diff --git a/support/tex4ebook/tex4ebook b/support/tex4ebook/tex4ebook new file mode 100755 index 0000000000..a95bf44c23 --- /dev/null +++ b/support/tex4ebook/tex4ebook @@ -0,0 +1,217 @@ +#!/usr/bin/env texlua +-- Package tex4ebook. Author Michal Hoftich <michal.h21@gmail.com> +-- This package is subject of LPPL license, version 1.3 +-- +kpse.set_program_name("luatex") +require("lapp-mk4") +-- require("ebookutils") +local ebookutils = require "mkutils" +local mkparams = require "mkparams" +local mk_config = require "make4ht-config" + +-- Setting +local latex_cmd="latex" +local copy_cmd="copy" +local move_cmd="move" +local env_param="%%" +local htlatex_call="" +-- These correspond to htlatex parameters +local tex4ht_sty_par="" +local tex4ht_par="" +local t4ht_par="" +local latex_par="" +local output_formats={epub=true,mobi=true,epub3=true} +local executor=nil +local tidy = false +local include_fonts = false +local arg_message = [[ +tex4ebook - ebook generation support for LaTeX +Usage: +tex4ebook [switches] filename ["tex4ht.sty op."] ["tex4ht op."] ["t4ht op"] ["latex op"] + -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 + -f,--format (default epub) Output format. Supported values: epub, epub3, mobi + -h,--help Display help message + -l,--lua Use lualatex for document compilation + -m,--mode (default default) Switch which can be used in the makefile + -r,--resolution (default 167) + -s,--shell-escape Enable shell escape in htlatex run + -t,--tidy Run html tidy on html output. May result in wrong spacing! + -v,--version Display version number + -x,--xetex Use xelatex for document compilation + + <filename> (string) Input file name + +Positional optional argumens: + ["tex4ht.sty op."] Additional parameters for tex4ht.sty + ["tex4ht op."] Options for tex4ht command + ["t4ht op"] Options for t4ht command + ["latex op"] Additional options for LaTeX + +Documentation: https://tug.org/applications/tex4ht/mn.html +Issue tracker for tex4ht bugs: https://puszcza.gnu.org.ua/bugs/?group=tex4ht +Issue tracker for tex4ebook bugs: https://github.com/michal-h21/tex4ebook/issues +]] + +-- This option is no longer available, all files must be unicode +-- -u,--utf8 +local args=lapp(arg_message) + +if args["filename"] == nil and args["version"] == false then + print(arg_message) + return +else + input_file=args["filename"] +end + +if args.version then + print "tex4ebook v0.2c" + return +end + +if args.lua then + latex_cmd="dvilualatex" +elseif args.xetex then + latex_cmd="xelatex --no-pdf" +end + + +if args["shell-escape"] then + latex_par = latex_par .. " -shell-escape" +end + +if args["include-fonts"] then + include_fonts = true +end + +-- local mathml = "," +-- if args["mathml"] then +-- -- mathml = ",mathml," +-- tex4ht_sty_par = tex4ht_sty_par .. ",mathml" +-- end +local mode = args.mode or "default" + +if os.type=="unix" then + env_param="$" + copy_cmd="cp" + move_cmd="mv" + t4ht_dir_format="%s/" +else + env_param="%%" + copy_cmd="copy" + move_cmd="move" + t4ht_dir_format="%s" +end + +if args.tidy then + tidy = true +else + tidy = false +end +-- Env file copying + +--[[if not ebookutils.file_exists("tex4ht.env") then +local env_file = kpse.find_file("epub2.env") +ebookutils.copy_filter(env_file,"tex4ht.env",function(s) return s % { +move = move_cmd, +copy = copy_cmd, +resolution = args.resolution +} end) +end--]] + +--print ("nazdar ${world}" % {world="svete"}) +--print(args.config) + + +local input = ebookutils.remove_extension(input_file) +local config=ebookutils.remove_extension(args.config) +-- local tex4ht_sty_par = config ..tex4ht_sty_par..","+args.format +--local sty_args = args[2] and ", " .. args[2] or "" +local sty_args = "" +if args[2] then + sty_args = "," .. args[2] +end +local tex4ht_sty_par = tex4ht_sty_par + sty_args --args[2] +local tex4ht_par = tex4ht_par +args[3] +local t4ht_par = t4ht_par + args[4] +local latex_par = latex_par + args[5] + +-- use default parameter processing from make4ht +-- add some needed args +args.filename=input_file +local params = mkparams.process_args(args) + + +local output_format = params.output_format --args.format +-- use epub as default output_format +output_format = output_format or "epub" +local extensions = ebookutils.load_extensions(params.extensions, output_format) +-- but also support tex4ebook!s own parameters +local oldparams = { + -- htlatex=latex_cmd + -- ,input=input + -- ,tex_file = tex_file + format= output_format + -- ,latex_par=latex_par + -- ,tex4ht_sty_par=tex4ht_sty_par + -- ,tex4ht_par=tex4ht_par + -- ,t4ht_par=t4ht_par + -- ,mode = mode + ,t4ht_dir_format=t4ht_dir_format + ,tidy = tidy + ,include_fonts = include_fonts + ,resolution=args.resolution + ,mathml=mathml + ,packages="\\RequirePackage{tex4ebook}" +} + +-- extend params +for k,v in pairs(oldparams) do + params[k] = v +end + +params.tex4ht_sty_par=params.tex4ht_sty_par .. ",charset=utf-8,"..output_format +params.tex4ht_par= " -cmozhtf -utf8" .. params.tex4ht_par + + +if output_formats[output_format] then + executor=require("exec_"..output_format) + params=executor.prepare(params) + if #extensions > 0 then + params = ebookutils.extensions_prepare_parameters(extensions,params) + end +else + print("Unknown output format: "..output_format) + return +end + +-- find tex4ebook configuration file +local configname = "tex4ebook" +local conffile = mk_config.find_config(configname) or mk_config.find_xdg_config(configname) +if conffile then + print("Using configuration file: " .. conffile) + ebookutils.load_config(params, conffile) +else + print "No conffile" +end + +local build_file = input.. ".mk4" + +if args["build-file"] and args["build-file"] ~= "nil" then + build_file = args["build-file"] +end + +local config_file = ebookutils.load_config(params, build_file) + +params["config_file"] = config_file +--config_file.Make:run() +print("${htlatex} ${input} \"${tex4ht_sty_par}\" \"${tex4ht_par}\" \"${t4ht_par}\" \"${latex_par}\"" % params) +if #extensions > 0 then + config_file.Make = ebookutils.extensions_modify_build(extensions, config_file.Make) +end + +executor.run(input,params) +executor.writeContainer() +executor.clean() +--print(args[1]) |