<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
  </head>
  <body style="word-wrap: break-word; -webkit-nbsp-mode: space;
    -webkit-line-break: after-white-space; " bgcolor="#FFFFFF"
    text="#000000">
    Hi Karl, <br>
    <br>
    Sorry for taking so long to get back.<br>
    <div>
      <div><font class="Apple-style-span" color="#000000"><br>
        </font><br>
        <blockquote>                How do I test if there are no side
          effects in the generated output files?<br>
        </blockquote>
      </div>
      <br>
      <div><br>
        My ad-hock testing approach:</div>
      <div>0.  set \version macro to a fixed string in common.tex. <br>
      </div>
      <div><br>
      </div>
      <div>1.  (before patch)</div>
      <div><span class="Apple-tab-span" style="white-space:pre">        </span>run
        make all</div>
      <div><span class="Apple-tab-span" style="white-space:pre">        </span>commit
        all files to git</div>
      <div>2. apply patch</div>
      <div><br>
      </div>
      <div>3. <br>
            run clean + cleaning manually<br>
            run make all</div>
      <div><span class="Apple-tab-span" style="white-space:pre">        </span>git
        diff</div>
      <div><br>
      </div>
      <div>I did not try to diff against TeX Live, but against the
        version before a patch.</div>
      <div>To minimize the noise, I set \version to \versionDebug (fixed
        string) in common.tex. </div>
      <div>To exit from Makefile upon first error,  I set
        "errorstopmode"  in Makefile and "-e" switch for shell scripts
        (xhlatex, etc.)</div>
      <div><br>
      </div>
      <br>
      <blockquote type="cite">
        <div><br>
          <blockquote>    "mktex4ht.cnf (and/or some other)"<br>
               has two different recipes.<br>
             <br>
            <br>
            It would be much nicer if we could separate out the content
            so that the<br>
            mutual recursion was removed.  I.e., a new file that
            generates<br>
            mktex4ht.cnf separately -- run that first, then cond4ht,
            then tex4ht.<br>
            Except that doesn't look possible.  But the current setup
            just seems<br>
            fundamentally wrong.<br>
          </blockquote>
          <br>
        </div>
      </blockquote>
      <div><br>
      </div>
      <div>In current setup tex4ht-4ht.tex generates mktex4ht.cnf file.</div>
      <div>It is possible to "detach" mktex4ht.cnf from tex4ht-4ht.tex </div>
      <div>and keep it separately. </div>
      <div><br>
      </div>
      <div>mktex4ht.cnf is a list of  \AddFile instructions.</div>
      <div>It is possible to keep it as a plain tex file under VC;</div>
      <div>other option would be, as you say, a new literate file.</div>
      <div><br>
      </div>
      <div>Disadvantage of detaching the mktex4ht.cnf file</div>
      <div>is that new 4ht configuration in tex4ht-4ht file, </div>
      <div>will require manually introducing  entries in mktex4ht.cnf. </div>
      <div><br>
      </div>
      <div>Advantages of  separate mktex4ht.cnf are</div>
      <div>- setup becomes more clear</div>
      <div>-  it would be possible to have 4ht configuration in several
        smaller files, instead of one huge tex4h-4ht.tex</div>
      <div>Cfr.  in ChangeLog:</div>
      <div>
        <div><font class="Apple-style-span" size="2">2016-06-15  Michal
            Hoftich  <<a href="mailto:michal.h21@gmail.com">michal.h21@gmail.com</a>></font></div>
        <div><font class="Apple-style-span" size="2"><br>
          </font></div>
        <div><font class="Apple-style-span" size="2"><span class="Apple-tab-span" style="white-space:pre">    </span>*
            tex4ht-4ht.tex,</font></div>
        <div><font class="Apple-style-span" size="2"><span class="Apple-tab-span" style="white-space:pre">    </span>*
            tex4ht-misc.tex: move definitions for lettrine to
            tex4ht-4ht.tex.</font></div>
        <div><font class="Apple-style-span" size="2"><span class="Apple-tab-span" style="white-space:pre">    </span>*
            Makefile: don't compile tex4ht-misc.tex, it causes
            overwritting of</font></div>
        <div><font class="Apple-style-span" size="2"><span class="Apple-tab-span" style="white-space:pre">    </span>mktex4ht.cnf.</font></div>
        <div><font class="Apple-style-span" size="2"><br>
          </font></div>
        <div><font class="Apple-style-span" size="2"><br>
          </font></div>
        <div>We can also have an another approach for mktex4ht.cnf. </div>
        <div>If we have several literate source files for 4ht
          configuration (e.g., tex4ht-4ht-foo1, tex4ht-4ht-foo2,
          tex4ht-4ht-misc, etc.),</div>
        <div>each of them can generate <jobname>.mktexcnf (or any
          other extension) which can contain blocks of \AddFile
          instructions.</div>
        <div>mktex4ht.cnf  could be generated from *.mktexcnf files
          combining them (as a rule in Makefile)</div>
        <div><br>
        </div>
      </div>
      <div>Meanwhile, my patch uses separate mktex4ht-cnf.tex file,
        which is a renamed mktex4ht.cnf file.</div>
      <div><br>
      </div>
      <br>
      <blockquote>
        <blockquote type="cite">
          <div>I remain unclear as to why all those different \AddFile's
            exist in the<br>
            first place.  What does that number mean, and how does one
            choose what<br>
            number to use?  Argh.<br>
          </div>
        </blockquote>
      </blockquote>
      <div><br>
      </div>
      <div>The number is supposed to be  some kind of
        sorting/classifying. </div>
      <div>I call it class number.</div>
      <div>From tex4ht-cond4ht.tex:</div>
      <div>
        <div><span class="Apple-tab-span" style="white-space:pre">                      </span> 
             <font class="Apple-style-span" size="2">%\AddFile{i}{name}</font></div>
        <div><font class="Apple-style-span" size="2">                   
                     % where i stands for a priority number</font></div>
        <div><font class="Apple-style-span" size="2">                   
                     % in the range 0--9, and name stands for</font></div>
        <div><font class="Apple-style-span" size="2">                   
                     % for a sty/cls file name. </font></div>
        <div><font class="Apple-style-span" size="2"><br>
          </font></div>
      </div>
      <div>It is a mess in those numbers now.</div>
      <div>Probably it would be right to define clear rules for
        assigning class numbers:</div>
      <div>E.g.</div>
      <div><br>
      </div>
      <div>0 - configuration for tex4ht  system itself: Preamble,
        tex4ht, tex4ht2, etex4ht, etc.</div>
      <div>1 - configuration for format files: latex, elatex, etex, etc</div>
      <div>2 - configuration for cls files: book, article, report, etc</div>
      <div>3 - configuration for graphics files: graphicx, graphics, etc</div>
      <div>4 - configuration for input /font encodings</div>
      <div>5 - configuration for ams*packages, </div>
      <div>6 - config for bibliography: biblatex, natbib, etc, ..</div>
      <div>7 - config for latex packages ...</div>
      <div>8 - config for non-latex packages (luatex)...</div>
      <div>9 - config for misc</div>
      <div><br>
      </div>
      <div>List of classes can be easily extended if needed. </div>
      <div><br>
      </div>
      <div>After processing \AddFile entries become \lit{} entries in
        mktex4h.4ht sorted</div>
      <div>according class number; and \LitRow{} entries in mktex4ht.4ht
        sorted alphabetically </div>
      <div>by config name.</div>
      <div><br>
      </div>
      <div><br>
      </div>
      <br>
      <blockquote type="cite">
        <blockquote>
          <div>    Perhaps you have some other TODO items or things that
            do not work...<br>
            <br>
            The ones mentioned are the ones that have been on my mind.
             But it's<br>
            easy to test: do a clean svn checkout in a new directory,
            type make, and<br>
            see what error messages result, or what fails to get made
            (correctly).<br>
          </div>
        </blockquote>
      </blockquote>
      <div><br>
      </div>
      <div>I set up a new linux-mint v.18 machine in virtualbox,
        installed TL2016 (full-scheme) from </div>
      <div>DVD, did a clean svn checkout.</div>
      <div>Running make I got:</div>
      <div>-1-</div>
      <div>[error]  </div>
      <div><font class="Apple-style-span" face="'Andale Mono'">/bin/sh:
          xhlatex: command not found</font></div>
      <div><br>
      </div>
      <div>Add-hoc Makefile fix is to alter PATH variable:</div>
      <div>
        <div><font class="Apple-style-span" face="'Andale Mono'">extra_bin
            := ./</font></div>
        <div><font class="Apple-style-span" face="'Andale Mono'">ht_bin
            := ../bin/ht/unix</font></div>
        <div><font class="Apple-style-span" face="'Andale Mono'">PATH :=
            $(shell echo $$PATH)</font></div>
        <div><font class="Apple-style-span" face="'Andale Mono'">export
            PATH:=$(ht_bin):$(extra_bin):$(PATH)</font></div>
        <div><br>
        </div>
      </div>
      <div>This also fixes issue with xmllint, that takes  a lot time to
        run.</div>
      <div>(perhaps it's better to put  xmllint  in some subfolder
        (./extra-bin) or into parent folder (../extra-bin)?)</div>
      <div><br>
      </div>
      <div>-2-</div>
      <div>[warning]</div>
      <div>
        <div><font class="Apple-style-span" face="'Andale Mono'">System
            call: cp tex4ht-docbook.html ./.</font></div>
        <div><font class="Apple-style-span" face="'Andale Mono'">cp:
            ././tex4ht-docbook.html and tex4ht-docbook.html are
            identical (not copied).</font></div>
        <div><font class="Apple-style-span" face="'Andale Mono'">---
            Warning --- System return: 256</font></div>
        <div><br>
        </div>
        <div>This warrning is issued with "-d./" option for xhlatex
          call.</div>
        <div>The fix is to replace "-d./" with ""  in Makefile:</div>
        <div><font class="Apple-style-span" face="'Andale Mono'">xhlatex
            $< "html,3" "" "-d./" $(tex_1opt)</font></div>
        <div><font class="Apple-style-span" face="'Andale Mono'"><span
              class="Apple-style-span" style="font-family: Helvetica; ">replaced
              with</span></font></div>
        <div><font class="Apple-style-span" face="'Andale Mono'">xhlatex
            $< "html,3" "" "" $(tex_1opt)</font></div>
      </div>
      <div> </div>
      <div>-3-</div>
      <div>[error]</div>
      <div>
        <div><font class="Apple-style-span" face="'Andale Mono'">sh:
            line 0: cd: /home/4/gurari/xtpipes.dir: No such file or
            directory</font></div>
        <div><font class="Apple-style-span" face="'Andale Mono'">mv:
            rename tex4ht.jar to
            /home/4/gurari/tex4ht.dir/texmf/tex4ht/bin/.: No such file
            or directory</font></div>
        <div><font class="Apple-style-span" face="'Andale Mono'">cp:
            /home/4/gurari/xtpipes.dir/xtpipes/lib/*: No such file or
            directory</font></div>
        <div><font class="Apple-style-span" face="'Andale Mono'"><br>
          </font></div>
        <div><font class="Apple-style-span" face="'Andale Mono'"></font><br>
          <font class="Apple-style-span" face="'Andale Mono'">
            <div style="font-family: Helvetica; ">I don't think that
              using an absolute path like /home/4/gurari/xtpipes.dir <br>
              is a good idea.  I would like to put the files locally (in
              a subfolders, e.g. ./xtpipes.dir and ./tex4ht.dir)<br>
              <br>
              <font class="Apple-style-span" face="'Andale Mono'"><span
                  class="Apple-style-span" style="font-family:
                  Helvetica; "></span></font></div>
          </font></div>
      </div>
      <br>
      <blockquote type="cite">
        <blockquote>
          <div>One other thing, not about a clean checkout but about a
            clean<br>
            environment, is that it would be wonderful if *all* derived
            files were<br>
            written to a different directory, not ".".  Right now, just
            figuring out<br>
            what is a source file and what is a derived file is far from
            obvious.<br>
          </div>
        </blockquote>
      </blockquote>
      <div><br>
      </div>
      <div>
        <div>I introduced new targets "deriveddir" for the derived
          (*.4ht, etc) files and </div>
        <div>'htmldir' for the generated html (and *.css, *.png) files <br>
          <br>
          <br>
        </div>
        <div><br>
        </div>
        <div>targets "deriveddir and "htmldir" should be run after "make
          all-debug"</div>
        <div><br>
        </div>
      </div>
      <br>
      <blockquote type="cite">
        <blockquote><br>
          <div> There is a trace of my initial attempts with the wd=
            variable in the<br>
            Makefile; right now, the Java files get written there but
            nothing else.<br>
          </div>
        </blockquote>
      </blockquote>
      <div><br>
      </div>
      <div>Can I replace "work.dir" with "xtpipes.dir" for the clarity?<br>
        Now I got html.dir, derived.dir.<br>
      </div>
      <br>
      <div><br>
        <br>
        I'm attaching a new set of patches:<br>
        <br>
        common-info.diff<br>
                Fix for \CleanComment. <br>
        <br>
        common.diff<br>
             \versionDebug introduced. This serves only for debugging.<br>
            Can be ignored.<br>
        <br>
        tex4ht-4ht.diff<br>
            Detaching mktex4ht.cnf<br>
            Defining \Skipmkfilename which removes mktex4ht.4ht (double)
        generation<br>
        <br>
        tex4ht-cond4ht.diff<br>
            Load mktex4ht-cnf.tex (detached) instead of mktex4ht.cnf.<br>
            Define \ifFirstPass<br>
            Skip executing ''\GetLit\HTML" on first pass<br>
        <br>
        tex4ht-info-html4.diff<br>
            Code unification. Input common.tex and common-info.tex<br>
            instead of dublicating the code.<br>
            <br>
        tex4ht-info-javahelp.diff<br>
            Code unification.    <br>
        <br>
        tex4ht-info-mml.diff<br>
            Code unification.<br>
        <br>
        tex4ht-info.diff<br>
            Code unification.<br>
            <br>
        mktex4ht-cnf.tex (new file)<br>
            It is a copy of mktex4ht.cnf<br>
            <br>
            I see 3 options detaching the mktex4ht.cnf file.<br>
            (1) plain text file under VC maintained manually<br>
            (2) separate literate source  (do not see big difference
        with option 1)<br>
            (3) accumulated from *.mktexncf as described above<br>
        <br>
        <br>
        Makefile (not a patch but the one I used)<br>
            set SHELL variable<br>
            set PATH variable<br>
            set -recorder and errorstopmode in tex_opts variable<br>
            define HTTEX so that tex_opts variable is in effect<br>
            replace "-d./'  with "" for xhlatex calls<br>
            <br>
            define target "targets-debug-ord" which is a list of phony
        targets in a right order.<br>
      </div>
      <div>    amend target "clean"<br>
        <br>
            new targets:<br>
             "htmldir" - move generated html files to html.dir folder<br>
             "deriveddir" - move derived files to derived.dir folder<br>
      </div>
      <div><br>
            run: <br>
            make all-debug-ord<br>
            make htmldir<br>
            make deriveddir <br>
        <br>
            (See folders html.dir and derived.dir)<br>
            <br>
      </div>
      <div><br>
      </div>
    </div>
    <br>
    <br>
    <br>
    <br>
    kind regards, -- deimi<br>
    <pre class="moz-signature" cols="160">
</pre>
  </body>
</html>