1.3 Fractions and Stacks

  1.3.1 Regular Ones
  1.3.2 With Delimiters
  1.3.3 Code Assignments
  1.3.4 Delimiters

1.3.1 Regular Ones

<..configure jsml-math tex4ht..>+
 \Configure{over}
    {\Send{GROUP}{0}{<.start mfrac.>}<.end frac numerator.>}
    {<.frac enumerator.>\Send{EndGROUP}{0}{<.end mfrac.>}}
 \Configure{atop}
    {\Send{GROUP}{0}{<.start atop.>}<.end atop over.>}
    {<.start atop under.>\Send{EndGROUP}{0}{<.end atop.>}}
 \Configure{above}
    {\Send{GROUP}{0}{<.start above.>}%
     <.end above over.>\o:over:\:gobbleII}
    {<.start above under.>\Send{EndGROUP}{0}{<.end above.>}}
-_-_-

<..configure jsml-math latex..>+
 <.plain,latex mathml.>
 <.mathml latex.>
-_-_-

<..mathml latex..>
 \Configure{frac}
    {\HCode{<.start mfrac.>}}
    {<.end frac numerator.>\Configure{over}{}{}}
    {<.frac enumerator.>}
    {\HCode{<.end mfrac.>}}
-_-_-

<..configure jsml-math amsmath..>
 \Configure{above}
    {\Send{GROUP}{0}{<.start above.>}%
                     <.end above over.>\o:@@over:\:gobbleII}
    {<.start above under.>\Send{EndGROUP}{0}{<.end above.>}}
-_-_-

<..plain,latex mathml..>
 \Configure{choose}
    {\Send{GROUP}{0}{<mover class="choose">%
        \add:description{begin-stack}{\a:speak:choose}%
        <mrow class="mrow-upper">}%
     \HCode{</mrow>}\o:atop:
     \HCode{\add:description{added-description}%
        {\c:speak:choose}<mrow class="mrow-under">}%
     \Send{EndGROUP}{0}%
       {</mrow>\add:description{end-stack}{\b:speak:choose}</mover>}%
    }
-_-_-

<..plain,latex mathml..>+
 \NewConfigure{speak:choose}{3}
 \Configure{speak:choose}
    {<BREAK SIZE="small"/>binomial coefficient<BREAK SIZE="small"/>}
    {<BREAK SIZE="medium"/>}
    {<BREAK SIZE="small"/>choose<BREAK SIZE="small"/>}
-_-_-

<..configure jsml-math amsmath..>+
 \Configure{tbinom}
  {\Send{GROUP}{0}{<mover class="tbinom">%
        \add:description{begin-stack}{\a:speak:choose}%
        <mrow class="mrow-upper">}%
     \HCode{</mrow>}\o:@@abovewithdelims: ..\z@{}%
     \HCode{\add:description{added-description}%
        {\c:speak:choose}<mrow class="mrow-under">}%
     \Send{EndGROUP}{0}%
       {</mrow>\add:description{end-stack}{\b:speak:choose}</mover>}%
    }
-_-_-

<..configure jsml-math amsmath..>+
 \Configure{dbinom}
  {\Send{GROUP}{0}{<mover class="dbinom">%
        \add:description{begin-stack}{\a:speak:choose}%
        <mrow class="mrow-upper">}%
     \HCode{</mrow>}\o:@@abovewithdelims: ..\z@{}%
     \HCode{\add:description{added-description}{\c:speak:choose}<mrow class="mrow-under">}%
     \Send{EndGROUP}{0}%
       {</mrow>\add:description{end-stack}{\b:speak:choose}</mover>}%
    }
-_-_-

<..configure jsml-math amsmath..>+
 \Configure{binom}
  {\Send{GROUP}{0}{<mover class="binom">%
        \add:description{begin-stack}{\a:speak:choose}%
        <mrow class="mrow-upper">}%
     \HCode{</mrow>}\o:@@abovewithdelims: ..\z@{}%
     \HCode{\add:description{added-description}{\c:speak:choose}<mrow class="mrow-under">}%
     \Send{EndGROUP}{0}%
       {</mrow>\add:description{end-stack}{\b:speak:choose}</mover>}%
    }
-_-_-

1.3.2 With Delimiters

