tex4ht 中的内联方程式问题

tex4ht 中的内联方程式问题

我的线方程是:

$k'^4_{i}$

我期待着这个

$k^{\prime 4}_{i}$

如何改变'\prime分组所有事物。怎么做?

答案1

这取决于您用来显示数学的方式。如果您使用依赖于正确 LaTeX 输入的方法来插入 HTML 或 MathML 标签,则您的示例将无法工作。TeX4ht 使用 TeX 扩展来插入标签,因此它无法分析您的源代码并尝试猜测您的意图。因此默认方法或 MathML 不适用。

不过,你也可以使用其他方法。其中一种方法并不推荐,那就是使用图片来做数学题。这种方法有很多缺陷,最重要的是图片没有与基线对齐,所以在段落中看起来可能很糟糕。

这里有一个MWE

\documentclass{article}
\begin{document}
Here is the correct input: $k^{\prime 4}_{i}$. 
This is the original input: $k'^4_{i}$.
\end{document}

您可以尝试使用以下方法将其转换为 SVG 图像:

make4ht sample.tex "pic-m,svg"

结果如下:

在此处输入图片描述

另一种可能性是保持你的数学输入不被转换并让 MathJax 来转换它:

make4ht sample.tex "mathjax"

结果如下:

在此处输入图片描述

你可以看到它看起来好多了。缺点是很难添加对自定义命令,我认为您会用到。

您还可以使用脚本预处理您的输入文件,该脚本会将您的原始输入更改为正确的输入,然后使用管道将其传递给 make4ht。

以下是这样的脚本filter.lua

for line in io.lines() do
  line = line:gsub("%'%^(.-)%_", "^{\\prime %1}_")
  print(line)
end

它使用简单的正则表达式将您的输入更改为正确的输入。您可以使用以下命令将其与 make4ht 一起使用:

texlua filter.lua < sample.tex | make4ht -j sample - "mathml,mathjax"

-j选项用于命名输出文件,这是必需的,因为输入来自管道。文件名位置使用的破折号告诉 make4ht 从标准输入读取输入。

我们使用 MathJax 来渲染 MathML,因为并非所有浏览器都支持 MathML。此方法适用于自定义命令,因此可能最适合您的用例。

结果如下:

在此处输入图片描述

您可以看到它与

相关内容