tex4ebook 中 boldmath 后跟上标或下标的问题

tex4ebook 中 boldmath 后跟上标或下标的问题

latex 文件

\documentclass{amsbook}
\begin{document}
    $\mathbf{x}^y$
\end{document}

当编译时

tex4ebook -f epub3 test "mathml"

产生以下数学运算:

<math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" > 
<mstyle mathvariant="bold"><mi>x</mi><msup><mrow></mstyle></mrow><mrow><mi>y</mi></mrow></msup></math>

打开和关闭标签不匹配,这是不正确的 HTML,并导致错误:

 DOM parsing of test.xhtml failed

$\mathbf{x}'$(实际上是上标)和下标也会发生类似的错误。

一个简单的解决方法是将表达式括在上标或下标之前,如下所示

${\mathbf{x}}^y$
${\mathbf{x}}'$
${\mathbf{x}}_0$

但原始表达应该可以工作,因为它是合法的 LaTeX。

答案1

不幸的是,如果没有适当的分组,TeX4ht 无法支持上标和下标。您唯一可以尝试的就是预处理输入文件并添加分组。例如,使用以下 Lua 文件:

for line in io.lines() do
  -- regex that reads command that contains just text
  local command= "(\\.-{[^{]-})"
  line = line:gsub(command .. "%^", "{%1}^") -- fix \mathrm{a}^...
  line = line:gsub("%^"..command, "^{%1}") -- fix ...^\mathrm{a}
  line = line:gsub(command .. "_", "{%1}_") -- fix \mathrm{a}_...
  line = line:gsub("_"..command, "_{%1}") -- fix ..._\mathrm{a}
  line = line:gsub(command .. "'", "{%1}'") -- fix \mathrm{a}'...
  print(line)
end

此脚本读取标准输入并输出修改后的代码。例如,它替换以下输入:

$\mathbf{x}^y$
$\mathbf{x}'$
$\mathbf{x}^\mathbf{y}$
$\mathbf{x}_\mathbf{y}$

输出如下:

${\mathbf{x}}^y$
${\mathbf{x}}'$
${\mathbf{x}}^{\mathbf{y}}$
${\mathbf{x}}_{\mathbf{y}}$

您可以tex4ebook使用以下方式执行它:

texlua fix_scripts.lua < test.tex | tex4ebook -f epub3 -j test - "mathml"

结果如下:

在此处输入图片描述

相关内容