<..configure jsml-math tex4ht..>+
 \def\abovewithdelims:III#1#2#3{%
    \def\:temp{#2#3}\def\:tempa{..}\ifx \:temp\:tempa
       \Send{GROUP}{0}{<.start above.>}%
       <.end above over.>\o:over:
       <.start above under.>\Send{EndGROUP}{0}{<.end above.>}
    \else
       \Send{GROUP}{0}%
          {<mo class="mfenced-open"><.lr del 2.></mo>%
           <.start above.>}%
       <.end above over.>\o:over:
       <.start above under.>\Send{EndGROUP}{0}{<.end above.>%
          <mo class="mfenced-close"><.lr del 3.></mo>}
    \fi
    \tmp:dim
  }
-_-_-

<..configure jsml-math tex4ht..>+
 \def\atopwithdelims:III#1#2#3{%
    \def\:temp{#2#3}\def\:tempa{..}\ifx \:temp\:tempa
       \Send{GROUP}{0}{<.start atop.>}%
       <.end atop over.>\o:atop:
       <.start atop under.>\Send{EndGROUP}{0}{<.end atop.>}
    \else
       \Send{GROUP}{0}%
          {<mo class="mfenced-open"><.lr del 2.></mo>%
           <.start atop.>}%
       <.end atop over.>\o:atop:
       <.start atop under.>%
       \Send{EndGROUP}{0}{<.end atop.>%
          <mo class="mfenced-close"><.lr del 3.></mo>}
    \fi
  }
-_-_-

<..configure jsml-math tex4ht..>+
 \def\overwithdelims:III#1#2#3{%
    \def\:temp{#2#3}\def\:tempa{..}\ifx \:temp\:tempa
       \Send{GROUP}{0}{<.start mfrac.>}<.end frac numerator.>\o:over:
       <.frac enumerator.>\Send{EndGROUP}{0}{<.end mfrac.>}
    \else
       \Send{GROUP}{0}%
          {<mo class="mfenced-open"><.lr del 2.></mo>%
           <.start mfrac.>}%
       <.end frac numerator.>\o:over:
       <.frac enumerator.>\Send{EndGROUP}{0}{<.end mfrac.>%
              <mo class="mfenced-close"><.lr del 3.></mo>}
    \fi
  }
-_-_-

<..configure jsml-math amsmath..>+
 \def\abovewithdelims:III#1#2#3{%
    \def\:temp{#2#3}\def\:tempa{..}\ifx \:temp\:tempa
       \Send{GROUP}{0}{<.start above.>}%
       <.end above over.>\o:@@over:
       <.start above under.>\Send{EndGROUP}{0}{<.end above.>}
    \else
       \Send{GROUP}{0}%
          {<mo class="mfenced-open"><.lr del 2.></mo>%
           <.start above.>}%
       <.end above over.>\o:@@over:
       <.start above under.>\Send{EndGROUP}{0}{<.end above.>%
          <mo class="mfenced-close"><.lr del 3.></mo>}
    \fi
    \tmp:dim
  }
-_-_-

<..configure jsml-math amsmath..>+
 \def\atopwithdelims:III#1#2#3{%
    \def\:temp{#2#3}\def\:tempa{..}\ifx \:temp\:tempa
       \Send{GROUP}{0}{<.start atop.>}%
       <.end atop over.>\o:@@atop:
       <.start atop under.>\Send{EndGROUP}{0}{<.end atop.>}
    \else
       \Send{GROUP}{0}%
          {<mo class="mfenced-open"><.lr del 2.></mo>%
           <.start atop.>}%
       <.end atop over.>\o:@@atop:
       <.start atop under.>\Send{EndGROUP}{0}{<.end atop.>%
              <mo class="mfenced-close"><.lr del 3.></mo>}
    \fi
  }
-_-_-

<..configure jsml-math amsmath..>+
 \def\overwithdelims:III#1#2#3{%
    \def\:temp{#2#3}\def\:tempa{..}\ifx \:temp\:tempa
       \Send{GROUP}{0}{<.start mfrac.>}%
       <.end frac numerator.>\o:over:
       <.frac enumerator.>\Send{EndGROUP}{0}{<.end mfrac.>}
    \else
       \Send{GROUP}{0}%
          {<mo class="mfenced-open"><.lr del 2.></mo>%
           <.start mfrac.>}%
       <.end frac numerator.>\o:@@over:
       <.frac enumerator.>\Send{EndGROUP}{0}{<.end mfrac.>%
          <mo class="mfenced-close"><.lr del 3.></mo>}
    \fi
  }
