texlive[44103] trunk: tex4ebook (28apr17)

commits+karl at tug.org commits+karl at tug.org
Fri Apr 28 23:21:38 CEST 2017


Revision: 44103
          http://tug.org/svn/texlive?view=revision&revision=44103
Author:   karl
Date:     2017-04-28 23:21:37 +0200 (Fri, 28 Apr 2017)
Log Message:
-----------
tex4ebook (28apr17)

Modified Paths:
--------------
    trunk/Build/source/texk/texlive/linked_scripts/tex4ebook/tex4ebook
    trunk/Build/source/texk/texlive/linked_scripts/texlive/tlmgr.pl
    trunk/Master/bin/armhf-linux/eptex
    trunk/Master/bin/armhf-linux/euptex
    trunk/Master/bin/armhf-linux/gregorio
    trunk/Master/bin/armhf-linux/luajittex
    trunk/Master/bin/armhf-linux/luatex
    trunk/Master/bin/armhf-linux/mf
    trunk/Master/bin/armhf-linux/mf-nowin
    trunk/Master/bin/armhf-linux/mflua
    trunk/Master/bin/armhf-linux/mfluajit
    trunk/Master/bin/armhf-linux/pdftex
    trunk/Master/bin/armhf-linux/pmpost
    trunk/Master/bin/armhf-linux/ptex
    trunk/Master/bin/armhf-linux/tex
    trunk/Master/bin/armhf-linux/upmpost
    trunk/Master/bin/armhf-linux/uptex
    trunk/Master/bin/armhf-linux/xdvipdfmx
    trunk/Master/bin/armhf-linux/xetex
    trunk/Master/bin/armhf-linux/xindy.mem
    trunk/Master/bin/armhf-linux/xindy.run
    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
    trunk/Master/texmf-dist/tex/latex/tex4ebook/tex4ebook-epub3.4ht
    trunk/Master/texmf-dist/tex/latex/tex4ebook/tex4ebook.4ht

Added Paths:
-----------
    trunk/Master/texmf-dist/doc/support/tex4ebook/tidyconf.conf

Modified: trunk/Build/source/texk/texlive/linked_scripts/tex4ebook/tex4ebook
===================================================================
--- trunk/Build/source/texk/texlive/linked_scripts/tex4ebook/tex4ebook	2017-04-28 21:20:49 UTC (rev 44102)
+++ trunk/Build/source/texk/texlive/linked_scripts/tex4ebook/tex4ebook	2017-04-28 21:21:37 UTC (rev 44103)
@@ -52,12 +52,11 @@
 end
 
 if args.version then
-  print "tex4ebook version 0.1d"
+  print "tex4ebook v0.1e"
   return 
 end
 
 if args.lua then
-  print("Mame lua")
   latex_cmd="dvilualatex"
 end
 
@@ -167,7 +166,7 @@
 	build_file = args["build-file"] 
 end
 
-local config_file = ebookutils.load_config(nil, build_file)
+local config_file = ebookutils.load_config(params, build_file)
 
 params["config_file"] = config_file
 --config_file.Make:run()

Modified: trunk/Build/source/texk/texlive/linked_scripts/texlive/tlmgr.pl
===================================================================
--- trunk/Build/source/texk/texlive/linked_scripts/texlive/tlmgr.pl	2017-04-28 21:20:49 UTC (rev 44102)
+++ trunk/Build/source/texk/texlive/linked_scripts/texlive/tlmgr.pl	2017-04-28 21:21:37 UTC (rev 44103)
@@ -1,5 +1,5 @@
 #!/usr/bin/env perl
-# $Id: tlmgr.pl 43990 2017-04-23 13:21:28Z preining $
+# $Id: tlmgr.pl 44076 2017-04-27 08:51:00Z preining $
 #
 # Copyright 2008-2017 Norbert Preining
 # This file is licensed under the GNU General Public License version 2
@@ -6,8 +6,8 @@
 # or any later version.
 #
 
-my $svnrev = '$Revision: 43990 $';
-my $datrev = '$Date: 2017-04-23 15:21:28 +0200 (Sun, 23 Apr 2017) $';
+my $svnrev = '$Revision: 44076 $';
+my $datrev = '$Date: 2017-04-27 10:51:00 +0200 (Thu, 27 Apr 2017) $';
 my $tlmgrrevision;
 my $prg;
 if ($svnrev =~ m/: ([0-9]+) /) {
@@ -4349,7 +4349,7 @@
       }
     }
     print "Already installed platforms are marked with (i)\n";
-    print "You can add new platforms with: tlmgr platform add ARCH1 ARCH2...\n";
+    print "You can add new platforms with: tlmgr platform add PLAT1 PLAT2...\n";
     return ($F_OK | $F_NOPOSTACTION);
   } elsif ($what =~ m/^add$/i) {
     return ($F_ERROR) if !check_on_writable();
@@ -5513,7 +5513,7 @@
 
   } elsif ($arg !~ /^(tlmgr|texmf|updmap)$/) {
     warn "$prg: unknown conf arg: $arg (try tlmgr or texmf or updmap)\n";
-    $ret = $F_ERROR;
+    return($F_ERROR);
 
   } else {
     my ($fn,$cf);
@@ -5533,7 +5533,7 @@
     } else {
       die "Should not happen, conf arg=$arg";
     }
