Chapter 4
Utilities

<..Hinclude plain..>
 \ifx \contextversion\Un:def
    \Hinclude{\input #1.4ht}{plain}
    \def\:temp{t}%
    \ifx \eplain\:temp
       \Hinclude{\input #1.4ht}{eplain}
    \fi
    <.include mex.>
    \ifx \d@nger\:UnDef \else
       \let\leftheadline\empty
       \let\rightheadline\empty
       \Hinclude{\input #1.4ht}{manmac}
    \fi
 \else
    \Hinclude{\input #1.4ht}{context}
 \fi
-_-_-

<..Hinclude latex..>
 \Hinclude{\input #1.4ht}{latex}
-_-_-

<..Hinclude plain lib..>
 <.Hinclude util.>
-_-_-

<..Hinclude latex lib..>
 <.Hinclude util.>
-_-_-

<..Hinclude plain + latex lib..>
 <.Hinclude util.>
-_-_-

<..include mex..>
 \def\:temp{M\kern-.111em\lower.6ex\hbox{E}\kern-.075emX}
 \ifx \nM@X\:temp
    \expandafter\ifx\csname emulateplain\endcsname\relax \else
      \Hinclude{\input #1.4ht}{mex}
 \fi\fi
-_-_-

Style files, like xy, may be loaded in latex with \usepackage or \input. The latter case doesn’t leave footprints, hence we need for it an explicitly check. On the other hand, we should avoid duplications.

<..Hinclude util..>
 \expandafter\let\csname tex4ht:4ht\endcsname\empty
 \def\no:dupl#1#2{%
    \expandafter\ifx \csname #1:4ht\endcsname\relax
       \expandafter\let \csname #1:4ht\endcsname\empty
       \expand:after{#2}%
    \fi
 }
-_-_-

<..Hinclude plain lib..>+
 \Hinclude{\def\:temp{\ht:everypar={\setbox0=\lastbox\ht:everypar={}}}%
    \ifx \NoindentAfter\:temp
       \no:dupl{#1}{\expand:after{\input #1.4ht}}\fi}
    {osudeG}
 \Hinclude{\ifx\amstexloaded@\relax
      \no:dupl{#1}{
       \ifx  \Space@\:UnDef   \expand:after{\input #1.4ht} %
       \else                  \input vanilla.4ht  \fi}%
    \fi}
    {amstex}
 \Hinclude{\expandafter\ifx \csname amsppt.sty\endcsname\relax \else
        \no:dupl{#1}{\expand:after{\input #1.4ht}}\fi}
    {amsppt}
 \Hinclude{\ifx \texinfoversion\:UnDef\else
       \no:dupl{#1}{\expand:after{\input texinfo.4ht}}\fi}
    {texinfo}
 \Hinclude{\ifx \thistubstyle\:UnDef\else
       \no:dupl{#1}{\expand:after{\input tugboat.4ht}}\fi}
    {tugboat}
-_-_-

<..Hinclude latex lib..>+
 \Hinclude{\input #1.4ht}{fontmath}
 \Hinclude{\@ifpackageloaded{colortbl}{%
       \no:dupl{array}{\input  array.4ht}%
       \no:dupl{color}{\input  color.4ht}%
       \no:dupl{colortbl}{\input  colortbl.4ht}%
     }{}}{colortbl}
 
 \def\h:input#1.#2.#3!*?: {%
    \:CheckOption{no_#1}\if:Option
       \let\:temp\empty
    \else
       \let\:temp\empty
       \no:dupl{#1}{%
          \openin15 #1.4ht
          \ifeof15
             \:CheckOption{debug}\if:Option
                \:warning{No configuration file for
                    #1.\if .#2.tex\else #2\fi}%
             \fi
             \let\:temp\empty
          \else
             \def\:temp{\input #1.4ht }%
          \fi   \closein15
        }%
    \fi  \:temp}
 \edef\:temp{\noexpand\Hinclude
    {\noexpand\h:input ##1..!*?: }{\@filelist}}
 \:temp
-_-_-

<..Hinclude plain + latex lib..>+
 \Hinclude{\ifx \PsfigVersion\:UnDef \else
       \no:dupl{#1}{\expand:after{\input psfig.4ht}}\fi}
    {psfig}
 \Hinclude{\:CheckOption{#1}
    \if:Option     \no:dupl{#1}{\expand:after{\input #1.4ht}}\fi}
    {pictex}
 \Hinclude{%
    \expandafter\ifx \csname PSTricksLoaded\endcsname\relax\else
                   \no:dupl{#1}{\expand:after{\input #1.4ht}}\fi}
    {pstricks}
 \Hinclude{%
    \ifx \:DraCatCodes\:UnDef \else
                   \no:dupl{#1}{\expand:after{\input #1.4ht}}\fi}
    {dratex}
 \Hinclude{%
    \ifx \xyloaded\:UnDef \else
                   \no:dupl{#1}{\expand:after{\input #1.4ht}}\fi}
    {xy}
 
 \Hinclude{%
    \ifx \epsfsetgraph\:UnDef \else
                   \no:dupl{#1}{\expand:after{\input #1.4ht}}\fi}
    {epsf}
 
 \Hinclude{%
    \ifx \diagram@help@messages\:UnDef \else
                   \no:dupl{#1}{\expand:after{\input #1.4ht}}\fi}
    {diagrams}
 
 \Hinclude{%
    \ifx \figvisu\:UnDef \else
                   \no:dupl{#1}{\expand:after{\input #1.4ht}}\fi}
    {fig4tex}
 
 \Hinclude{}
    {pctable}
 \Hinclude{%
    \:CheckOption{xhtml}\if:Option \fi}
    {xhtml}
 \Hinclude{\:CheckOption{#1}
       \if:Option\else   \:CheckOption{ShowFont}\fi
       \if:Option\else   \:CheckOption{frames-}\fi
       \if:Option\else   \:CheckOption{frames}\fi
       \if:Option\else   \:CheckOption{image-maps}\fi
       \if:Option\else   \:CheckOption{java}\fi
       \if:Option\else   \:CheckOption{javascript}\fi
       \if:Option \no:dupl{#1}{\expand:after{\input #1.4ht}}\fi}
    {th4}
 \Hinclude{\ifx \sethebrew\:UnDef\else \ifx \ArabTeX\:UnDef\else
       \no:dupl{#1}{\expand:after{\input hebtex.4ht}}\fi \fi}
    {hebtex}
-_-_-

<..pctex table 4ht..>
 \ifx \BeginTable\:UnDef \else\ifx \EndTable\:UnDef \else
 \expandafter\ifx \csname !ttBeginTable\endcsname\relax\else
   \no:dupl{#1}{\input #1.4ht}%
 \fi\fi\fi
-_-_-