texlive[47414] trunk: tex4ebook (9apr18)

commits+karl at tug.org commits+karl at tug.org
Mon Apr 9 23:19:50 CEST 2018


Revision: 47414
          http://tug.org/svn/texlive?view=revision&revision=47414
Author:   karl
Date:     2018-04-09 23:19:50 +0200 (Mon, 09 Apr 2018)
Log Message:
-----------
tex4ebook (9apr18)

Modified Paths:
--------------
    trunk/Build/source/texk/texlive/linked_scripts/tex4ebook/tex4ebook
    trunk/Master/texmf-dist/doc/support/tex4ebook/README
    trunk/Master/texmf-dist/doc/support/tex4ebook/changelog.tex
    trunk/Master/texmf-dist/doc/support/tex4ebook/readme.tex
    trunk/Master/texmf-dist/doc/support/tex4ebook/tex4ebook-doc.pdf
    trunk/Master/texmf-dist/doc/support/tex4ebook/tex4ebook-doc.tex
    trunk/Master/texmf-dist/scripts/tex4ebook/exec_epub.lua
    trunk/Master/texmf-dist/scripts/tex4ebook/exec_epub3.lua
    trunk/Master/texmf-dist/scripts/tex4ebook/tex4ebook

Modified: trunk/Build/source/texk/texlive/linked_scripts/tex4ebook/tex4ebook
===================================================================
--- trunk/Build/source/texk/texlive/linked_scripts/tex4ebook/tex4ebook	2018-04-09 21:19:32 UTC (rev 47413)
+++ trunk/Build/source/texk/texlive/linked_scripts/tex4ebook/tex4ebook	2018-04-09 21:19:50 UTC (rev 47414)
@@ -7,6 +7,7 @@
 -- require("ebookutils")
 local ebookutils = require "mkutils"
 local mkparams = require "mkparams"
+local mk_config = require "make4ht-config"
 
 -- Setting
 local latex_cmd="latex"
@@ -37,6 +38,7 @@
 -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
 ]]
 
@@ -52,12 +54,14 @@
 end
 
 if args.version then
-  print "tex4ebook v0.1e"
+  print "tex4ebook v0.2"
   return 
 end
 
 if args.lua then
   latex_cmd="dvilualatex"
+elseif args.xetex then
+  latex_cmd="xelatex --no-pdf"
 end
 
 
@@ -125,12 +129,17 @@
 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=args.format
+  format= output_format
   -- ,latex_par=latex_par
   -- ,tex4ht_sty_par=tex4ht_sty_par
   -- ,tex4ht_par=tex4ht_par
@@ -152,14 +161,28 @@
 params.tex4ht_sty_par=params.tex4ht_sty_par .. ",charset=utf-8,"..args.format
 params.tex4ht_par= " -cmozhtf -utf8" .. params.tex4ht_par
 
-if output_formats[args.format] then
-  executor=require("exec_"..args.format)
+
+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: "..args.format)
+  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 
@@ -171,6 +194,10 @@
 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()