-    my ($key,$val) = @ARGV;
+    my ($key,$val,$str) = @ARGV;
     if (!defined($key)) {
       # show all settings
       if ($cf) {
@@ -5543,13 +5543,101 @@
         }
       } else {
         info("$arg config file $fn not present\n");
-        $ret = $F_WARNING;
+        return($F_WARNING);
       }
     } else {
-      if (!defined($val)) {
+      if ($key eq "auxtrees") {
+        if ($arg eq "texmf") {
+          my $tmfa = 'TEXMFAUXTREES';
+          my $tv = $cf->value($tmfa);
+          if ($val eq "show") {
+            if (defined($tv)) {
+              $tv =~ s/^\s*{//;
+              $tv =~ s/}\s*$//;
+              $tv =~ s/,$//;
+              my @foo = split(',', $tv);
+              print "List of auxiliary texmf trees:\n" if (@foo);
+              for my $f (@foo) {
+                print "  $f\n";
+              }
+              return($F_OK);
+            } else {
+              print "No auxiliary texmf trees defined.\n";
+              return($F_OK);
+            }
+          } elsif ($val eq "add") {
+            if (defined($str)) {
+              if (defined($tv)) {
+                $tv =~ s/^\s*{//;
+                $tv =~ s/}\s*$//;
+                $tv =~ s/,$//;
+                my @foo = split(',', $tv);
+                my @new;
+                my $already = 0;
+                for my $f (@foo) {
+                  if ($f eq $str) {
+                    print "Already registered auxtree: $str\n";
+                    return ($F_WARNING);
+                  } else {
+                    push @new, $f;
+                  }
+                }
+                push @new, $str;
+                $cf->value($tmfa, '{' . join(',', @new) . ',}');
+              } else {
+                $cf->value($tmfa, '{' . $str . ',}');
+              }
+            } else {
+              warning("argument missing for auxtrees add\n");
+              return($F_ERROR);
+            }
+          } elsif ($val eq "remove") {
+            if (defined($str)) {
+              if (defined($tv)) {
+                $tv =~ s/^\s*{//;
+                $tv =~ s/}\s*$//;
+                $tv =~ s/,$//;
+                my @foo = split(',', $tv);
+                my @new;
+                my $removed = 0;
+                for my $f (@foo) {
+                  if ($f ne $str) {
+                    push @new, $f;
+                  } else {
+                    $removed = 1;
+                  }
+                }
+                if ($removed) {
+                  if ($#new >= 0) {
+                    $cf->value($tmfa, '{' . join(',', @new) . ',}');
+                  } else {
+                    $cf->delete_key($tmfa);
+                  }
+                } else {
+                  print ("Not defined as auxiliary texmf tree: $str\n");
+                  return($F_WARNING);
+                }
+              } else {
+                print "No auxiliary texmf trees defined, nothing removed\n";
+                return($F_WARNING);
+              }
+            } else {
+              warning("argument missing for auxtrees remove\n");
+              return($F_ERROR);
+            }
+          } else {
+            warning("unknown operation on auxtrees: $val\n");
+            return($F_ERROR);
+          }
+        } else {
+          warning("auxtrees not suitable for $arg\n");
+          return($F_ERROR);
+        }
+      } elsif (!defined($val)) {
         if (defined($opts{'delete'})) {
           if (defined($cf->value($key))) {
-            info("removing setting $arg $key value: " . $cf->value($key) . "from $fn\n");
+            info("removing setting $arg $key value: " . $cf->value($key)
+                 . "from $fn\n"); 
             $cf->delete_key($key);
           } else {
             info("$arg $key not defined, cannot remove ($fn)\n");
@@ -5586,6 +5674,7 @@
       $cf->save;
     }
   }
+  return($ret);
 }
 
 # output various values in same form as texconfig conf.
@@ -7026,16 +7115,16 @@
 =back
 
 =head2 conf [texmf|tlmgr|updmap [--conffile I<file>] [--delete] [I<key> [I<value>]]]
+=head2 conf texmf [--conffile I<file>] auxtrees [show|add|delete] [I<value>]
 
 With only C<conf>, show general configuration information for TeX Live,
 including active configuration files, path settings, and more.  This is
-like the C<texconfig conf> call, but works on all supported platforms.
+like running C<texconfig conf>, but works on all supported platforms.
 
-With either C<conf texmf>, C<conf tlmgr>, or C<conf updmap> given in
-addition, shows all key/value pairs (i.e., all settings) as saved in
-C<ROOT/texmf.cnf>, the user-specific C<tlmgr> configuration file (see
-below), or the first found (via C<kpsewhich>) C<updmap.cfg> file,
-respectively.
+With one of C<conf texmf>, C<conf tlmgr>, or C<conf updmap>, shows all
+key/value pairs (i.e., all settings) as saved in C<ROOT/texmf.cnf>, the
+user-specific C<tlmgr> configuration file (see below), or the first
+found (via C<kpsewhich>) C<updmap.cfg> file, respectively.
 
 If I<key> is given in addition, shows the value of only that I<key> in
 the respective file.  If option I<--delete> is also given, the value in
@@ -7045,29 +7134,33 @@
 If I<value> is given in addition, I<key> is set to I<value> in the 
 respective file.  I<No error checking is done!>
 
+For C<texmf>, an additional subcommand C<auxtrees> allows adding and
+removing arbitrary additional texmf trees, completely under user
+control.  C<texmf auxtrees show> shows the list of additional trees,
+C<texmf auxtrees add> I<tree> adds a tree to the list, and C<texmf
+auxtrees remove> I<tree> removes a tree from the list (if present). This
+works by manipulating the Kpathsea variable C<TEXMFAUXTREES>, in
+C<ROOT/texmf.cnf>.  Example:
+
+  tlmgr conf texmf auxtrees add /my/quick/test/tree
+  tlmgr conf texmf auxtrees remove /my/quick/test/tree
+
 In all cases the file used can be explicitly specified via the option
 C<--conffile I<file>>, in case one wants to operate on a different file.
 
-The PATH value shown is that used by C<tlmgr>.  The directory in which
-the C<tlmgr> executable is found is automatically prepended to the PATH
-value inherited from the environment.
+The C<PATH> value shown is that used by C<tlmgr>.  The directory in
+which the C<tlmgr> executable is found is automatically prepended to the
+PATH value inherited from the environment.
 
-Practical example of changing configuration values: if the execution of
+A practical example of changing configuration values: if the execution of
 (some or all) system commands via C<\write18> was left enabled during
 installation, you can disable it afterwards:
   
   tlmgr conf texmf shell_escape 0
 
-A more complicated example: the C<TEXMFHOME> tree (see the main TeX Live
-guide, L<http://tug.org/texlive/doc.html>) can be set to multiple
-directories, but they must be enclosed in braces and separated by
-commas, so quoting the value to the shell is a good idea.  Thus:
-
-  tlmgr conf texmf TEXMFHOME "{~/texmf,~/texmfbis}"
-
 Warning: The general facility is here, but tinkering with settings in
-this way is very strongly discouraged.  Again, no error checking on
-either keys or values is done, so any sort of breakage is possible.
+this way is strongly discouraged.  Again, no error checking on either
+keys or values is done, so any sort of breakage is possible.
 
 =head2 dump-tlpdb [--local|--remote]
 

Modified: trunk/Master/bin/armhf-linux/eptex
===================================================================
(Binary files differ)

Modified: trunk/Master/bin/armhf-linux/euptex
===================================================================
(Binary files differ)

Modified: trunk/Master/bin/armhf-linux/gregorio
===================================================================
(Binary files differ)

Modified: trunk/Master/bin/armhf-linux/luajittex
===================================================================
(Binary files differ)

Modified: trunk/Master/bin/armhf-linux/luatex
===================================================================
(Binary files differ)

Modified: trunk/Master/bin/armhf-linux/mf
===================================================================
(Binary files differ)

Modified: trunk/Master/bin/armhf-linux/mf-nowin
===================================================================
(Binary files differ)

Modified: trunk/Master/bin/armhf-linux/mflua
===================================================================
(Binary files differ)

Modified: trunk/Master/bin/armhf-linux/mfluajit
===================================================================
(Binary files differ)

Modified: trunk/Master/bin/armhf-linux/pdftex
===================================================================
(Binary files differ)

Modified: trunk/Master/bin/armhf-linux/pmpost
===================================================================
(Binary files differ)

Modified: trunk/Master/bin/armhf-linux/ptex
===================================================================
(Binary files differ)

Modified: trunk/Master/bin/armhf-linux/tex
===================================================================
(Binary files differ)

Modified: trunk/Master/bin/armhf-linux/upmpost
===================================================================
(Binary files differ)

Modified: trunk/Master/bin/armhf-linux/uptex
===================================================================
(Binary files differ)

Modified: trunk/Master/bin/armhf-linux/xdvipdfmx
===================================================================
(Binary files differ)

Modified: trunk/Master/bin/armhf-linux/xetex
===================================================================
(Binary files differ)

Modified: trunk/Master/bin/armhf-linux/xindy.mem
===================================================================
(Binary files differ)

Modified: trunk/Master/bin/armhf-linux/xindy.run
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/support/tex4ebook/README
===================================================================
--- trunk/Master/texmf-dist/doc/support/tex4ebook/README	2017-04-28 21:20:49 UTC (rev 44102)
+++ trunk/Master/texmf-dist/doc/support/tex4ebook/README	2017-04-28 21:21:37 UTC (rev 44103)
@@ -50,7 +50,7 @@
 
 # Command line options
 
--c,--config 
+`-c,--config`
 
 :    specify custom config file for `tex4ht`
 
@@ -69,41 +69,41 @@
   This config file will create `xhtml` file for every section. Note that this
   behaviour is default.
 
--e,--build-file (default nil)  
+`-e,--build-file (default nil)`  
 
-:    Specify make4ht build file^[\url{https://github.com/michal-h21/make4ht\#build-file}].
+:    Specify make4ht build file^[https://github.com/michal-h21/make4ht#build-file].
      Defaulf build file filename is `filename.mk4`, use this option if you use
      different filename.
   
--f,--format (default epub) 
+`-f,--format (default epub)`
 
 :    Output format. epub, epub3 and mobi are supported.
 
--l,--lua
+`-l,--lua`
 
 :    Runs htlualatex instead of htlatex.
 
--m,--mode (default default)
+`-m,--mode (default default)`
 
 :    This set `mode` variable, accessible in the build file. Default supported
      values are `default` and `draft`. In `draft` mode, document is compiled
      only once, instead of three times.
 
--r,--resolution 
+`-r,--resolution`
 
 :    Resolution of generated images, for example math. It should meet resolution
      of target devices, which is usually about 167 ppi.
 
--s,--shell-escape
+`-s,--shell-escape`
 
 :     Enable shell escape in htlatex run. This may be needed if you run external
       commands from your source files.
 
--t,--tidy
+`-t,--tidy`
 
 :     process output html files with `HTML tidy` command^[It needs to be installed separately].
 
--v,--version
+`-v,--version`
 
 :     print version number
 
@@ -110,7 +110,7 @@
  
 # Configuration
 
-`tex4ebook` uses `tex4ht`^[\url{http://www.tug.org/tex4ht/}] for conversion from LaTeX
+`tex4ebook` uses `tex4ht`^[http://www.tug.org/tex4ht/] for conversion from LaTeX
 to html. `tex4ht` is highly configurable using config files. Basic config file
 structure is
 
@@ -121,20 +121,20 @@
     \EndPreamble
 
 Basic info about command configurations can be found in a work-in-progres 
- *tex4ht tutorial*^[\url{https://github.com/michal-h21/helpers4ht/wiki/tex4ht-tutorial}]
-, *tex4ht documentation*^[\url{http://www.tug.org/applications/tex4ht/mn11.html}], 
+ *tex4ht tutorial*^[https://github.com/michal-h21/helpers4ht/wiki/tex4ht-tutorial]
+, *tex4ht documentation*^[http://www.tug.org/applications/tex4ht/mn11.html], 
 and in series of blogposts on CV Radhakrishnan's blog:
-*Configure part 1*^[\url{http://www.cvr.cc/?p=323}], 
-*Configure part 2*^[\url{http://www.cvr.cc/?p=362}], 
-*Low level commands*^[\url{http://www.cvr.cc/?p=482}]. 
+*Configure part 1*^[http://www.cvr.cc/?p=323], 
+*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*^[\url{http://www.cvr.cc/?p=504}].
+*TeX4ht: options*^[http://www.cvr.cc/?p=504].
 
-Great source of tips for `tex4ht` configuring is *tex4ht tag on TeX.sx*^[\url{http://tex.stackexchange.com/questions/tagged/tex4ht}], there is also a *tag for tex4ebook*^[\url{http://tex.stackexchange.com/questions/tagged/tex4ebook}].
+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].
 
 Examples of interesting questions are 
-*including images and fonts in ebooks*^[\url{http://tex.stackexchange.com/a/213165/2891}] 
-or *setting image size in em units instead of pt*^[\url{http://tex.stackexchange.com/a/195718/2891}].
+*including images and fonts in ebooks*^[http://tex.stackexchange.com/a/213165/2891] 
+or *setting image size in em units instead of pt*^[http://tex.stackexchange.com/a/195718/2891].
 
 ## Provided configurations
 
@@ -151,6 +151,11 @@
 Type of unique identifier, default type is URI. It is
 used only in epub, it is deprecated for `epub3`
 
+    \Configure{resettoclevels}{list of section types in descending order}
+
+Configure section types which should be included in the `NCX` file. Default
+value is the whole document hiearchy, from `\part` to `\paragraph`.
+
     \Configure{DocumentLanguage}{language code}
 
 Each epub must declare the document language. It is inferred from `babel` main
@@ -198,17 +203,17 @@
 
 `\OpfAddProperty{property type}`
 
-:    add `EPUB3` property for the current file. See *EPUB3 spec*^[\url{http://www.idpf.org/epub/301/spec/epub-publications.html\#sec-item-property-values}]
+:    add `EPUB3` property for the current file. See *EPUB3 spec*^[http://www.idpf.org/epub/301/spec/epub-publications.html#sec-item-property-values]
 
 `\OpfGuide[filename]{title}{type}`
 
 :    Add file to the `<guide>` section in the `OPF` file. See *Where do you    start an ePUB and what is the `<guide>` section of the .OPF
-     file?*^[\url{http://epubsecrets.com/where-do-you-start-an-epub-and-what-is-the-guide-section-of-the-opf-file.php}]
+     file?*^[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 `<guide>` is deprecated in `EPUB 3`.
 
 ## Build files
 
-`tex4ebook` uses `make4ht`^[\url{https://github.com/michal-h21/make4ht}] as a build
+`tex4ebook` uses `make4ht`^[https://github.com/michal-h21/make4ht] as a build
 system. See `make4ht` documentation for details on build files. 
 
 # Troubleshooting
@@ -222,8 +227,8 @@
 if same error as in `tex4ebook` run arises, the problem is in some `tex4ht`
 configuration. Try to identify the source of problem and if you cannot find the
 solution, make minimal example showing the error and ask for help either on
-*tex4ht mailing list*^[\url{http://tug.org/mailman/listinfo/tex4ht}] or on
-*TeX-sx*^[\url{http://tex.stackexchange.com/}]. 
+*tex4ht mailing list*^[http://tug.org/mailman/listinfo/tex4ht] or on
+*TeX-sx*^[http://tex.stackexchange.com/]. 
 
 ## Fontspec
 
@@ -251,7 +256,7 @@
 
 The drawback is that not all characters of the Unicode range are supported with
 `inputenc`. For some solutions of this limitation, see a thread on *tex4ht
-mailing list*^[\url{http://tug.org/pipermail/tex4ht/2013q1/000719.html}]
+mailing list*^[http://tug.org/pipermail/tex4ht/2013q1/000719.html]
 
 Other approach is to use `alternative4ht` package from [helpers4ht](https://github.com/michal-h21/helpers4ht)
 bundle. It works only with Lua backend, but it supports full unicode and you 
@@ -261,7 +266,7 @@
 ## Validation
 
 In case of successful compilation, use command line tool `epubcheck`^[you need
-to install it separately, see \url{https://github.com/IDPF/epubcheck}] to check
+to install it separately, see https://github.com/IDPF/epubcheck] to check
 whether your document doesn't contain any errors.
 
 

Modified: trunk/Master/texmf-dist/doc/support/tex4ebook/changelog.tex
===================================================================
--- trunk/Master/texmf-dist/doc/support/tex4ebook/changelog.tex	2017-04-28 21:20:49 UTC (rev 44102)
+++ trunk/Master/texmf-dist/doc/support/tex4ebook/changelog.tex	2017-04-28 21:21:37 UTC (rev 44103)
@@ -2,6 +2,104 @@
 
 \begin{itemize}
 \item
+  27/04/2017 Version 0.1e
+
+  \begin{itemize}
+  \itemsep1pt\parskip0pt\parsep0pt
+  \item
+    pack the accumulated changes for distribution
+  \item
+    set version number from git tag
+  \end{itemize}
+\item
+  17/01/2017
+
+  \begin{itemize}
+  \itemsep1pt\parskip0pt\parsep0pt
+  \item
+    process duplicate images only once
+  \item
+    check the OPF table for duplicated id attributes
+  \end{itemize}
+\item
+  11/01/2017
+
+  \begin{itemize}
+  \itemsep1pt\parskip0pt\parsep0pt
+  \item
+    pass \texttt{settings} table to the build file.
+  \end{itemize}
+\item
+  19/12/2016
+
+  \begin{itemize}
+  \itemsep1pt\parskip0pt\parsep0pt
+  \item
+    new configuration:
+    \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
+  \item
+    added tidyconf.conf to the Makefile
+  \end{itemize}
+\item
+  22/10/2016
+
+  \begin{itemize}
+  \itemsep1pt\parskip0pt\parsep0pt
+  \item
+    added support for new Make4ht command \texttt{Make:add\_file}
+  \end{itemize}
+\item
+  22/08/2016
+
+  \begin{itemize}
+  \itemsep1pt\parskip0pt\parsep0pt
+  \item
+    fixed incorrect \texttt{\textless{}dc:creator\textgreater{}}
+    generated by \texttt{\textbackslash{}author}
+  \item
+    clean ids in the OPF file if they contain invalid characters at the
+    beginning
+  \end{itemize}
+\item
+  31/07/2016
+
+  \begin{itemize}
+  \itemsep1pt\parskip0pt\parsep0pt
+  \item
+    use monospace font for command line options in order to prevent
+    double hyphens to become dashes by ligaturing
+  \end{itemize}
+\item
+  22/07/2016
+
+  \begin{itemize}
+  \itemsep1pt\parskip0pt\parsep0pt
+  \item
+    removed debugging message when \texttt{-{}-lua} option is used
+  \end{itemize}
+\item
+  07/04/2016
+
+  \begin{itemize}
+  \itemsep1pt\parskip0pt\parsep0pt
+  \item
+    Cut \texttt{\textbackslash{}part} commands to standalone pages
+  \end{itemize}
+\item
+  05/04/2016
+
+  \begin{itemize}
+  \itemsep1pt\parskip0pt\parsep0pt
+  \item
+    bug fix: pages which contained math were arranged before other pages
+  \end{itemize}
+\item
   31/03/2016 Version 0.1d
 
   \begin{itemize}

Modified: trunk/Master/texmf-dist/doc/support/tex4ebook/readme.tex
===================================================================
--- trunk/Master/texmf-dist/doc/support/tex4ebook/readme.tex	2017-04-28 21:20:49 UTC (rev 44102)
+++ trunk/Master/texmf-dist/doc/support/tex4ebook/readme.tex	2017-04-28 21:21:37 UTC (rev 44103)
@@ -64,7 +64,7 @@
 
 \begin{description}
 \itemsep1pt\parskip0pt\parsep0pt
-\item[-c,--config]
+\item[\texttt{-c,-{}-config}]
 specify custom config file for \texttt{tex4ht}
 \end{description}
 
@@ -87,29 +87,29 @@
 that this behaviour is default.
 
 \begin{description}
-\item[-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[-f,--format (default epub)]
+\item[\texttt{-f,-{}-format (default epub)}]
 Output format. epub, epub3 and mobi are supported.
-\item[-l,--lua]
+\item[\texttt{-l,-{}-lua}]
 Runs htlualatex instead of htlatex.
-\item[-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[-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[-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[-t,--tidy]
+\item[\texttt{-t,-{}-tidy}]
 process output html files with \texttt{HTML tidy} command\footnote{It
   needs to be installed separately}.
-\item[-v,--version]
+\item[\texttt{-v,-{}-version}]
 print version number
 \end{description}
 
@@ -165,6 +165,14 @@
 it is deprecated for \texttt{epub3}
 
 \begin{verbatim}
+\Configure{resettoclevels}{list of section types in descending order}
+\end{verbatim}
+
+Configure section types which should be included in the \texttt{NCX}
+file. Default value is the whole document hiearchy, from
+\texttt{\textbackslash{}part} to \texttt{\textbackslash{}paragraph}.
+
+\begin{verbatim}
 \Configure{DocumentLanguage}{language code}
 \end{verbatim}
 

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	2017-04-28 21:20:49 UTC (rev 44102)
+++ trunk/Master/texmf-dist/doc/support/tex4ebook/tex4ebook-doc.tex	2017-04-28 21:21:37 UTC (rev 44103)
@@ -11,10 +11,11 @@
 \setmainfont{TeX Gyre Schola}
 \fi
 \usepackage{microtype}
+\providecommand\tightlist{\relax}
 
 \title{The \texttt{tex4ebook} package}
 \author{Michal Hoftich\footnote{\url{michal.h21 at gmail.com}}}
-\date{Version 0.1d\\2016/03/31}
+\date{Version \version\\\gitdate}
 \begin{document}
 \maketitle
 \tableofcontents

Added: trunk/Master/texmf-dist/doc/support/tex4ebook/tidyconf.conf
===================================================================
--- trunk/Master/texmf-dist/doc/support/tex4ebook/tidyconf.conf	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/support/tex4ebook/tidyconf.conf	2017-04-28 21:21:37 UTC (rev 44103)
@@ -0,0 +1,4 @@
+show-warnings: no
+numeric-entities:yes
+new-inline-tags:span,a,math,mi, mo, mn ,abs ,and ,annotation ,annotation-xml ,apply ,approx ,arccos ,arccosh ,arccot ,arccoth ,arccsc ,arccsch ,arcsec ,arcsech ,arcsin ,arcsinh ,arctan ,arctanh ,arg ,bind ,bvar ,card ,cartesianproduct ,cbytes ,ceiling ,cerror ,ci ,cn ,codomain ,complexes ,compose ,condition ,conjugate ,cos ,cosh ,cot ,coth ,cs ,csc ,csch ,csymbol ,curl ,declare ,degree ,determinant ,diff ,divergence ,divide ,domain ,domainofapplication ,el ,emptyset ,eq ,equivalent ,eulergamma ,exists ,exp ,exponentiale ,factorial ,factorof ,false ,floor ,fn ,forall ,gcd ,geq ,grad ,gt ,ident ,image ,imaginary ,imaginaryi ,implies ,in ,infinity ,int ,integers ,intersect ,interval ,inverse ,lambda ,laplacian ,lcm ,leq ,limit ,list ,ln ,log ,logbase ,lowlimit ,lt ,maction ,malign ,maligngroup ,malignmark ,malignscope ,math ,matrix ,matrixrow ,max ,mean ,median ,menclose ,merror ,mfenced ,mfrac ,mfraction ,mglyph ,mi ,min ,minus ,mlabeledtr ,mlongdiv ,mmultiscripts ,mn ,mo ,mode ,moment ,momentabout ,mover ,mpadded ,mphantom ,mprescripts ,mroot ,mrow ,ms ,mscarries ,mscarry ,msgroup ,msline ,mspace ,msqrt ,msrow ,mstack ,mstyle ,msub ,msubsup ,msup ,mtable ,mtd ,mtext ,mtr ,munder ,munderover ,naturalnumbers ,neq ,none ,not ,notanumber ,note ,notin ,notprsubset ,notsubset ,or ,otherwise ,outerproduct ,partialdiff ,pi ,piece ,piecewise ,plus ,power ,primes ,product ,prsubset ,quotient ,rationals ,real ,reals ,reln ,rem ,root ,scalarproduct ,sdev ,sec ,sech ,selector ,semantics ,sep ,set ,setdiff ,share ,sin ,sinh ,subset ,sum ,tan ,tanh ,tendsto ,times ,transpose ,true ,union ,uplimit ,variance ,vector ,vectorproduct ,xor ,bdi ,command ,details ,dialog ,summary ,figure ,figcaption ,footer ,header ,mark ,meter ,progress ,ruby ,rt ,rp ,time ,wbr ,altGlyph ,altGlyphDef ,altGlyphItem ,animate ,animateColor ,animateMotion ,animateTransform ,circle ,clipPath ,color-profile ,cursor ,defs ,desc ,ellipse ,feBlend ,feColorMatrix ,feComponentTransfer ,feComposite ,feConvolveMatrix ,feDiffuseLighting ,feDisplacementMap!
  ,feDistantLight ,feFlood ,feFuncA ,feFuncB ,feFuncG ,feFuncR ,feGaussianBlur ,feImage ,feMerge ,feMergeNode ,feMorphology ,feOffset ,fePointLight ,feSpecularLighting ,feSpotLight ,feTile ,feTurbulence ,filter ,font ,font-face ,font-face-format ,font-face-name ,font-face-src ,font-face-uri ,foreignObject ,g ,glyph ,glyphRef ,hkern ,image ,line ,linearGradient ,marker ,mask ,metadata ,missing-glyph ,mpath ,path ,pattern ,polygon ,polyline ,radialGradient ,rect ,script ,set ,stop ,style ,svg ,switch ,symbol ,text ,textPath ,title ,tref ,tspan ,use 
+new-blocklevel-tags: aside,section,article,nav

Modified: trunk/Master/texmf-dist/scripts/tex4ebook/exec_epub.lua
===================================================================
--- trunk/Master/texmf-dist/scripts/tex4ebook/exec_epub.lua	2017-04-28 21:20:49 UTC (rev 44102)
+++ trunk/Master/texmf-dist/scripts/tex4ebook/exec_epub.lua	2017-04-28 21:21:37 UTC (rev 44103)
@@ -133,6 +133,8 @@
 		local dir_part = item:split("/")
 		table.remove(dir_part,#dir_part)
 		local id=table.concat(dir_part,"-")..fname.."_"..ext
+    -- remove invalid characters from id start
+    id = id:gsub("^[%.%-]*","")
 		return "<item id='"..id .. "' href='"..item.."' media-type='"..mimetype.."' />",id
 	end
 	local find_all_files= function(s,r)
@@ -161,13 +163,22 @@
 			local opf_complete = {}
 			table.insert(opf_complete,h_first:read("*all"))
 			local used_html = find_all_files(opf_complete[1])
-			local lg_file = ebookutils.parse_lg(outputfilename..".lg")
-			local used_files = lg_file["files"]
+			-- local lg_file = ebookutils.parse_lg(outputfilename..".lg")
+      -- The lg_file has been already loaded by make4ht, it doesn't make sense to load it again
+      -- Furthermore, it is now possible to add new files from Lua build files
+      local lg_file = Make.lgfile  or ebookutils.parse_lg(outputfilename..".lg")
+			local used_files = {}
+      for _,filename in ipairs(lg_file["files"]) do
+        -- we need to test the filenames in order to prevent duplicates
+        -- filenames are tested without paths, so there may be issues if 
+        -- the same filename is used in different directories. Is that a problem?
+        used_files[filename] = true
+      end
 			--[[for f in lfs.dir("./OEBPS") do
 			--table.insert(used_files,f)
 			--used_files[f] = true
 			end--]]
-			local all_html = find_all_files(table.concat(used_files,"\n"))
+			-- local all_html = find_all_files(table.concat(used_files,"\n"))
 			local outside_spine = {}
 			-- This was duplicated code
 			--[[for i, ext in pairs(all_html) do
@@ -180,6 +191,7 @@
 			end--]]
 			local all_used_files = find_all_files(opf_complete[1],"([%a%d%-%_]+%.[%a%d]+)")
 			local used_paths = {}
+      local used_ids   = {}
 			for _,k in ipairs(lg_file["files"]) do
 				local ext = k:match("%.([%a%d]*)$")
 				local parts = k:split "/"
@@ -188,11 +200,11 @@
 				table.remove(parts,#parts)
 				--table.insert(parts,1,"OEBPS")
 				table.insert(parts,1,outputdir)
-				--print("SSSSS "..fn.." ext .." .. ext)
+				-- print("SSSSS "..fn.." ext .." .. ext)
 				--if string.find("jpg gif png", ext) and not all_used_files[k] then
 				local item,id = lg_item(k) 
 				if item then
-					local path = table.concat(parts)
+         local path = table.concat(parts)
 					if not used_paths[path] then
 						ebookutils.mkdirectories(parts)
 						used_paths[path]=true
@@ -206,20 +218,28 @@
 							print "Tidy: Cannot load tidyconf.conf"
 						end
 					end
-					ebookutils.copy(k, outputdir .. "/"..k)
-					if not all_used_files[fn] then
-						table.insert(opf_complete,item)
-						if allow_in_spine[ext] then 
-						table.insert(outside_spine,id)
-						end
+          if not used_ids[id] then    
+            ebookutils.copy(k, outputdir .. "/"..k)
+            if not all_used_files[fn] then
+              table.insert(opf_complete,item)
+              if allow_in_spine[ext] then 
+                table.insert(outside_spine,id)
+              end
+            end
 					end
+          used_ids[id] = true
 				end
 			end
 			for _,f in ipairs(lg_file["images"]) do
 				local f = f.output
-				local p = lg_item(f)
-				ebookutils.copy(f, outputdir .. "/"..f)
-				table.insert(opf_complete,p)
+        local p, id = lg_item(f)
+        -- process the images only if they weren't registered in lg_file["files"]
+        -- they would be processed twice otherwise
+        if not used_files[f] and not used_ids[id] then
+          ebookutils.copy(f, outputdir .. "/"..f)
+          table.insert(opf_complete,p)
+        end
+        used_ids[id] = true
 			end
 			local end_opf = h_second:read("*all")
 			local spine_items = {}
@@ -283,6 +303,8 @@
 		end
 		print(mimetype)
     local zip = find_zip()
+    -- we need to remove the epub file if it exists already, because it may contain files which aren't used anymore
+    if ebookutils.file_exists(outputfile) then os.remove(outputfile) end
 		print("Pack mimetype " .. os.execute("cd "..basedir.." && "..zip.." -q0X "..outputfile .." ".. mimetype_name))
 		print("Pack metadir "   .. os.execute("cd "..basedir.." && "..zip.." -qXr9D " .. outputfile.." "..metadir_name))
 		print("Pack outputdir " .. os.execute("cd "..basedir.." && "..zip.." -qXr9D " .. outputfile.." "..outputdir_name))
@@ -309,4 +331,4 @@
 		--deldir(outputdir)
 		--deldir(metadir)
 		--os.remove(mimetype)
-	end
+end

Modified: trunk/Master/texmf-dist/scripts/tex4ebook/exec_epub3.lua
===================================================================
--- trunk/Master/texmf-dist/scripts/tex4ebook/exec_epub3.lua	2017-04-28 21:20:49 UTC (rev 44102)
+++ trunk/Master/texmf-dist/scripts/tex4ebook/exec_epub3.lua	2017-04-28 21:21:37 UTC (rev 44103)
@@ -10,6 +10,7 @@
 	outputdir= basedir.."/"..outputdir_name
   input = params.input 
   params.ext = ext
+  params.tex4ht_sty_par = params.tex4ht_sty_par .. ",html5"
   params.packages = params.packages .. string.format("\\Configure{ext}{%s}",ext)
 	return eb.prepare(params)
 end

Modified: trunk/Master/texmf-dist/scripts/tex4ebook/tex4ebook
===================================================================
--- trunk/Master/texmf-dist/scripts/tex4ebook/tex4ebook	2017-04-28 21:20:49 UTC (rev 44102)
+++ trunk/Master/texmf-dist/scripts/tex4ebook/tex4ebook	2017-04-28 21:21:37 UTC (rev 44103)
@@ -52,12 +52,11 @@
 end
 
 if args.version then
-  print "tex4ebook version 0.1d"
+  print "tex4ebook v0.1e"
   return 
 end
 
 if args.lua then
-  print("Mame lua")
   latex_cmd="dvilualatex"
 end
 
@@ -167,7 +166,7 @@
 	build_file = args["build-file"] 
 end
 
-local config_file = ebookutils.load_config(nil, build_file)
+local config_file = ebookutils.load_config(params, build_file)
 
 params["config_file"] = config_file
 --config_file.Make:run()

Modified: trunk/Master/texmf-dist/tex/latex/tex4ebook/tex4ebook-epub3.4ht
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tex4ebook/tex4ebook-epub3.4ht	2017-04-28 21:20:49 UTC (rev 44102)
+++ trunk/Master/texmf-dist/tex/latex/tex4ebook/tex4ebook-epub3.4ht	2017-04-28 21:21:37 UTC (rev 44103)
@@ -52,7 +52,7 @@
 %}
 %\:CheckOption{mathml}
 %\if:Option
-\apptocmd{\a:DviMath}{\opf:registerfilename{\FileName}\opf:add:property{mathml}}{}{}
+\apptocmd{\a:DviMath}{\opf:add:property{mathml}}{}{}%
 %\fi
 \Configure{DOCTYPE}{\HCode{<!DOCTYPE html>\Hnewline}}
 \Configure{xmlns}{}{http://www.w3.org/1999/xhtml}

Modified: trunk/Master/texmf-dist/tex/latex/tex4ebook/tex4ebook.4ht
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tex4ebook/tex4ebook.4ht	2017-04-28 21:20:49 UTC (rev 44102)
+++ trunk/Master/texmf-dist/tex/latex/tex4ebook/tex4ebook.4ht	2017-04-28 21:21:37 UTC (rev 44103)
@@ -161,15 +161,8 @@
 
 % add main html as first file in the OPF
 \opf:registerfilename{\jobname.\:html} % 
-\:CheckOption{epub}
-\if:Option
-%\Configure{crosslinks+}{}{}{}{}
 
-% add explicit table of contents to OPF
-\let\old:toc\a:tableofcontents
-\def\a:tableofcontents{\old:toc\OpfRegisterFile}
-
-
+% register all sectioning commands in the OPF
 \def\patch:sec:register#1{%
 \csgappto{c:#1}{\OpfRegisterFile}%
 }
@@ -183,6 +176,13 @@
 \patch:sec:register{likesubsection}
 \patch:sec:register{likesubsubsection}
 
+\:CheckOption{epub}
+\if:Option
+%\Configure{crosslinks+}{}{}{}{}
+
+% add explicit table of contents to OPF
+\let\old:toc\a:tableofcontents
+\def\a:tableofcontents{\old:toc\OpfRegisterFile}
 % Support for SVG isn't ready
 %\Configure{Picture}{.svg}
 \Configure{Picture}{.png}
@@ -212,6 +212,7 @@
 \ifdef\chapter{%
   %\CutAt{chapter}\CutAt{likechapter}
   % copied from tex4ht-html4.tex
+  \CutAt{part,appendix}
   \CutAt{chapter,likechapter,appendix,part} 
   \CutAt{likechapter,appendix,part} 
   \CutAt{appendix,chapter,likechapter,part} 
@@ -237,23 +238,47 @@
 \def\finishtoclevel#1{%
   \csgdef{nav#1finish}{\d:NavSection}
 }
+
 \def\closelevels#1{
-  \usetoclevels{#1}
-  \resettoclevels{#1}
+  \expandafter\usetoclevels\expandafter{#1}
+  \expandafter\resettoclevels\expandafter{#1}
 }
 % 1 - section type 2 - closed sections 
 
 \def\navsection#1#2{
   \ConfigureToc{#1}%
-  {\closelevels{#2}%
+  {\expandafter\closelevels\expandafter{#2}
   \a:NavSection\Ncx:Mark}
   {\c:NavSection}
   {}
   {\b:NavSection%
-    \finishtoclevel{#1}%
+    \expandafter\finishtoclevel\expandafter{#1}%
   }
 }
 
+% define closing groups for all levels defined in \Configure{resettoclevels}
+
+\def\tmp:processlevel#1{
+  \bgroup
+  \csxdef{tmp:resettoclevels#1}{}
+  \def\do##1{\csxdef{tmp:resettoclevels#1}{\csname tmp:resettoclevels#1\endcsname ##1,like##1,}}
+  \def\tmp:parse##1#1##2\nil{
+    \docsvlist{#1##2}
+  }
+  \expandafter\tmp:parse\a:resettoclevels\nil
+  \egroup
+  \navsection{#1}{\csname tmp:resettoclevels#1\endcsname}
+  % define hierarchy also for starred sections
+  \navsection{like#1}{\csname tmp:resettoclevels#1\endcsname}
+}
+
+% define children levels for each sectioning level
+\def\confnavsections{%
+  \def\do##1{%
+    \tmp:processlevel{##1}%
+  }
+  \expandafter\docsvlist\expandafter{\a:resettoclevels}
+}
 % As reported by Nat Kuhn on http://tex.stackexchange.com/q/209312/2891
 % zeroes were printed as section numbers when secnumdepth counter was set to negative value
 % so just strip then out
@@ -282,6 +307,10 @@
 % Get filename from tableofcontents anchor
 \def\ncx:hfile#1{\Ref{)F\Ref{)Q#1}F-}}
 
+% define toc levels which should be included in the NCX file
+\NewConfigure{resettoclevels}{1}
+\Configure{resettoclevels}{part,chapter,section,subsection,subsubsection,paragraph}
+
 \def\:tempa{%
 \EndP
 \HtmlParOff
@@ -297,7 +326,7 @@
 % so:
 \let\contentsname=\empty
 \Configure{tableofcontents}{\boolfalse{tocnoempty}\Tg<navMap>}{%
-	\usetoclevels{part,chapter,likechapter,section,likesection,subsection,likesubsection,subsubsection,likesubsubsection}%
+	\usetoclevels{part,chapter,likechapter,section,likesection,subsection,likesubsection,subsubsection,likesubsubsection,subsubsubsection,paragraph}%
 	\ifbool{tocnoempty}{}%
 	{\HCode{<navPoint id="mainentry" playOrder="1">
 	  <navLabel><text>Document</text></navLabel>
@@ -304,23 +333,15 @@
 	  <content src="\jobname.\:html" />
 	  </navPoint>}}%
 	\Tg</navMap>}{}{}{}  
-% We need to configure TocLink
-% in navmapsrc is link to the file and anchor, where chapter or section is located
-\def\navmapsrc{}  
-\Configure{TocLink}{\def\navmapsrc{\ncx:hfile{##2}\:sharp ##2}\opf:registerfilename{\ncx:hfile{##2}}##4}
-% Configuraion of entries
-\resettoclevels{part,chapter,section,subsection,subsubsection}
-\navsection{part}{part,chapter,likechapter,section,likesection,subsection,likesubsection,subsubsection,likesubsubsection}
-\navsection{chapter}{chapter,likechapter,section,likesection,subsection,likesubsection,subsubsection,likesubsubsection}
-\navsection{likechapter}{chapter,likechapter,section,likesection,subsection,likesubsection,subsubsection,likesubsubsection}
-\navsection{section}{section,likesection,subsection,likesubsection,subsubsection,likesubsubsection}
-\navsection{likesection}{section,likesection,subsection,likesubsection,subsubsection,likesubsubsection}
-\navsection{subsection}{subsection,likesubsection,subsubsection,likesubsubsection}
-\navsection{likesubsection}{subsection,likesubsection,subsubsection,likesubsubsection}
-\navsection{subsubsection}{subsubsection,likesubsubsection}
-\navsection{likesubsubsection}{subsubsection,likesubsubsection}
- \HtmlParOff
- \Configure{toTocLink}{}{}
+ % We need to configure TocLink
+ % in navmapsrc is link to the file and anchor, where chapter or section is located
+ \def\navmapsrc{}  
+ \Configure{TocLink}{\def\navmapsrc{\ncx:hfile{##2}\:sharp ##2}\opf:registerfilename{\ncx:hfile{##2}}##4}
+ % Configuraion of entries
+ \expandafter\resettoclevels\expandafter{\a:resettoclevels}%
+ \confnavsections%
+ \HtmlParOff%
+ \Configure{toTocLink}{}{}%
  \Configure{NavSection}{\booltrue{tocnoempty}\HCode{\Hnewline<navPoint id="navPoint-}%
   \stepnavpoint\HCode{" playOrder="}%
   \the\navpoint\HCode{">\Hnewline<navLabel>\Hnewline<text>}%
@@ -359,7 +380,7 @@
 {\HCode{<dc:language>}\GetLanguage\HCode{</dc:language>\Hnewline}}
 %Add interface for such things
 {\HCode{<dc:identifier id="dcidid" \print:opf:scheme\a:OpfScheme>\a:UniqueIdentifier}\HCode{</dc:identifier>\Hnewline}}
-\def\and{<\HCode{/dc:creator>\Hnewline<dc:creator>}}
+\def\and{\HCode{</dc:creator>\Hnewline<dc:creator>}}
 {\HCode{<dc:creator>}\Author\HCode{</dc:creator>\Hnewline}}
 %{\HCode{<dc:contributor>\HP:file</dc:contributor>\Hnewline}}
 {\HCode{<dc:date>}\:iso:date\HCode{</dc:date>}}



More information about the tex-live-commits mailing list