% $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>¨</mo>
</mover>
<mo>,</mo>
<mi>ẍ</mi> <mo>,</mo>
<mi>ẍ</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#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