TeX4ht:\displaystyle 在 eqnarray、align 和 array 环境中

TeX4ht:\displaystyle 在 eqnarray、align 和 array 环境中

我正在使用tex4ht将 LaTeX 文档转换为 HTML。我想知道如何在 和 环境中获得方程的完整显示eqnarrayalign以下array代码片段说明了我的问题。

\documentclass[12pt,a4paper,twoside,english]{book}

\usepackage{amsmath}

\begin{document}

\begin{eqnarray*}
  \displaystyle
  \omega = \sqrt{\displaystyle\frac{\displaystyle k}{\displaystyle m}} 
  & \displaystyle\mbox{ and } 
  & \displaystyle\gamma = \frac{\displaystyle b}{\displaystyle m}
\end{eqnarray*}

\begin{align*}
  \displaystyle
  \omega = \sqrt{\displaystyle\frac{\displaystyle k}{\displaystyle m}} 
  & \displaystyle\mbox{ and } 
  & \displaystyle\gamma = \frac{\displaystyle b}{\displaystyle m}
\end{align*}

\begin{equation*}
  \left\{
  \begin{array}{rcl}
  \displaystyle
  \omega & = & \sqrt{\displaystyle\frac{\displaystyle k}{\displaystyle m}} \\
  \displaystyle
  \gamma & = & \frac{\displaystyle b}{\displaystyle m}
  \end{array}
  \right.
\end{equation*}

\begin{equation*}
  \omega = \sqrt{\frac{k}{m}}
\end{equation*}

\end{document}

如果我使用 编译它pdflatex,渲染效果很好。但是,使用tex4ht( make4ht --utf8 test.tex "mathml,mathjax") 时,分数会被挤压。HTML 如下所示:

在此处输入图片描述

我尝试放入\displaystyle尽可能多的分数。请注意,当等式处于常规equation环境(第四行)时,它看起来不错。有没有办法在前三行中为这些分数留出更多空间?

答案1

我们需要使用该displaystyle="true"属性来获取分数等的正确大小。我将在 TeX4ht 源中修复它。与此同时,您可以使用以下配置文件,该文件使用原始 TeX4ht 配置并添加了此属性:

\Preamble{xhtml}
\begin{document}
\catcode`\:=11
\makeatletter
\Configure{eqnarray}
   {\HCode{<\a:mathml mtable\Hnewline \a:mathml displaystyle="true" \mml:class="eqnarray\ifx
       \@seqncr\@eqncr\else-star\fi"
       \a:mathml columnalign="right center left" >}}%
   {\HCode{</\a:mathml mtable>}}
   {\HCode{<\a:mathml mtr>}}  {\HCode{</\a:mathml mtr>}}
   {\Tg<\a:mathml mtd\Hnewline \mml:class="eqnarray-\HCol">
      \ifnum \HCol=4
        \Tg<\a:mathml mtext
             \mml:class="eqnarray">\ht:special{t4ht@,&\#x00A0;}%
\PauseMathClass
        \mtexttrue
        \Configure{$}%
  {\EndPauseMathClass \mtextfalse
      \ht:special{t4ht@,}%
\HCode{</\a:mathml mtext><\a:mathml
                                mstyle\Hnewline \mml:class="math">}}%
  {\HCode{</\a:mathml mstyle><\a:mathml
       mtext \a:@mtext>}\ht:special{t4ht@,&\#x00A0;}%
\PauseMathClass
   \mtexttrue}%
  {}%
\Configure{()}%
  {\EndPauseMathClass \mtextfalse
      \ht:special{t4ht@,}%
\HCode{</\a:mathml mtext><\a:mathml
                                mstyle\Hnewline \mml:class="math">}$}%
  {$\HCode{</\a:mathml mstyle><\a:mathml
       mtext \a:@mtext>}\ht:special{t4ht@,&\#x00A0;}%
\PauseMathClass
   \mtexttrue}%
  {}%
%
      \fi}
   {\ifnum \HCol=4 \mtextfalse
      \EndPauseMathClass\ht:special{t4ht@,}%
\Tg</\a:mathml mtext>\fi
      \Tg</\a:mathml mtd>}

\def\:tempc#1#2{%
   \ConfigureEnv{#1}
     {\def\end:al:env{}\ifmmode\else
       \ifvmode\else \def\end:al:env{\par\ShowPar\IgnoreIndent}\fi\fi}
     {\end:al:env }
     {}{}%
   \Configure{#1}
   {\IgnorePar
    \ifvmode \EndP  \else \EndP  \HCode{<!--tex4ht:inline-->}\fi
    \ifmathml
       \Tg<\a:mathml mrow>\def\end:mathalign{\Tg</\a:mathml mrow>}%
    \else
       \Configure{@math}{%\a:mathml
 display="block"
}\DviMath
       \def\end:mathalign{\EndDviMath \DisplayMathfalse}%
       \DisplayMathtrue
    \fi
    \HCode{<\a:mathml mtable\Hnewline
                \a:mathml columnalign="left" \a:mathml displaystyle="true" \mml:class="#2">}}
   {\HCode{</\a:mathml mtable>}\end:mathalign }
   {\HCode{<\a:mathml mtr>}}    {\HCode{</\a:mathml mtr>}}
   {\HCode{<\a:mathml mtd\Hnewline
      \ifodd\HCol \a:mathml  columnalign="right" \fi
%
      \mml:class="align-\ifnum \HCol>\maxfields@ label\else
         \ifodd\HCol\space  odd\else     even\fi
       \fi">}}
   {\HCode{\ifodd\HCol\space\else
       <\a:mathml mspace width="2em"/>\fi
</\a:mathml mtd>}}}
\:tempc{align}{align}
\:tempc{alignat}{alignat}
\:tempc{xalignat}{xalignat}
\:tempc{xxalignat}{xxalignat}
\:tempc{flalign}{flalign}
\:tempc{align*}{align-star}
\:tempc{alignat*}{alignat-star}
\:tempc{xalignat*}{xalignat-star}
\:tempc{flalign*}{flalign-star}

\Configure{halignTB<>}{array}{\HCode{\Hnewline
   \a:mathml equalrows="false"
   \ifx\columnlines\empty\else\a:mathml columnlines="\columnlines" \fi
   \a:mathml equalcolumns="false" \a:mathml class="array" \a:mathml displaystyle="true" }<>\HAlign}


\makeatother
\catcode`\:=12
\EndPreamble

结果如下:

在此处输入图片描述

相关内容