% $Id: tex4ht-unicode.tex 1617 2024-12-15 15:18:36Z karl $
% latex tex4ht-unicode   or   xhlatex tex4ht-unicode "html,3,sections+"
%
% Copyright 2009-2024 TeX Users Group
% Copyright 1998-2009 Eitan M. Gurari
% Released under LPPL 1.3c+.
% See tex4ht-cpright.tex for license text.

\ifx \HTML\UnDef
  \def\HTML{unicode}
  \def\CONFIG{\jobname}
  \def\MAKETITLE{\author{Eitan M. Gurari}}
  \def\next{\input mktex4ht.4ht  \endinput}
  \expandafter\next
\fi

\input{common.tex}
\input{common-code.tex}
\input{tex4ht-cpright.tex}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\Needs{"ls -l tex4ht-*.tex > ls-links.log"}
\openin15=ls-links.log
\ifeof15 \else \closein15
\bgroup
  \catcode`\-=13
  \def-#1tex4ht-{\bgroup \catcode`\-=12
     \def-##1.tex{\egroup
          [\Link[tex4ht\string-##1.html]{}{}##1\EndLink]}
     -}
 \input ls\string-links.log
\egroup
\fi
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%




\Link[http://www.hclrss.demon.co.uk/unicode/]{}{}Alan Wood's Unicode Resources\EndLink




%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{General}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\Link[http://lists.w3.org/Archives/Public/www-math/]{}{}mailing list\EndLink

\section{Unicode Values}

See also
\Link[http://www.unicode.org/Public/UNIDATA/NamesList.txt]{}{}unicode alias names\EndLink

\<plain,latex unicode\><<<
\def\UAacute{00C1}
\def\UCacute{0106}
\def\UDacute{010E}
\def\UEacute{00C9}
\def\UGacute{01F4}
\def\UIacute{00CD}
\def\ULacute{0139}
\def\UNacute{0147}
\def\UOacute{00D3}
\def\URacute{0154}
\def\USacute{015A}
\def\UUacute{00DA}
\def\UYacute{00DD}
\def\UZacute{0179}
\def\Uacute{00B4}
\def\Uaacute{00E1}
\def\Ucacute{0107}
\def\Udacute{010F}
\def\Ueacute{00E9}
\def\Ugacute{01F5}
\def\Uiacute{00ED}
\def\Ulacute{013A}
\def\Unacute{0144}
\def\Uoacute{00F3}
\def\Uracute{0155}
\def\Usacute{015B}
\def\Uuacute{00FA}
\def\Uyacute{00FD}
\def\Uzacute{017A}
\def\Ujacute{FFFD}
\def\UJacute{FFDD}


\def\UAbar{0100}
\def\UCbar{FFFD}
\def\UDbar{FFFD}
\def\UEbar{0112}
\def\UIbar{012A}
\def\ULbar{FFFD}
\def\UNbar{FFFD}
\def\UObar{014C}
\def\URbar{FFFD}
\def\USbar{FFFD}
\def\UTbar{FFFD}
\def\UUbar{016A}
\def\UYbar{FFFD}
\def\UZbar{FFFD}
\def\Uabar{0101}
\def\Ubar{00A7}
\def\Ucbar{FFFD}
\def\Uebar{0113}
\def\Uibar{012B}
\def\Unbar{FFFD}
\def\Uobar{014D}
\def\Urbar{FFFD}
\def\Uubar{016B}
\def\Uybar{FFFD}
\def\Ubreve{02D8}

\def\UCcheck{010C}
\def\UEcheck{011A}
\def\URcheck{0158}
\def\UScheck{0160}
\def\UTcheck{0164}
\def\UZcheck{017D}
\def\Uccheck{010D}
\def\Ucheck{02C7}
\def\Uecheck{011B}
\def\Uncheck{0148}
\def\Uocheck{00F4}
\def\Uscheck{0161}
\def\Uucheck{0159}
\def\Uzcheck{017E}

\def\UAddot{00C4}
\def\UOddot{00D6}
\def\UUddot{00DC}
\def\Uaddot{00E4}
\def\Uddot{00A8}
\def\Uoddot{00F6}
\def\Uuddot{00FC}

\def\UUodot{016E}

\def\UAgrave{00C0}
\def\Uagrave{00E0}
\def\Ugrave{0060}

\def\UOhat{00D4}

\def\Utilde{0098}

\def\UAuml{00C4}
\def\UEuml{00CB}
\def\UIuml{00CF}
\def\UOuml{00D6}
\def\UUuml{00DC}
\def\UYuml{0178}
\def\Uauml{00E4}
\def\Ueuml{00EB}
\def\Uiuml{00EF}
\def\Uouml{00F6}
\def\Uuml{00A8}
\def\Uuuml{00FC}
\def\Uyuml{00FF}
>>>


\section{Odd Ends}

\<xmlns\><<<
xmlns="http://www.w3.org/1999/xhtml"
>>>





\subsection{TeX Engine}

The \verb'\trap:base' is to catch empty bases of exponents like, e.g.,
in \verb'$a^{^b}$'.







\<?\><<<
\def\MathRow#1{%
  \Configure{\expandafter\:gobble\string#1*}{*}%
     {<|.mrow\Hnewline
        class="\expandafter\:gobble\string#1">}{</|.mrow>}%
     {\Configure{\expandafter\:gobble\string#1}{}{}{}{}}#1}%
>>>


\<recall dvimath par\><<<
\sv:ignore
>>>

\<sv dvimath par\><<<
\edef\sv:ignore{\if:nopar
   \noexpand\IgnorePar\else \noexpand\ShowPar\fi}%
>>>


The \verb'\MathRow' requests a \verb'<|.mrow\Hnewline>...</|.mrow>', instead of the contributions
of \verb'\mathop', \verb'\mathrel',...., for the next parameter.





\subsection{latex.ltx}













\section{Unicode}


\<unicode\><<<
% unicode.4ht (|version), generated from |jobname.tex
% Copyright 2009-2024 TeX Users Group
% Copyright |CopyYear.1998. Eitan M. Gurari
|<TeX4ht copywrite|>
>>>


\<configure unicode latex\><<<
|<shared unicode|>
|<plain,latex unicode|>
|<plain,latex math symbols|>
|<latex math symbols|>
|<latex text symbols|>
\def\:nbsp{\ifx\EndPicture\:UnDef\protect\leavevmode\ht:special{t4ht@+\string&{35}x00A0{59}}\a:HChar\else\leavevmode\nobreak\ \fi}
>>>

\<configure unicode plain\><<<
|<shared unicode|>
|<plain,latex unicode|>
|<plain,latex math symbols|>
|<plain,fontmath math symbols|>
|<plain math symbols|>
>>>

\<configure unicode amsmath\><<<
\ifx \mathdisplay@@pop\:UnDef
  \ifx \emdf@La\:UnDef
     |<amsmath pre 2000|>
  \else
     |<amsmath jan 2000|>
  \fi
\else
  |<amsmath jul 2000|>
\fi
\:CheckOption{new-accents}     \if:Option \else
  |<old amsmath accents|>
\fi
>>>

\<amsmath jan 2000\><<<
|<amsmath jul 2000|>
>>>



\<amsmath jul 2000\><<<
\def\:tempc{\arrowfill@ \relax \relax \rightarrow}
\HLet\rightarrowfill@\:tempc
\def\:tempc{\arrowfill@ \leftarrow \relax \relax}
\HLet\leftarrowfill@\:tempc
\def\:tempc{\arrowfill@ \relax \relax {\mathchar"3224}}
\HLet\leftrightarrowfill@\:tempc
>>>

\<amsmath pre 2000\><<<
\HLet\:tempc\rightarrowfill@
\pend:defI\:tempc{\bgroup \let\relbar=\relax}
\append:defI\:tempc{\egroup}
\HLet\rightarrowfill@\:tempc
\let\:tempc\leftarrowfill@
\pend:defI\:tempc{\bgroup \let\relbar=\relax}
\append:defI\:tempc{\egroup}
\HLet\leftarrowfill@\:tempc
\def\:tempc#1{\bgroup
  \let \relbar =\relax \m@th
  \setboxz@h {$#1\relax $}\ht \z@ \z@ $#1\mathord {\mathchar"3224}%
  \mkern -6mu\cleaders \hbox {$#1\mkern -2mu\copy \z@ \mkern -2mu$}\hfill
  \mkern -6mu\box \z@ $\egroup}
\HLet\leftrightarrowfill@\:tempc
>>>


\<old amsmath accents\><<<
\Configure{accent}\dddot\dddot{{}{}}
   {\a:accents{}{#1}}    {\b:accents{dddot}{#1}{#2}}
\Configure{accent}\ddddot\ddddot{{}{}}
   {\a:accents{}{#1}}    {\b:accents{ddddot}{#1}{#2}}
\def\:dddot:over{\mathord{\HCode{...}}}
\def\:ddddot:over{\mathord{\HCode{....}}}
>>>


Three ways to apply \verb+ddots{x}+:

\begin{verbatim}
<mover accent="true">
  <mi>x</mi>
  <mo>&#x00A8;</mo>
</mover>
<mo>,</mo>
<mi>x&#x0308;</mi>  <mo>,</mo>
<mi>&#x1E8D;</mi>
\end{verbatim}



 \<configure unicode amsart\><<<
     |<amsart + amsppt + amsproc unicode|>
>>>


 \<configure unicode amsppt\><<<
     |<amsart + amsppt + amsproc unicode|>
\ifx \EnditemitemList\:UnDef
  |<itemitem 0.0|>
\fi
>>>

\<itemitem 0.0\><<<
\Configure{itemitem}{}{}{\par\leavevmode}{}
>>>

 \<configure unicode amsproc\><<<
     |<amsart + amsppt + amsproc unicode|>
>>>


Used to have also a \verb'\special{t4ht@[}...\special{t4ht@]}',
where the specials asked to igore the enclosed
content. It is provided for getting `realistic' measurements in mathml
applets. a candidadte for delition.

\<plain,latex unicode\><<<

% This will be redefined in mathml.4ht to produce a better markup
\def\unicode:mathop#1{\mathop{#1}}

\:CheckOption{new-accents}     \if:Option \else
  |<old unicode accents|>
  \ifx \mathml:on\:UnDef
% this configuration causes wrong rendering of accents in the default TeX4ht
% math output - accented text, like vectors is converted without accents
% we will rather use the default configuration, which produces pictures
% in the text mode, accents seems to work fine with or without this configuration
  \iffalse % we use \iffalse, because simple commenting off didn't work
     \Configure{accents}
       {\ifmmode \expandafter\mathord\fi
        {|<temp hcode accents|>%
        \ht:special{t4ht@[}x\ht:special{t4ht@]}}}
       {\ifmmode \expandafter\mathord\fi
         {\HCode{<span class='accent#1'>}#3\HCode{</span>}}}
  \fi
  \else
     \:warning{unicode.4ht loaded after mathml.4ht}
  \fi
  \expand:after{\Configure{accent}}\csname OT1\string\b\endcsname
   \b{|<bar below codes|>{}{}}
     {\a:accents{}{#1}}     {\b:accents{b}{#1}{#2}}
  \def\:vec:over{\ifmmode\expandafter\unicode:mathop\fi{\x:unicode{2192}}}
  \def\:grave:over{\ifmmode\expandafter\unicode:mathop\fi{\x:unicode{0060}}}
  \def\:acute:over{\ifmmode\expandafter\unicode:mathop\fi{\x:unicode{00B4}}}
  \def\:hat:over{\ifmmode\expandafter\unicode:mathop\fi{\x:unicode{005E}}}
  \def\:widehat:over{\ifmmode\expandafter\unicode:mathop\fi{\x:unicode{005E}}}
  \def\:tilde:over{\ifmmode\expandafter\unicode:mathop\fi{\x:unicode{007E}}}
  \def\:widetilde:over{\ifmmode\expandafter\unicode:mathop\fi{\x:unicode{007E}}}
  \def\:bar:over{\ifmmode\expandafter\unicode:mathop\fi{\x:unicode{00AF}}}
  \def\:breve:over{\ifmmode\expandafter\unicode:mathop\fi{\x:unicode{02D8}}}
  \def\:dot:over{\ifmmode\expandafter\unicode:mathop\fi{\x:unicode{02D9}}}
  \def\:ddot:over{\ifmmode\expandafter\unicode:mathop\fi{\x:unicode{00A8}}}
  \def\:uml:over{\ifmmode\expandafter\unicode:mathop\fi{\x:unicode{00A8}}}
  \def\:ring:over{\ifmmode\expandafter\unicode:mathop\fi{\x:unicode{02DA}}}
  \def\:Huml:over{\ifmmode\expandafter\unicode:mathop\fi{\x:unicode{02DD}}}
  \def\:check:over{\ifmmode\expandafter\unicode:mathop\fi{\x:unicode{02C7}}}
  \def\:d:under{\ifmmode\expandafter\unicode:mathop\fi{\x:unicode{02D9}}}
  \def\:cedil:under{\ifmmode\expandafter\unicode:mathop\fi{\x:unicode{00B8}}}
  \def\:b:under{\ifmmode\expandafter\unicode:mathop\fi{\x:unicode{00AF}}}
  \def\:udot:over{\ifmmode\expandafter\unicode:mathop\fi{\x:unicode{0361}}} % inverted breve exists only as combined character
\fi
>>>


\<plain,latex unicodeNO\><<<
\Configure{AA}{\ifmmode \expandafter\mathord\fi
                {\x:unicode{212B}}}  |%angstrom|%
>>>

\<configure unicode latex\><<<
\:CheckOption{new-accents}     \if:Option \else
  |<old T1 unicode accents|>
  \expand:after{\Configure{accent}}\csname T1\string\b\expandafter\endcsname
  \csname T1\string\b\endcsname{|<bar below codes|>{}{}}
     {\a:accents{}{#1}}     {\b:accents{b}{#1}{#2}}
\fi
>>>






\<temp hcode accents\><<<
\leavevmode
\if !#1!\ht:special{t4ht@+&\#x#2;}%
\else \expandafter \ifx\csname U#2#1\endcsname\relax
   \ht:special{t4ht@+&{35}x#2;}%
\else
   \ht:special{t4ht@+&{35}x\csname U#2#1\endcsname;}%
\fi \fi x%
>>>

The special replaces the `x' character.

%    {\ht:special{t4ht@+\string&#2#1;}#2}
\section{Configured Symbols}




\<plain,latex math symbols\><<<
\Configure{L}                     {\x:unicode{0141}}
\Configure{l}                     {\x:unicode{0142}}
>>>

\<plain,fontmath math symbols\><<<
\Configure{Longrightarrow}        {\x:unicode{27F9}}
\Configure{Longleftarrow}         {\x:unicode{27F8}}
\Configure{bowtie}                {\x:unicode{22C8}}
\Configure{doteq}                 {\x:unicode{2250}}
\Configure{cong}                  {\x:unicode{2245}}
\Configure{ddots}                 {\x:unicode{22F1}}
\Configure{hookleftarrow}         {\x:unicode{21A9}}
\Configure{hookrightarrow}        {\x:unicode{21AA}}
\Configure{longleftarrow}         {\x:unicode{27F5}}
\Configure{longleftrightarrow}    {\x:unicode{27F7}}
\Configure{Longleftrightarrow}    {\x:unicode{27FA}}
\Configure{longmapsto}            {\x:unicode{27FC}}
\Configure{longrightarrow}        {\x:unicode{27F6}}
\Configure{mid}                   {\x:unicode{2223}}
\Configure{models}                {\x:unicode{22A7}}
\Configure{mapsto}                {\x:unicode{21A6}}
\Configure{neq}                   {\x:unicode{2260}}
\Configure{notin}                 {\x:unicode{2209}}
\Configure{vdots}                 {\x:unicode{22EE}}
\Configure{angle}                 {\x:unicode{2220}}
\Configure{rightleftharpoons}     {\x:unicode{21CC}}
\Configure{leftrightharpoons}     {\x:unicode{21CB}}
>>>

\<amsmath, amstex.sty\><<<
\Configure{longleftarrow}         {\x:unicode{2190}}
\Configure{longrightarrow}        {\x:unicode{2192}}
>>>


\<latex math symbols\><<<
>>>



\<plain math symbols\><<<
\Configure{cdots}                 {\x:unicode{22EF}}
\Configure{ldots}                 {\x:unicode{2026}}
>>>

\<configure unicode fontmath\><<<
\Configure{mathellipsis}          {\textellipsis}
\Configure{cdots}                 {\x:unicode{22EF}}
\Configure{hbar}                  {\x:unicode{210F}}
|<plain,fontmath math symbols|>
>>>


\<configure unicode amsmath\><<<
\Configure{@cdots}                {\x:unicode{22EF}}
\Configure{iint}                  {\x:unicode{222C}}
\Configure{iiint}                 {\x:unicode{222D}}
\Configure{iiiint}                {\iint\iint}
\Configure{idotsint}              {\int\cdots\int}
\Configure{doteq}                 {\x:unicode{2250}}
|<amsmath, amstex.sty|>
>>>



\<configure unicode amsthm\><<<
\Configure{qedsymbol}{\x:unicode{25A1}}
>>>

\<configure unicode amsldoc\><<<
\Configure{qedsymbol}{\x:unicode{25A1}}
>>>


\<configure unicode amstex1\><<<
|<amsmath, amstex.sty|>
>>>


\<amsmath, amstex.sty\><<<
\Configure{dotsc}                 {\x:unicode{2026}}
\Configure{dotso}                 {\x:unicode{2026}}
>>>




\<configure unicode revsymb\><<<
\Configure{REV@lesssim }{\x:unicode{2272}}
\Configure{REV@gtrsim }{\x:unicode{2273}}
\Configure{openone }{\x:unicode{1D7D9}}
\Configure{altsuccsim }{\x:unicode{227F}}
\Configure{altprecsim }{\x:unicode{227E}}
\Configure{corresponds }{\x:unicode{225C}}
>>>


\section{Accents}


\<acute codes\><<<
A{00C1}C{0106}D{010E}E{00C9}G{01F4}I{00CD}L{0139}N{0143}%
O{00D3}R{0154}S{015A}U{00DA}Y{00DD}Z{0179}a{00E1}c{0107}%
d{010F}e{00E9}g{01F5}i{00ED}l{013A}n{0144}o{00F3}r{0155}%
s{015B}u{00FA}y{00FD}z{017A}j{FFFD}J{FFDD}\i{00ED}\j{FFFD}%
>>>


\<double acute code\><<<
o{0151}O{0150}U{0170}u{0171}%
>>>




\<grave codes\><<<
A{00C0}E{00C8}I{00CC}N{01F8}O{00D2}U{00D9}W{1E80}%
Y{1EF2}a{00E0}e{00E8}i{00EC}n{01F9}o{00F2}u{00F9}%
w{1E81}y{1EF3}\i{00EC}%
>>>

\<circumflex codes\><<<
A{00C2}E{00CA}I{00CE}O{00D4}U{00DB}a{00E2}e{00EA}%
i{00EE}o{00F4}u{00FB}C{0108}c{0109}G{011C}g{011D}%
H{0124}h{0125}J{0134}j{0135}S{015C}s{015D}W{0174}%
w{0175}Y{0176}y{0177}Z{1E90}z{1E91}\i{00EE}\j{0135}%
>>>

\<tilde codes\><<<
A{00C3}N{00D1}O{00D5}a{00E3}n{00F1}o{00F5}I{0128}%
i{0129}U{0168}u{0169}V{1E7C}v{1E7D}E{1EBC}e{1EBD}%
Y{1EF8}y{1EF9}\i{0129}%
>>>


\<diaeresis codes\><<<
H{1E26}h{1E27}W{1E84}w{1E85}X{1E8C}x{1E8D}%
t{1E97}A{00C4}E{00CB}I{00CF}O{00D6}U{00DC}%
a{00E4}e{00EB}i{00EF}o{00F6}u{00FC}y{00FF}%
Y{0178}\i{00EF}%
>>>

\<cedilla codes\><<<
K{0136}k{0137}L{013B}l{013C}N{0145}n{0146}%
R{0156}r{0157}S{015E}s{015F}T{0162}t{0163}%
E{0228}e{0229}D{1E10}d{1E11}H{1E28}h{1E29}%
C{00C7}c{00E7}G{0122}g{0123}%
>>>

\<dot above codes\><<<
C{010A}c{010B}E{0116}e{0117}G{0120}g{0121}%
I{0130}Z{017B}z{017C}A{0226}a{0227}O{022E}%
o{022F}B{1E02}b{1E03}D{1E0A}d{1E0B}F{1E1E}%
f{1E1F}H{1E22}h{1E23}M{1E40}m{1E41}N{1E44}%
n{1E45}P{1E56}p{1E57}R{1E58}r{1E59}S{1E60}%
s{1E61}T{1E6A}t{1E6B}W{1E86}w{1E87}X{1E8A}%
x{1E8B}Y{1E8E}y{1E8F}%
>>>

\<breve codes\><<<
g{011F}I{012C}i{012D}O{014E}o{014F}%
U{016C}u{016D}A{0102}a{0103}E{0114}%
e{0115}G{011E}\i{012D}%
>>>


\<caron codes\><<<
C{010C}c{010D}D{010E}d{010F}%
E{011A}e{011B}L{013D}l{013E}N{0147}n{0148}R{0158}r{0159}%
S{0160}s{0161}T{0164}t{0165}Z{017D}z{017E}A{01CD}a{01CE}I{01CF}%
i{01D0}O{01D1}o{01D2}U{01D3}u{01D4}G{01E6}g{01E7}K{01E8}k{01E9}%
j{01F0}H{021E}h{021F}\i{01D0}\j{01F0}%
>>>



\<macron codes\><<<
A{0100}a{0101}E{0112}%
e{0113}I{012A}i{012B}O{014C}o{014D}U{016A}u{016B}Y{0232}%
y{0233}G{1E20}g{1E21}%
>>>

\<ring codes\><<<
A{00C5}a{00E5}U{016E}u{016F}%
>>>

\<dot below codes\><<<
A{1EA0}a{1Ea1}B{1E04}b{1E05}D{1E0C}d{1E0D}%
E{1EB8}e{1EB9}H{1E24}h{1E25}I{1ECA}i{1ECB}%
K{1E32}k{1E33}L{1E36}l{1E37}M{1E42}m{1E43}%
N{1E46}n{1E47}O{1ECC}o{1ECD}R{1E5A}r{1E5B}%
S{1E62}s{1E63}T{1E6C}t{1E6D}U{1EE4}u{1EE5}%
V{1E7E}v{1E7F}W{1E88}w{1E89}Y{1EF4}y{1EF5}%
>>>


\<bar below codes\><<<
B{1E06}b{1E07}%
D{1E0E}d{1E0F}K{1E34}k{1E35}L{1E3A}l{1E3B}N{1E48}n{1E49}%
R{1E5E}r{1E5F}T{1E6E}t{1E6F}Z{1E94}z{1E95}h{1E96}%
>>>


\<old unicode accents\><<<
\expand:after{\Configure{accent}}\csname OT1\string\`\endcsname
   \grave{|<grave codes|>{}{}}
  {\a:accents{}{#1}}  {\b:accents{grave}{#1}{#2}}
\expand:after{\Configure{accent}}\csname OT1\string\'\endcsname
   \acute{|<acute codes|>{}{}}
  {\a:accents{}{#1}}  {\b:accents{acute}{#1}{#2}}
\expand:after{\Configure{accent}}\csname OT1\string\^\endcsname
   \hat{|<circumflex codes|>{}{}}
  {\a:accents{}{#1}}   {\b:accents{hat}{#1}{#2}}
\expand:after{\Configure{accent}}\csname OT1\string\~\endcsname
   \tilde{|<tilde codes|>{}{}}
  {\a:accents{}{#1}}   {\b:accents{tilde}{#1}{#2}}
\Configure{accent}\ddot\ddot{|<diaeresis codes|>{}{34}}
  {\a:accents{}{#1}}     {\b:accents{uml}{#1}{#2}}
\expand:after{\Configure{accent}}\csname OT1\string\"\expandafter
  \endcsname
  \csname OT1\string\"\endcsname{|<diaeresis codes|>{}{34}}
  {\a:accents{}{#1}}     {\b:accents{uml}{#1}{#2}}
\expand:after{\Configure{accent}}\csname OT1\string\r\endcsname
  \mathring{|<ring codes|>{}{}}
  {\a:accents{}{#1}}     {\b:accents{ring}{#1}{#2}}
>>>

\<old unicode accents\><<<
\expand:after{\expand:after{\Configure{accent}}%
  \csname OT1\string\d\endcsname}%
  \csname OT1\string\d\endcsname{|<dot below codes|>{}{}}
  {\a:accents{}{#1}}     {\b:accents{d}{#1}{#2}}
>>>






\<old T1 unicode accents\><<<
\expand:after{\Configure{accent}}\csname T1\string\`\expandafter\endcsname
   \csname T1\string\`\endcsname{|<grave codes|>{}{}}
  {\a:accents{}{#1}}  {\b:accents{grave}{#1}{#2}}
\expand:after{\Configure{accent}}\csname T1\string\'\expandafter\endcsname
   \csname T1\string\'\endcsname{|<acute codes|>{}{}}
  {\a:accents{}{#1}}  {\b:accents{acute}{#1}{#2}}
\expand:after{\Configure{accent}}\csname T1\string\^\expandafter\endcsname
   \csname T1\string\^\endcsname{|<circumflex codes|>{}{}}
  {\a:accents{}{#1}}   {\b:accents{hat}{#1}{#2}}
\expand:after{\Configure{accent}}\csname T1\string\~\expandafter\endcsname
   \csname T1\string\~\endcsname{|<tilde codes|>{}{}}
  {\a:accents{}{#1}}   {\b:accents{tilde}{#1}{#2}}
\Configure{accent}\ddot\ddot{|<diaeresis codes|>{}{34}}
  {\a:accents{}{#1}}     {\b:accents{uml}{#1}{#2}}
\expand:after{\Configure{accent}}\csname T1\string\"\expandafter
  \endcsname
  \csname T1\string\"\endcsname{|<diaeresis codes|>{}{34}}
  {\a:accents{}{#1}}     {\b:accents{uml}{#1}{#2}}
\expand:after{\Configure{accent}}\csname T1\string\r\endcsname
  \mathring{|<ring codes|>{}{}}
  {\a:accents{}{#1}}     {\b:accents{uml}{#1}{#2}}
>>>


\<old T1 unicode accents\><<<
\expand:after{\expand:after{\Configure{accent}}%
  \csname T1\string\d\endcsname}%
  \csname T1\string\d\endcsname{|<dot below codes|>{}{}}
  {\a:accents{}{#1}}     {\b:accents{d}{#1}{#2}}
>>>


The following are also placed under accents configuration.

\<old unicode accents\><<<
\expand:after{\expand:after{\Configure{accent}}%
  \csname OT1\string\c\endcsname}%
  \csname OT1\string\c\endcsname{|<cedilla codes|>{}{}}
  {\a:accents{}{#1}}     {\b:accents{cedil}{#1}{#2}}
\expand:after{\expand:after{\Configure{accent}}%
  \csname OT1\string\t\endcsname}%
  \csname OT1\string\t\endcsname{c{22C5}{}{}}
  {\a:accents{}{#1}}     {\b:accents{udot}{#1}{#2}}
\expand:after{\expand:after{\Configure{accent}}%
  \csname OT1\string\H\endcsname}%
  \csname OT1\string\H\endcsname{|<double acute code|>{}{}}
  {\a:accents{}{#1}}  {\b:accents{Huml}{#1}{#2}}
>>>


\<old T1 unicode accents\><<<
\expand:after{\expand:after{\Configure{accent}}%
  \csname T1\string\c\endcsname}%
  \csname T1\string\c\endcsname{|<cedilla codes|>{}{}}
  {\a:accents{}{#1}}     {\b:accents{cedil}{#1}{#2}}
\expand:after{\expand:after{\Configure{accent}}%
  \csname T1\string\t\endcsname}%
  \csname T1\string\t\endcsname{c{22C5}{}{}}
  {\a:accents{}{#1}}     {\b:accents{udot}{#1}{#2}}
\expand:after{\expand:after{\Configure{accent}}%
  \csname T1\string\H\endcsname}%
  \csname T1\string\H\endcsname{|<double acute code|>{}{}}
  {\a:accents{}{#1}}  {\b:accents{Huml}{#1}{#2}}
>>>

%








The following originally have been defined to be parameter-less.

\<old unicode accents\><<<
\Configure{accent}\dot\dot{|<dot above codes|>{}{}}
   {\a:accents{}{#1}}    {\b:accents{dot}{#1}{#2}}
\expand:after{\Configure{accent}}\csname OT1\string\.\expandafter
   \endcsname
     \csname OT1\string\.\endcsname{|<dot above codes|>{}{}}
   {\a:accents{}{#1}}    {\b:accents{dot}{#1}{#2}}
\expand:after{\Configure{accent}}\csname OT1\string\u\endcsname
   \breve{|<breve codes|>{}{}}
   {\a:accents{}{#1}}    {\b:accents{breve}{#1}{#2}}
\Configure{accent}\vec\vec{{}{}}
   {\a:accents{}{#1}}    {\b:accents{vec}{#1}{#2}}
\expand:after{\Configure{accent}}\csname OT1\string\v\endcsname
   \check{|<caron codes|>{}{}}
   {\a:accents{}{#1}}    {\b:accents{check}{#1}{#2}}
\expand:after{\Configure{accent}}\csname OT1\string\=\endcsname
   \bar{|<macron codes|>{}{}}
   {\a:accents{}{#1}}    {\b:accents{bar}{#1}{#2}}
>>>



\<old T1 unicode accents\><<<
\expand:after{\Configure{accent}}\csname T1\string\.\expandafter\endcsname
   \csname T1\string\.\endcsname{|<dot above codes|>{}{}}
   {\a:accents{}{#1}}    {\b:accents{dot}{#1}{#2}}
\expand:after{\Configure{accent}}\csname T1\string\u\expandafter\endcsname
   \csname T1\string\u\endcsname{|<breve codes|>{}{}}
   {\a:accents{}{#1}}    {\b:accents{breve}{#1}{#2}}
\Configure{accent}\vec\vec{{}{}}
   {\a:accents{}{#1}}    {\b:accents{vec}{#1}{#2}}
\expand:after{\Configure{accent}}\csname T1\string\v\expandafter\endcsname
   \csname T1\string\v\endcsname{|<caron codes|>{}{}}
   {\a:accents{}{#1}}    {\b:accents{check}{#1}{#2}}
\expand:after{\Configure{accent}}\csname T1\string\=\expandafter\endcsname
   \csname T1\string\=\endcsname{|<macron codes|>{}{}}
   {\a:accents{}{#1}}    {\b:accents{bar}{#1}{#2}}
>>>


This adds support for the T5 encoding. Most accents work out of the box,
but carons, urings and umlauts don't. I use a macro, so in theory it could be reused
for other encodings in a similar way as well.

\<old unicode accents\><<<
%%%%
\def\:tempa#1{%
\Configure{accent}\ddot\ddot{|<diaeresis codes|>{}{34}}
  {\a:accents{}{##1}}     {\b:accents{uml}{##1}{##2}}
\expand:after{\Configure{accent}}\csname #1\string\"\expandafter\endcsname
  \csname #1\string\"\endcsname{|<diaeresis codes|>{}{34}}
  {\a:accents{}{##1}}     {\b:accents{uml}{##1}{##2}}
\expand:after{\Configure{accent}}\csname #1\string\r\expandafter\endcsname
  \csname #1\string\r\endcsname{|<ring codes|>{}{}}
  {\a:accents{}{##1}}     {\b:accents{uml}{##1}{##2}}
\expand:after{\Configure{accent}}\csname #1\string\v\expandafter\endcsname
   \csname #1\string\v\endcsname{|<caron codes|>{}{}}
   {\a:accents{}{##1}}    {\b:accents{check}{##1}{##2}}
}
\:tempa{T5}
>>>




%%%%%%%%%%%%%%%%%%
\section{Odd Ends}
%%%%%%%%%%%%%%%%%%

\<configure unicode SIunits\><<<
\Configure{degree}{{\leavevmode\ht:special{t4ht@+&{35}x00B0;}x}}
>>>

\<configure unicode cp852\><<<
\Configure{textdegree}{{\leavevmode\ht:special{t4ht@+&{35}x00B0;}x}}
>>>


\<configure unicode cp850\><<<
\Configure{textdegree}{{\leavevmode\ht:special{t4ht@+&{35}x00B0;}x}}
>>>


\<configure unicode cp862\><<<
\Configure{textdegree}{{\leavevmode\ht:special{t4ht@+&{35}x00B0;}x}}
>>>


\<configure unicode cp1250\><<<
\Configure{textdegree}{{\leavevmode\ht:special{t4ht@+&{35}x00B0;}x}}
>>>


\<configure unicode cp1252\><<<
\Configure{textdegree}{{\leavevmode\ht:special{t4ht@+&{35}x00B0;}x}}
>>>




\<configure unicode cp437\><<<
\Configure{textdegree}{{\leavevmode\ht:special{t4ht@+&{35}x00B0;}x}}
>>>



\<configure unicode cp437de\><<<
\Configure{textdegree}{{\leavevmode\ht:special{t4ht@+&{35}x00B0;}x}}
>>>


\<configure unicode cp1256\><<<
\Configure{textdegree}{{\leavevmode\ht:special{t4ht@+&{35}x00B0;}x}}
>>>


\<configure unicode cp865\><<<
\Configure{textdegree}{{\leavevmode\ht:special{t4ht@+&{35}x00B0;}x}}
>>>

\<configure unicode 8859-6\><<<
\Configure{textdegree}{{\leavevmode\ht:special{t4ht@+&{35}x00B0;}x}}
>>>



%%%%%%%%%%%%%
\subsection{Sistyle}
%%%%%%%%%%%%%


\<configure unicode sistyle\><<<
\Configure{degC}{\leavevmode\ht:special{t4ht@+&{35}x00B0;}xC}
\Configure{degF}{\leavevmode\ht:special{t4ht@+&{35}x00B0;}xF}
\Configure{arcdeg}{\leavevmode\ht:special{t4ht@+&{35}x00B0;}x}
\Configure{arcmin}{\leavevmode\ht:special{t4ht@+&{35}x2032;}x}
\Configure{arcsec}{\leavevmode\ht:special{t4ht@+&{35}x2033;}x}
\Configure{ohm}{\leavevmode\ht:special{t4ht@+&{35}x2126;}x}
\Configure{micro}{\leavevmode\ht:special{t4ht@+&{35}x00B5;}x}
\Configure{angstrom}{\leavevmode\ht:special{t4ht@+&{35}x212B;}x}
>>>


\<par del\><<<
!*?: >>>


\<tag of Tag\><<<
cw:>>>

\<tail\><<<
tail>>>

\<addr for Tag and Ref of Sec\><<<
\xdef\:cursec{|<section html addr|>}%
>>>


\<save catcodes\><<<
\expandafter\edef\csname :RestoreCatcodes\endcsname{%
  \expandafter\ifx \csname :RestoreCatcodes\endcsname\relax\else
     \csname :RestoreCatcodes\endcsname \fi
  \catcode`\noexpand :|=\the\catcode`:%
  \let\expandafter\noexpand\csname :RestoreCatcodes\endcsname|=
                                  \noexpand\UnDefcS}
\catcode`\:|=11
>>>



\verb+\#+ instead of \verb+\HChar{35}+ is problematic
when sent to aux file as \verb+#+.

We had also \verb'\append:def\@begindocumenthook{\HLet\"|=\ddot}' in
babel. It gets russian and brazil into infinite loop.  Why it was
inserted.

\`'\def\x:unicode#1{\HCode{&}\HChar{-35}\HCode{x#1;}}' is not a slution
because the mathml marking on it get confused.

We use \`'\protect' with LaTeX, because compilation can fail in temporary files,
especially in TOC like environments.


\<configure unicode tex4ht\><<<
\ifdefined\protect%
\def\x:unicode#1{\protect\leavevmode\ht:special{t4ht@+\string&{35}x#1{59}}x}
\else
\def\x:unicode#1{\leavevmode\ht:special{t4ht@+\string&{35}x#1{59}}x}
\fi

\Configure{htf}{12}{+}
  {<!--span\Hnewline class="htf-calligraphy"-->}{}{}{}{}{}{<!--/span-->}
>>>






%%%%%%%%%%%%%%%%%%%%%
\section{babel.sty}
%%%%%%%%%%%%%%%%%%%%%

\<configure unicode babel\><<<
\Configure{quotedblbase}{\x:unicode{201E}}
\Configure{quotesinglbase}{\x:unicode{201A}}
>>>


\<configure unicode babel\><<<
\:CheckOption{new-accents}\if:Option\else
\Configure{accent}\bbl@umlauta
  \bbl@umlaute{|<diaeresis codes|>{}{34}}
  {\a:accents{}{#1}}     {\b:accents{uml}{#1}{#2}}
\fi
>>>


\<russian\><<<
\expand:after{\Configure{accent}}\csname OT1\string\"\endcsname
   \ddot{}
  {\a:accents{|<diaeresis codes russian|>}{#1}}
  {\def\:temp{>}\def\:tempa{#2}\ifx \:temp\:tempa\HCode{�}%
   \else \def\:temp{<}\ifx \:temp\:tempa\HCode{�}%
   \else \b:accents{uml}{#1}{#2}\fi\fi}
>>>

\<diaeresis codes russian\><<<
A{00C4}E{00CB}I{00CF}O{00D6}U{00DC}Y{0178}%
a{00E4}e{00EB}i{00EF}\i{00EF}o{00F6}u{00FC}y{00FF}%
>>>






\<greek ldf\><<<
\expand:after{\Configure{accent}}\csname OT1\string\'\endcsname
  \acute{|<acute codes greek|>{}{}}
  {\a:accents{}{#1}}  {\b:accents{acute}{#1}{#2}}
>>>

\<acute codes greek\><<<
|<acute codes|>%
{\@use@text@encoding \@curr@enc a}{03AC}%
{\@use@text@encoding \@curr@enc e}{03AD}%
{\@use@text@encoding \@curr@enc h}{03AE}%
{\@use@text@encoding \@curr@enc i}{03AF}%
{\@use@text@encoding \@curr@enc o}{03CC}%
{\@use@text@encoding \@curr@enc u}{03CD}%
{\@use@text@encoding \@curr@enc w}{03CE}%
>>>




\subsection{Questions}

\begin{verbatim}


\delcode`\<="26830A
\delcode`\>="26930B
\delcode`\|="26A30C
\delcode`\\="26E30F

% N.B. { and } should NOT get delcodes; otherwise parameter grouping fails!

\def\mathhexbox#1#2#3{\leavevmode
 \hbox{$\m@th \mathchar"#1#2#3$}}
\def\dag{\mathhexbox279}
\def\ddag{\mathhexbox27A}
\def\S{\mathhexbox278}
\def\P{\mathhexbox27B}
\end{verbatim}


%%%%%%%%%%%%%
\subsection{Cancellation Operation}
%%%%%%%%%%%%%

Check also `Negated Mathematical Characters' in the mathml specifications.

\<configure unicode fontmath\><<<
\:CheckOption{new-accents}     \if:Option \else
  \Configure{accent}\not\not{|<unicode cancellations|>}%
     {\ht:special{t4ht@+\string&{35}x#1;}=}
     {\ht:special{t4ht@*\string&{35}x0338;}#2}
\fi
>>>

The following symbols have mathrel settings.

\<unicode cancellations\><<<
\equiv{2262}%
\exists{2204}%
\in{2209}%
\ni{220C}%
\vert{2224}%
\parallel{2226}%
\sim{2241}%
\simeq{2244}%
\cong{2247}%
\approx{2249}%
={2260}%
\asymp{226D}%
<{226E}%
>{226F}%
\leq{2270}%
\geq{2271}%
\prec{2280}%
\succ{2281}%
\subset{2284}%
\supset{2285}%
\subseteq{2288}%
\supseteq{2289}%
\vdash{22AC}%
\models{22AD}%
\sqsubseteq{22E2}%
\sqsupseteq{22E3}%
{}{\ht:special{t4ht@+\string&{35}x2044;}x}%
>>>


%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Redefined Macros}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%
\subsection{eurosym}
%%%%%%%%%%%%%

\<configure unicode eurosym\><<<
\Configure{geneuro}{\ht:special{t4ht@+\string&{35}x20AC{59}}x}
\Configure{geneuronarrow}{\ht:special{t4ht@+\string&{35}x20AC{59}}x}
\Configure{geneurowide}{\ht:special{t4ht@+\string&{35}x20AC{59}}x}
>>>


%%%%%%%%%%%%%
\subsection{????}
%%%%%%%%%%%%%


\<latex text symbols\><<<
\def\:tempa{\x:unicode{2026}}
\HLet\textellipsis\:tempa
>>>



\<configure unicode latex\><<<
\Configure{roman}
 {\x:unicode{2170}}{\x:unicode{2174}}{\x:unicode{2179}}
 {\x:unicode{217C}}{\x:unicode{217D}}{\x:unicode{217E}}
 {\x:unicode{217F}}
\Configure{Roman}
 {\x:unicode{2160}}{\x:unicode{2164}}{\x:unicode{2169}}
 {\x:unicode{216C}}{\x:unicode{216D}}{\x:unicode{216E}}
 {\x:unicode{216F}}
>>>











\<CONFIGURE unicode austrian\><<<
>>>
\<CONFIGURE unicode catalan\><<<
>>>

\<configure unicode croatian\><<<
\:CheckOption{new-accents}     \if:Option \else
 |<old unicode accents|>
\fi
>>>


\<CONFIGURE unicode czech\><<<
>>>
\<CONFIGURE unicode danish\><<<
>>>
\<CONFIGURE unicode dutch\><<<
>>>
\<CONFIGURE unicode english\><<<
>>>
\<CONFIGURE unicode esperant\><<<
>>>
\<CONFIGURE unicode estonian\><<<
>>>
\<CONFIGURE unicode finnish\><<<
>>>
\<CONFIGURE unicode francais\><<<
>>>
\<CONFIGURE unicode galician\><<<
>>>
\<CONFIGURE unicode germanb\><<<
>>>

\<configure unicode greek\><<<
|<greek ldf|>
>>>

\<CONFIGURE unicode hebrew\><<<
>>>
\<CONFIGURE unicode ngermanb\><<<
>>>
\<CONFIGURE unicode norsk\><<<
>>>
\<CONFIGURE unicode polish\><<<
>>>
\<CONFIGURE unicode portuges\><<<
>>>

\<configure unicode romanian\><<<
\:CheckOption{new-accents}     \if:Option \else
 |<old unicode accents|>
\fi
>>>


\<CONFIGURE unicode russianb\><<<
>>>
\<CONFIGURE unicode scottish\><<<
>>>

\<configure unicode slovak\><<<
\:CheckOption{new-accents}     \if:Option \else
 |<old unicode accents|>
\fi
>>>


\<configure unicode slovene\><<<
\:CheckOption{new-accents}     \if:Option \else
 |<old unicode accents|>
\fi
>>>




\<configure unicode spanish\><<<
\def\A:charset{charset=iso-8859-1}
\Configure{es@accents}{\es:accents}{}
\def\es:accents#1\b:es@accents{\HCode{&\#x#1;}}
\Configure{es@accent}
 {\string\OT1\string\'}
 {|<acute codes|>}
|<spanish configs|>
>>>



\<spanish configs\><<<
\Configure{guillemotleft}{\HCode{&\#x00AB;}}
\Configure{guillemotright}{\HCode{&\#x00BB;}}
>>>

\<spanish configs\><<<
\Configure{spanish"a}{\HCode{&\#x00AA;}}
\Configure{spanish"o}{\HCode{&\#x00BA;}}
\Configure{spanish"e}{\HCode{e}}
\Configure{spanish"A}{\HCode{A}}
\Configure{spanish"O}{\HCode{O}}
\Configure{spanish"E}{\HCode{E}}
\Configure{spanish'i}{\HCode{&\#x00ED;}}
>>>




\<spanish configs\><<<
\Configure{es@accent}
 {\string\OT1\string\'}
 {|<acute codes|>}
>>>


\<spanish configs\><<<
\Configure{es@accent}
 {\string\OT1\string\"}
 {|<diaeresis codes|>{}{34}}
>>>

\<spanish configs\><<<
\Configure{es@accent}
 {\string\OT1\string\~}
 {|<tilde codes|>}
>>>




\<CONFIGURE unicode swedish\><<<
>>>
\<CONFIGURE unicode turkish\><<<
>>>
\<CONFIGURE unicode ukraineb\><<<
>>>
\<CONFIGURE unicode usorbian\><<<
>>>
\<CONFIGURE unicode welsh\><<<
>>>

\<CONFIGURE unicode CJK\><<<
>>>

\<CONFIGURE unicode hebtex\><<<
>>>

\<CONFIGURE unicode exerquiz\><<<
>>>

%%%%%%%%%%%%%%%%%%
\section{Latin1}
%%%%%%%%%%%%%%%%%%


\<configure unicode latex\><<<
\def\:tempc{\special{t4ht@+\string&{35}xAE{59}}x}
\HLet\textregistered\:tempc
>>>



\endinput