-_-_-

1.3.3 Code Assignments

<..start mfrac..>
 <mfrac>\add:description{begin-end}{\a:speak:fraction}%
 <mrow class="mrow-numerator"\Hnewline>%
-_-_-

<..end frac numerator..>
 \HCode{</mrow>}%
-_-_-

<..frac enumerator..>
 \HCode{\add:description{begin-end}{\c:speak:fraction}
        <mrow class="mrow-enumerator"\Hnewline>}%
-_-_-

<..end mfrac..>
 </mrow>\add:description{begin-end}{\b:speak:fraction}</mfrac>%
-_-_-

<..start atop..>
 <mover class="atop">%
 \add:description{begin-stack}{\a:speak:atop}%
 <mrow class="mrow-upper">%
-_-_-

<..end atop over..>
 \HCode{</mrow>}%
-_-_-

<..start atop under..>
 \HCode{\add:description{added-description}{\c:speak:atop}<mrow class="mrow-under">}%
-_-_-

<..end atop..>
 </mrow>\add:description{end-stack}{\b:speak:atop}</mover>%
-_-_-

<..start above..>
 <.start mfrac.>%
-_-_-

<..end above over..>
 <.end frac numerator.>%
-_-_-

<..start above under..>
 <.frac enumerator.>%
-_-_-

<..end above..>
 <.end mfrac.>%
-_-_-

<..configure jsml-math tex4ht..>+
 \NewConfigure{speak:fraction}{3}
 \Configure{speak:fraction}
    {<BREAK SIZE="small"/><level prefix="begin"
                continued="begin continued fraction">begin
          fraction</level><BREAK SIZE="small"/>}
    {<BREAK SIZE="small"/><level prefix="end"
                continued="end continued fraction">end
          fraction</level><BREAK SIZE="small"/>}
    {<BREAK SIZE="small"/><level prefix="over">%
          over</level><BREAK SIZE="small"/>}
-_-_-

<..configure jsml-math tex4ht..>+
 \NewConfigure{speak:atop}{3}
 \Configure{speak:atop}
    {<BREAK SIZE="small"/>begin stack<BREAK SIZE="small"/>}
    {<BREAK SIZE="small"/>end stack<BREAK SIZE="small"/>}
    {<BREAK SIZE="small"/>over<BREAK SIZE="small"/>}
-_-_-

1.3.4 Delimiters

<..lr del 1..>
 \expandafter
 \ifx \csname \string#1:lr del\endcsname\relax #1\else
      \csname \string#1:lr del\endcsname\fi
-_-_-

<..lr del 2..>
 \expandafter
 \ifx \csname \string#2:lr del\endcsname\relax #2\else
      \csname \string#2:lr del\endcsname\fi
-_-_-

<..lr del 3..>
 \expandafter
 \ifx \csname \string#3:lr del\endcsname\relax #3\else
      \csname \string#3:lr del\endcsname\fi
-_-_-

The following cases in mathml are translated directly to explicit caharacters and so donn’t get there the speech interpretation provided in unicode.4hf.

<..plain,latex mathml..>+
 \Configure{mfenced}{\vert}{\string&\#x007C;}
 \Configure{mfenced}{\{}{\string&\#x007B;}
 \Configure{mfenced}{\}}{\string&\#x007D;}
 \Configure{mfenced}{\lbrace}{\string&\#x007B;}
 \Configure{mfenced}{\rbrace}{\string&\#x007D;}
 \Configure{mfenced}{\rgroup}{\string&\#x0028;}
 \Configure{mfenced}{\lgroup}{\string&\#x0029;}
 \Configure{mfenced}{(}{\string&\#x0028;}
 \Configure{mfenced}{)}{\string&\#x0029;}
 \Configure{mfenced}{[}{\string&\#x0058;}
 \Configure{mfenced}{]}{\string&\#x0059;}
 \Configure{mfenced}{|}{\string&\#x007C;}
 \Configure{mfenced}{\bracevert}{\string&\#x007C;}
 \Configure{mfenced}{\bracevert}{\string&\#x007C;}
-_-_-