Modified: trunk/Master/texmf-dist/doc/support/tex4ebook/README
===================================================================
--- trunk/Master/texmf-dist/doc/support/tex4ebook/README	2018-04-09 21:19:32 UTC (rev 47413)
+++ trunk/Master/texmf-dist/doc/support/tex4ebook/README	2018-04-09 21:19:50 UTC (rev 47414)
@@ -1,3 +1,5 @@
+% [![Build Status](https://travis-ci.org/michal-h21/tex4ebook.svg?branch=master)](https://travis-ci.org/michal-h21/tex4ebook)
+
 # Introduction
 
 `TeX4ebook` is bundle of Lua scripts and `LaTeX` packages for conversion of
@@ -128,7 +130,7 @@
 *Configure part 2*^[http://www.cvr.cc/?p=362], 
 *Low level commands*^[http://www.cvr.cc/?p=482]. 
 Available options for `\Preamble` command are listed in the article 
-*TeX4ht: options*^[http://www.cvr.cc/?p=504].
+*TeX4ht: options*^[http://www.cvr.cc/?p=504]. *Comparison of tex4ebook and Pandoc output*^[https://github.com/richelbilderbeek/travis_tex_to_epub_example_1]
 
 Great source of tips for `tex4ht` configuring is *tex4ht tag on TeX.sx*^[http://tex.stackexchange.com/questions/tagged/tex4ht], there is also a *tag for tex4ebook*^[http://tex.stackexchange.com/questions/tagged/tex4ebook].
 
@@ -216,6 +218,20 @@
 `tex4ebook` uses `make4ht`^[https://github.com/michal-h21/make4ht] as a build
 system. See `make4ht` documentation for details on build files. 
 
+## `.tex4ebook` configuration file
+
+It is possible to globally modify the build settings using the configuration
+file. New compilation commands can be added, extensions can be loaded or
+disabled and settings can be set.
+
+### Location
+
+The configuration file can be saved either in
+`$HOME/.config/tex4ebook/config.lua` or in `.tex4ebook` in the current directory or
+it's parents (up to `$HOME`).
+
+See the `make4ht` documentation for an example and more information.
+
 # Troubleshooting
 
 When compilation of the document breaks with error during `LaTeX` run, it may

Modified: trunk/Master/texmf-dist/doc/support/tex4ebook/changelog.tex
===================================================================
--- trunk/Master/texmf-dist/doc/support/tex4ebook/changelog.tex	2018-04-09 21:19:32 UTC (rev 47413)
+++ trunk/Master/texmf-dist/doc/support/tex4ebook/changelog.tex	2018-04-09 21:19:50 UTC (rev 47414)
@@ -1,11 +1,52 @@
-\section{Changes}\label{changes}
+\hypertarget{changes}{%
+\section{Changes}\label{changes}}
 
 \begin{itemize}
 \item
+  06/04/2018
+
+  \begin{itemize}
+  \tightlist
+  \item
+    documented the configuration file
+  \end{itemize}
+\item
+  02/03/2018
+
+  \begin{itemize}
+  \tightlist
+  \item
+    added support for \texttt{.tex4ebook} configuration file
+  \end{itemize}
+\item
+  28/02/2018
+
+  \begin{itemize}
+  \tightlist
+  \item
+    added media overlays handling
+  \end{itemize}
+\item
+  19/10/2017
+
+  \begin{itemize}
+  \tightlist
+  \item
+    added support for XeTeX
+  \end{itemize}
+\item
+  06/10/2017
+
+  \begin{itemize}
+  \tightlist
+  \item
+    added support for Make4ht extensions
+  \end{itemize}
+\item
   27/04/2017 Version 0.1e
 
   \begin{itemize}
-  \itemsep1pt\parskip0pt\parsep0pt
+  \tightlist
   \item
     pack the accumulated changes for distribution
   \item
@@ -15,7 +56,7 @@
   17/01/2017
 
   \begin{itemize}
-  \itemsep1pt\parskip0pt\parsep0pt
+  \tightlist
   \item
     process duplicate images only once
   \item
@@ -25,7 +66,7 @@
   11/01/2017
 
   \begin{itemize}
-  \itemsep1pt\parskip0pt\parsep0pt
+  \tightlist
   \item
     pass \texttt{settings} table to the build file.
   \end{itemize}
@@ -33,16 +74,16 @@
   19/12/2016
 
   \begin{itemize}
-  \itemsep1pt\parskip0pt\parsep0pt
+  \tightlist
   \item
     new configuration:
-    \texttt{\textbackslash{}Configure\{resettoclevels\}\{list of sectioning levels to be included in the NCX\}}
+    \texttt{\textbackslash{}Configure\{resettoclevels\}\{list\ of\ sectioning\ levels\ to\ be\ included\ in\ the\ NCX\}}
   \end{itemize}
 \item
   31/10/2016
 
   \begin{itemize}
-  \itemsep1pt\parskip0pt\parsep0pt
+  \tightlist
   \item
     added tidyconf.conf to the Makefile
   \end{itemize}
@@ -50,7 +91,7 @@
   22/10/2016
 
   \begin{itemize}
-  \itemsep1pt\parskip0pt\parsep0pt
+  \tightlist
   \item
     added support for new Make4ht command \texttt{Make:add\_file}
   \end{itemize}
@@ -58,7 +99,7 @@
   22/08/2016
 
   \begin{itemize}
-  \itemsep1pt\parskip0pt\parsep0pt
+  \tightlist
   \item
     fixed incorrect \texttt{\textless{}dc:creator\textgreater{}}
     generated by \texttt{\textbackslash{}author}
@@ -70,7 +111,7 @@
   31/07/2016
 
   \begin{itemize}
-  \itemsep1pt\parskip0pt\parsep0pt
+  \tightlist
   \item
     use monospace font for command line options in order to prevent
     double hyphens to become dashes by ligaturing
@@ -79,15 +120,15 @@
   22/07/2016
 
   \begin{itemize}
-  \itemsep1pt\parskip0pt\parsep0pt
+  \tightlist
   \item
-    removed debugging message when \texttt{-{}-lua} option is used
+    removed debugging message when \texttt{-\/-lua} option is used
   \end{itemize}
 \item
   07/04/2016
 
   \begin{itemize}
-  \itemsep1pt\parskip0pt\parsep0pt
+  \tightlist
   \item
     Cut \texttt{\textbackslash{}part} commands to standalone pages
   \end{itemize}
@@ -95,7 +136,7 @@
   05/04/2016
 
   \begin{itemize}
-  \itemsep1pt\parskip0pt\parsep0pt
+  \tightlist
   \item
     bug fix: pages which contained math were arranged before other pages
   \end{itemize}
@@ -103,7 +144,7 @@
   31/03/2016 Version 0.1d
 
   \begin{itemize}
-  \itemsep1pt\parskip0pt\parsep0pt
+  \tightlist
   \item
     bug fix: Unicode wasn't used by default
   \item
@@ -113,9 +154,9 @@
   06/12/2015 Version 0.1c
 
   \begin{itemize}
-  \itemsep1pt\parskip0pt\parsep0pt
+  \tightlist
   \item
-    added \texttt{-{}-help} and \texttt{-{}-version} command line
+    added \texttt{-\/-help} and \texttt{-\/-version} command line
     options
   \end{itemize}
 \item
@@ -122,7 +163,7 @@
   25/11/2015
 
   \begin{itemize}
-  \itemsep1pt\parskip0pt\parsep0pt
+  \tightlist
   \item
     added missing language codes
   \item
@@ -133,7 +174,7 @@
   17/11/2015
 
   \begin{itemize}
-  \itemsep1pt\parskip0pt\parsep0pt
+  \tightlist
   \item
     use mkparams for cli arguments handling.
   \item
@@ -144,7 +185,7 @@
   24/09/2015 Version 0.1b
 
   \begin{itemize}
-  \itemsep1pt\parskip0pt\parsep0pt
+  \tightlist
   \item
     info about new workaround for \texttt{fontspec} package
   \end{itemize}
@@ -152,7 +193,7 @@
   25/08/2015
 
   \begin{itemize}
-  \itemsep1pt\parskip0pt\parsep0pt
+  \tightlist
   \item
     fatal error happened with epub3 when the document didn't contain the
     TOC
@@ -161,7 +202,7 @@
   23/08/2015
 
   \begin{itemize}
-  \itemsep1pt\parskip0pt\parsep0pt
+  \tightlist
   \item
     simple cleaning of the ncx file if tidy command isn't available
   \end{itemize}
@@ -169,7 +210,7 @@
   05/07/2015 Version 0.1a
 
   \begin{itemize}
-  \itemsep1pt\parskip0pt\parsep0pt
+  \tightlist
   \item
     \texttt{tex4ebook} script was missing in the distribution zip file
   \item
@@ -179,7 +220,7 @@
   29/06/2015 Version 0.1
 
   \begin{itemize}
-  \itemsep1pt\parskip0pt\parsep0pt
+  \tightlist
   \item
     fixes in documentation
   \end{itemize}
@@ -187,7 +228,7 @@
   22/06/2015
 
   \begin{itemize}
-  \itemsep1pt\parskip0pt\parsep0pt
+  \tightlist
   \item
     changes moved from README.md to CHANGELOG.md
   \end{itemize}
@@ -195,9 +236,9 @@
   18/06/2015
 
   \begin{itemize}
-  \itemsep1pt\parskip0pt\parsep0pt
+  \tightlist
   \item
-    replaced \texttt{-{}-mathml} option with \texttt{-{}-mode}. For
+    replaced \texttt{-\/-mathml} option with \texttt{-\/-mode}. For
     \texttt{mathml} support, use\texttt{mathml} option for
     \texttt{tex4ht.sty}.
   \item
@@ -208,82 +249,61 @@
 \item
   14/01/2015
 
-  \begin{itemize}
-  \itemsep1pt\parskip0pt\parsep0pt
-  \item
-    thanks Volker Gottwald for guide on
-    \href{https://d800fotos.wordpress.com/2015/01/19/create-e-books-from-latex-tex-files-ebook-aus-latex-tex-dateien-erstellen/}{installing
-    and using tex4ebook} on Windows
-  \end{itemize}
+\begin{verbatim}
+- thanks Volker Gottwald for guide on [installing and using
+  tex4ebook](https://d800fotos.wordpress.com/2015/01/19/create-e-books-from-latex-tex-files-ebook-aus-latex-tex-dateien-erstellen/)
+  on Windows
+\end{verbatim}
 \item
   23/11/2014
 
-  \begin{itemize}
-  \item
-    added new command \texttt{\textbackslash{}OpfGuide}, for adding
-    items to \texttt{\textless{}guide\textgreater{}} section in the
-    \texttt{opf} file. This is useful for \texttt{epub} and
-    \texttt{mobi} formats.
+\begin{verbatim}
+- added new command `\OpfGuide`, for adding items to `<guide>`
+  section in the `opf` file. This is useful for `epub` and `mobi` formats.
 
-    Usage:
+  Usage:
 
-\begin{verbatim}
- \OpfGuide[filename]{title}{reference type}
+       \OpfGuide[filename]{title}{reference type}
+
+   `filename` is optional, current file name is used when empty. See
+   [epub 
+   secrets](http://epubsecrets.com/where-do-you-start-an-epub-and-what-is-the-guide-section-of-the-opf-file.php)
+   article
 \end{verbatim}
-
-    \texttt{filename} is optional, current file name is used when empty.
-    See
-    \href{http://epubsecrets.com/where-do-you-start-an-epub-and-what-is-the-guide-section-of-the-opf-file.php}{epub
-    secrets} article
-  \end{itemize}
 \item
   20/10/2014
 
-  \begin{itemize}
-  \item
-    fixed issues with starred sections
-  \item
-    files created with starred sectioning commands
-    (\texttt{\textbackslash{}chapter*},
-    \texttt{\textbackslash{}section*}) should be included in correct
-    reading order now
-  \end{itemize}
+\begin{verbatim}
+ - fixed issues with starred sections
+
+ - files created with starred sectioning commands (`\chapter*`,
+   `\section*`) should be included in correct reading order now
+\end{verbatim}
 \item
   16/09/2014
 
-  \begin{itemize}
-  \itemsep1pt\parskip0pt\parsep0pt
-  \item
-    new features added
-  \item
-    new configuration file for \texttt{-{}-tidy} option, mathml and
-    html5 elements are supported. This means that many validation errors
-    in \texttt{mathml} output can be fixed with \texttt{-{}-tidy} option
-  \item
-    added configuration for all languages supported by \texttt{babel}
-  \item
-    \texttt{woff} and \texttt{ttf} fonts are supported
-  \item
-    added inline footlines in \texttt{epub3} format
-  \item
-    added \texttt{no-cut} command line option for breaking sections and
-    chapters into standalone pages
-  \item
-    Please support
-    \href{http://www.ulule.com/mathematics-ebooks/}{iniciative for
-    improving mathml support} in Gecko and Webkit engines. This will
-    hopefully improve also Epub3 readers.
-  \end{itemize}
+\begin{verbatim}
+ - new features added
+ - new configuration file for `--tidy` option, mathml and html5 elements
+   are supported. This means that many validation errors in `mathml`
+   output can be fixed with `--tidy` option
+ - added configuration for all languages supported by `babel`
+ - `woff` and `ttf` fonts are supported
+ - added inline footlines in `epub3` format
+ - added `no-cut` command line option for breaking sections and chapters
+   into standalone pages
+ - Please support [iniciative for improving mathml
+   support](http://www.ulule.com/mathematics-ebooks/) in Gecko and Webkit
+   engines. This will hopefully improve also Epub3 readers.
+\end{verbatim}
 \item
   10/08/2013
 
-  \begin{itemize}
-  \itemsep1pt\parskip0pt\parsep0pt
-  \item
-    \href{https://github.com/michal-h21/make4ht}{\texttt{make4ht}} is
-    now standalone application which \texttt{tex4ebook} depends on. You
-    must
-    \href{https://github.com/michal-h21/make4ht\#instalation}{install
-    it} in order to use current \texttt{tex4ebook} version.
-  \end{itemize}
+\begin{verbatim}
+ - [`make4ht`](https://github.com/michal-h21/make4ht) is now standalone
+   application which `tex4ebook` depends on. You must [install
+\end{verbatim}
+
+  it{]}(https://github.com/michal-h21/make4ht\#instalation) in order to
+  use current \texttt{tex4ebook} version.
 \end{itemize}

Modified: trunk/Master/texmf-dist/doc/support/tex4ebook/readme.tex
===================================================================
--- trunk/Master/texmf-dist/doc/support/tex4ebook/readme.tex	2018-04-09 21:19:32 UTC (rev 47413)
+++ trunk/Master/texmf-dist/doc/support/tex4ebook/readme.tex	2018-04-09 21:19:50 UTC (rev 47414)
@@ -1,4 +1,5 @@
-\section{Introduction}\label{introduction}
+\hypertarget{introduction}{%
+\section{Introduction}\label{introduction}}
 
 \texttt{TeX4ebook} is bundle of Lua scripts and \texttt{LaTeX} packages
 for conversion of LaTeX files to ebook formats, for example
@@ -24,12 +25,14 @@
 document more visually appealing. You can include custom \texttt{CSS} or
 fonts in configuration files.
 
-\subsection{License}\label{license}
+\hypertarget{license}{%
+\subsection{License}\label{license}}
 
 Permission is granted to copy, distribute and/or modify this software
 under the terms of the LaTeX Project Public License, version 1.3.
 
-\section{Usage}\label{usage}
+\hypertarget{usage}{%
+\section{Usage}\label{usage}}
 
 Run on the command line:
 
@@ -51,20 +54,21 @@
 
 but it is optional. You shouldn't need to modify your \TeX~files
 
-\subsection{Available commands}\label{available-commands}
+\hypertarget{available-commands}{%
+\subsection{Available commands}\label{available-commands}}
 
 \begin{itemize}
-\itemsep1pt\parskip0pt\parsep0pt
+\tightlist
 \item
   \texttt{\textbackslash{}coverimage\{coverimage.name\}} - include cover
   image to the document.
 \end{itemize}
 
-\section{Command line options}\label{command-line-options}
+\hypertarget{command-line-options}{%
+\section{Command line options}\label{command-line-options}}
 
 \begin{description}
-\itemsep1pt\parskip0pt\parsep0pt
-\item[\texttt{-c,-{}-config}]
+\item[\texttt{-c,-\/-config}]
 specify custom config file for \texttt{tex4ht}
 \end{description}
 
@@ -87,33 +91,34 @@
 that this behaviour is default.
 
 \begin{description}
-\item[\texttt{-e,-{}-build-file (default nil)}]
+\item[\texttt{-e,-\/-build-file\ (default\ nil)}]
 Specify make4ht build file\footnote{\url{https://github.com/michal-h21/make4ht\#build-file}}.
 Defaulf build file filename is \texttt{filename.mk4}, use this option if
 you use different filename.
-\item[\texttt{-f,-{}-format (default epub)}]
+\item[\texttt{-f,-\/-format\ (default\ epub)}]
 Output format. epub, epub3 and mobi are supported.
-\item[\texttt{-l,-{}-lua}]
+\item[\texttt{-l,-\/-lua}]
 Runs htlualatex instead of htlatex.
-\item[\texttt{-m,-{}-mode (default default)}]
+\item[\texttt{-m,-\/-mode\ (default\ default)}]
 This set \texttt{mode} variable, accessible in the build file. Default
 supported values are \texttt{default} and \texttt{draft}. In
 \texttt{draft} mode, document is compiled only once, instead of three
 times.
-\item[\texttt{-r,-{}-resolution}]
+\item[\texttt{-r,-\/-resolution}]
 Resolution of generated images, for example math. It should meet
 resolution of target devices, which is usually about 167 ppi.
-\item[\texttt{-s,-{}-shell-escape}]
+\item[\texttt{-s,-\/-shell-escape}]
 Enable shell escape in htlatex run. This may be needed if you run
 external commands from your source files.
-\item[\texttt{-t,-{}-tidy}]
-process output html files with \texttt{HTML tidy} command\footnote{It
+\item[\texttt{-t,-\/-tidy}]
+process output html files with \texttt{HTML\ tidy} command\footnote{It
   needs to be installed separately}.
-\item[\texttt{-v,-{}-version}]
+\item[\texttt{-v,-\/-version}]
 print version number
 \end{description}
 
-\section{Configuration}\label{configuration}
+\hypertarget{configuration}{%
+\section{Configuration}\label{configuration}}
 
 \texttt{tex4ebook} uses \texttt{tex4ht}\footnote{\url{http://www.tug.org/tex4ht/}}
 for conversion from LaTeX to html. \texttt{tex4ht} is highly
@@ -136,6 +141,7 @@
 commands}\footnote{\url{http://www.cvr.cc/?p=482}}. Available options
 for \texttt{\textbackslash{}Preamble} command are listed in the article
 \emph{TeX4ht: options}\footnote{\url{http://www.cvr.cc/?p=504}}.
+\emph{Comparison of tex4ebook and Pandoc output}\footnote{\url{https://github.com/richelbilderbeek/travis_tex_to_epub_example_1}}
 
 Great source of tips for \texttt{tex4ht} configuring is \emph{tex4ht tag
 on TeX.sx}\footnote{\url{http://tex.stackexchange.com/questions/tagged/tex4ht}},
@@ -145,7 +151,8 @@
 in ebooks}\footnote{\url{http://tex.stackexchange.com/a/213165/2891}} or
 \emph{setting image size in em units instead of pt}\footnote{\url{http://tex.stackexchange.com/a/195718/2891}}.
 
-\subsection{Provided configurations}\label{provided-configurations}
+\hypertarget{provided-configurations}{%
+\subsection{Provided configurations}\label{provided-configurations}}
 
 \texttt{tex4ebook} provides some configurations for your usage:
 
@@ -178,7 +185,7 @@
 
 Each epub must declare the document language. It is inferred from
 \texttt{babel} main language by default, but you can configure it when
-it doesn't work correctly. The \texttt{language code} should be in
+it doesn't work correctly. The \texttt{language\ code} should be in
 \href{https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes}{ISO 639-1}
 form.
 
@@ -187,7 +194,7 @@
 \end{verbatim}
 
 By default, cover image is inserted in
-\texttt{\textless{}div class="cover-image"\textgreater{}} element, you
+\texttt{\textless{}div\ class="cover-image"\textgreater{}} element, you
 may use this configuration option to insert different markup, or even to
 place the cover image to standalone page.
 
@@ -225,16 +232,17 @@
 \Configure{xmlns}{prefix}{uri}
 \end{verbatim}
 
-Add xml name space to \texttt{xhtml} files. Useful in \texttt{EPUB 3}
+Add xml name space to \texttt{xhtml} files. Useful in \texttt{EPUB\ 3}
 
+\hypertarget{commands-available-in-config-files}{%
 \subsection{Commands available in config
-files}\label{commands-available-in-config-files}
+files}\label{commands-available-in-config-files}}
 
 \begin{description}
 \item[\texttt{\textbackslash{}OpfRegisterFile{[}filename{]}}]
 register file in the \texttt{OPF} file. Current output file is added by
 default.
-\item[\texttt{\textbackslash{}OpfAddProperty\{property type\}}]
+\item[\texttt{\textbackslash{}OpfAddProperty\{property\ type\}}]
 add \texttt{EPUB3} property for the current file. See \emph{EPUB3
 spec}\footnote{\url{http://www.idpf.org/epub/301/spec/epub-publications.html\#sec-item-property-values}}
 \item[\texttt{\textbackslash{}OpfGuide{[}filename{]}\{title\}\{type\}}]
@@ -243,17 +251,37 @@
 \texttt{\textless{}guide\textgreater{}} section of the .OPF
 file?}\footnote{\url{http://epubsecrets.com/where-do-you-start-an-epub-and-what-is-the-guide-section-of-the-opf-file.php}}
 for some details. Note that \texttt{\textless{}guide\textgreater{}} is
-deprecated in \texttt{EPUB 3}.
+deprecated in \texttt{EPUB\ 3}.
 \end{description}
 
-\subsection{Build files}\label{build-files}
+\hypertarget{build-files}{%
+\subsection{Build files}\label{build-files}}
 
 \texttt{tex4ebook} uses \texttt{make4ht}\footnote{\url{https://github.com/michal-h21/make4ht}}
 as a build system. See \texttt{make4ht} documentation for details on
 build files.
 
-\section{Troubleshooting}\label{troubleshooting}
+\hypertarget{tex4ebook-configuration-file}{%
+\subsection{\texorpdfstring{\texttt{.tex4ebook} configuration
+file}{.tex4ebook configuration file}}\label{tex4ebook-configuration-file}}
 
+It is possible to globally modify the build settings using the
+configuration file. New compilation commands can be added, extensions
+can be loaded or disabled and settings can be set.
+
+\hypertarget{location}{%
+\subsubsection{Location}\label{location}}
+
+The configuration file can be saved either in
+\texttt{\$HOME/.config/tex4ebook/config.lua} or in \texttt{.tex4ebook}
+in the current directory or it's parents (up to \texttt{\$HOME}).
+
+See the \texttt{make4ht} documentation for an example and more
+information.
+
+\hypertarget{troubleshooting}{%
+\section{Troubleshooting}\label{troubleshooting}}
+
 When compilation of the document breaks with error during \texttt{LaTeX}
 run, it may be caused by some problem in \texttt{tex4ht} configuration.
 Comment out line \texttt{\textbackslash{}usepackage\{tex4ebook\}} in
@@ -270,7 +298,8 @@
 list}\footnote{\url{http://tug.org/mailman/listinfo/tex4ht}} or on
 \emph{TeX-sx}\footnote{\url{http://tex.stackexchange.com/}}.
 
-\subsection{Fontspec}\label{fontspec}
+\hypertarget{fontspec}{%
+\subsection{Fontspec}\label{fontspec}}
 
 \texttt{tex4ht} currently doesn't support \texttt{fontspec} and open
 type fonts. At this moment, workaround for this is to modify your source
@@ -306,7 +335,8 @@
 have to use conditional package inclusion in your document. See an
 \href{http://michal-h21.github.io/samples/helpers4ht/fontspec.html}{example}.
 
-\subsection{Validation}\label{validation}
+\hypertarget{validation}{%
+\subsection{Validation}\label{validation}}
 
 In case of successful compilation, use command line tool
 \texttt{epubcheck}\footnote{you need to install it separately, see
@@ -319,11 +349,12 @@
 epubcheck filename.epub
 \end{verbatim}
 
+\hypertarget{common-validation-issues}{%
 \subsubsection{Common validation
-issues:}\label{common-validation-issues}
+issues:}\label{common-validation-issues}}
 
 \begin{itemize}
-\itemsep1pt\parskip0pt\parsep0pt
+\tightlist
 \item
   WARNING: filename.epub: item (OEBPS/foo.boo) exists in the zip file,
   but is not declared in the OPF file
@@ -333,13 +364,13 @@
 and \texttt{filename.epub}. Then run \texttt{tex4ebook} again.
 
 \begin{itemize}
-\itemsep1pt\parskip0pt\parsep0pt
 \item
   WARNING(ACC-009): hsmmt10t.epub/OEBPS/hsmmt10tch17.xhtml(235,15):
   MathML should either have an alt text attribute or annotation-xml
   child element.
+
+  This is accessibility message. Unless you use some macro with
+  annotations for each math instance, you will get lot of these
+  messages. Try to use \texttt{epubcheck\ -e} to print only serious
+  errors.
 \end{itemize}
-
-This is accessibility message. Unless you use some macro with
-annotations for each math instance, you will get lot of these messages.
-Try to use \texttt{epubcheck -e} to print only serious errors.

Modified: trunk/Master/texmf-dist/doc/support/tex4ebook/tex4ebook-doc.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/support/tex4ebook/tex4ebook-doc.tex
===================================================================
--- trunk/Master/texmf-dist/doc/support/tex4ebook/tex4ebook-doc.tex	2018-04-09 21:19:32 UTC (rev 47413)
+++ trunk/Master/texmf-dist/doc/support/tex4ebook/tex4ebook-doc.tex	2018-04-09 21:19:50 UTC (rev 47414)
@@ -6,15 +6,19 @@
 \ifdefined\HCode
 \usepackage[T1]{fontenc}
 \usepackage[utf8]{inputenc}
+\author{\href{mailto:michal.h21 at gmail.com}{Michal Hoftich}}
 \else
 \usepackage{fontspec}
 \setmainfont{TeX Gyre Schola}
+\author{Michal Hoftich\footnote{\url{michal.h21 at gmail.com}}}
 \fi
 \usepackage{microtype}
 \providecommand\tightlist{\relax}
+\ifdefined\gitdate\else\def\gitdate{Date undefined}\fi
+\ifdefined\version\else\def\version{Version undefined}\fi
 
 \title{The \texttt{tex4ebook} package}
-\author{Michal Hoftich\footnote{\url{michal.h21 at gmail.com}}}
+% \author{Michal Hoftich\thanks{\url{michal.h21 at gmail.com}}}
 \date{Version \version\\\gitdate}
 \begin{document}
 \maketitle

Modified: trunk/Master/texmf-dist/scripts/tex4ebook/exec_epub.lua
===================================================================
--- trunk/Master/texmf-dist/scripts/tex4ebook/exec_epub.lua	2018-04-09 21:19:32 UTC (rev 47413)
+++ trunk/Master/texmf-dist/scripts/tex4ebook/exec_epub.lua	2018-04-09 21:19:50 UTC (rev 47414)
@@ -119,7 +119,9 @@
 	otf = "application/opentype",
 	ttf = "application/truetype",
 	woff = "application/font-woff",
-  js = "text/javascript"
+  js = "text/javascript",
+  mp3 = "audio/mpeg",
+  smil = "application/smil+xml"
 }
 
 function make_opf()

Modified: trunk/Master/texmf-dist/scripts/tex4ebook/exec_epub3.lua
===================================================================
--- trunk/Master/texmf-dist/scripts/tex4ebook/exec_epub3.lua	2018-04-09 21:19:32 UTC (rev 47413)
+++ trunk/Master/texmf-dist/scripts/tex4ebook/exec_epub3.lua	2018-04-09 21:19:50 UTC (rev 47414)
@@ -1,5 +1,6 @@
 module(...,package.seeall)
 local eb = require("exec_epub")
+local dom = require("luaxml-domobject")
 
 local ext = "xhtml"
 local outputdir = nil
@@ -42,6 +43,72 @@
   return template
 end
 
+local function add_media_overlays(content)
+  local add_meta = function(package, attributes, text)
+    local meta = package:create_element("meta",attributes)
+    local dur_el = meta:create_text_node(text)
+    meta:add_child_node(dur_el)
+    package:add_child_node(meta)
+  end
+  -- calculate total audio time
+  local calc_times = function(times)
+    local time = 0
+    for _, curr in ipairs(times) do
+      -- smil file contains timestamps in the H:M:S format, we need to parse it
+      local hours, minutes, seconds = curr:match("(%d+):(%d+):(%d+)")
+      time = time +  os.time({year=1970, day=1, month=1, hour=hours, min=minutes, sec=seconds})
+    end
+    return os.date("%H:%M:%S",time)
+  end
+  local opfdom = dom.parse(content)
+  local items = opfdom:query_selector("manifest item")
+  local ref = {}
+  local times = {}
+  local package = opfdom:query_selector("metadata")[1]
+  -- we must read all smil files and find references to html files
+  -- it is necessary to add media-overlay attribute to the referenced items
+  for _, item in ipairs(items) do
+    local href = item:get_attribute("href")
+    ref[href] = item
+    -- we must read audio length from the smil file and add it as a <meta> property
+    if href:match("smil$") then
+      local f = io.open(outputdir .. "/" .. href, "r")
+      if not f then break end
+      local smil = f:read("*all")
+      f:close()
+      local smildom = dom.parse(smil)
+      local audios = smildom:query_selector("audio")
+      local last = audios[#audios]
+      -- add audio duration to the metadata section
+      if last then
+        local duration = last:get_attribute("clipend")
+        if duration then
+          -- todo: calculate total audio length
+          table.insert(times, duration)
+          local audio_id = item:get_attribute("id")
+          add_meta(package, {property="media:duration", refines="#"..audio_id}, duration)
+        end
+      end
+
+      -- add the media-overlay attribute
+      local textref = smil:match('epub:textref="(.-)"')
+      local id = item:get_attribute("id")
+      local referenced = ref[textref]
+      if referenced then
+        referenced:set_attribute("media-overlay", id)
+      end
+    end
+  end
+  -- calculate length of all media overlay audio files
+  if #times > 0 then
+    local totaltime = calc_times(times)
+    add_meta(package,{property="media:duration"}, totaltime)
+  end
+  local serialized = opfdom:serialize()
+  return serialized
+end
+
+
 local function cleanOPF()
   -- in epub3, there must be table of contents
 	-- if there is no toc in the document, we must add generic one
@@ -72,6 +139,7 @@
     -- remove empty guide element
   end
   content = content:gsub("<guide>%s*</guide>","")
+  content = add_media_overlays(content)
   f = io.open(outputdir .. "/" ..opf,"w")
   f:write(content)
   f:close()

Modified: trunk/Master/texmf-dist/scripts/tex4ebook/tex4ebook
===================================================================
--- trunk/Master/texmf-dist/scripts/tex4ebook/tex4ebook	2018-04-09 21:19:32 UTC (rev 47413)
+++ trunk/Master/texmf-dist/scripts/tex4ebook/tex4ebook	2018-04-09 21:19:50 UTC (rev 47414)
@@ -7,6 +7,7 @@
 -- require("ebookutils")
 local ebookutils = require "mkutils"
 local mkparams = require "mkparams"
+local mk_config = require "make4ht-config"
 
 -- Setting
 local latex_cmd="latex"
@@ -37,6 +38,7 @@
 -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
 ]]
 
@@ -52,12 +54,14 @@
 end
 
 if args.version then
-  print "tex4ebook v0.1e"
+  print "tex4ebook v0.2"
   return 
 end
 
 if args.lua then
   latex_cmd="dvilualatex"
+elseif args.xetex then
+  latex_cmd="xelatex --no-pdf"
 end
 
 
@@ -125,12 +129,17 @@
 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=args.format
+  format= output_format
   -- ,latex_par=latex_par
   -- ,tex4ht_sty_par=tex4ht_sty_par
   -- ,tex4ht_par=tex4ht_par
@@ -152,14 +161,28 @@
 params.tex4ht_sty_par=params.tex4ht_sty_par .. ",charset=utf-8,"..args.format
 params.tex4ht_par= " -cmozhtf -utf8" .. params.tex4ht_par
 
-if output_formats[args.format] then
-  executor=require("exec_"..args.format)
+
+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: "..args.format)
+  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 
@@ -171,6 +194,10 @@
 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()



More information about the tex-live-commits mailing list