以下是CAS生成的Latex,名为Fricas。
它在 lualatex 中编译成功(但在使用时收到警告\over
),但最终结果看起来正确。
但是当我尝试使用 mathjax 用 tex4ht 编译相同的 latex 文件时,它遇到了问题。此外,如果我不使用 Mathjax,tex4ht 仍然无法正确编译它,它遇到了问题\over
。
我直接从 Linux 终端复制了这个来自 fricas 输出的 Latex,并将其粘贴到我的 Latex 文档中。首先将显示屏幕截图,然后在末尾显示 MWE。
这是我的 Latex 文件中的内容
\documentclass[11pt]{article}%
\usepackage{amsmath}
\begin{document}
\[
{{\log \left( {{{\sqrt {{-{{x} \sp {2}}+1}}}+1}} \right)}
-{\log \left( {{{\sqrt {{-{{x} \sp {2}}+1}}} -1}} \right)}
+{{\left( {2 \ {\log \left( {x} \right)}} -4 \right)} \ {\sqrt {{-{{x} \sp {2}}+1}}}}
+{2 \ x \ {\arcsin \left( {x} \right)} \ {\log \left( {x} \right)}}
-{2 \ x \ {\arcsin \left( {x} \right)}}} \over 2
\]
\end{document}
使用 Lualatex 编译成功
但问题是,当使用
make4ht -ulm default foo.tex "htm,0,mathjax"
这是输出
我不知道为什么 mathjax 不喜欢 Latex。这是原始 HTML
<!DOCTYPE html>
<html lang="en-US" xml:lang="en-US" >
<head><title></title>
<meta charset="utf-8" />
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<link rel="stylesheet" type="text/css" href="foo.css" />
<meta name="src" content="foo.tex" />
<script type="text/x-mathjax-config"> MathJax.Hub.Config({ 'fast-preview': {disabled: true}, TeX: { extensions: ["color.js","AMSmath.js"], equationNumbers: { autoNumber: "AMS" } }, extensions: ["tex2jax.js"], tex2jax: { inlineMath: [ ["\\\(","\\\)"] ], displayMath: [ ['$$','$$'], ["\\[","\\]"] ], processEscapes: true, processEnvironments: true } }); </script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/latest.js?config=TeX-AMS-MML_HTMLorMML"></script>
</head><body
>
<!--l. 14--><p class="noindent" >\[{{\log \left ({{{\sqrt{{-{{x} \sp{2}}+1}}}+1}} \right )} -{\log \left ({{{\sqrt{{-{{x} \sp{2}}+1}}} -1}} \right )} +{{\left ({2 \{\log \left ({x} \right )}} -4 \right )} \{\sqrt{{-{{x} \sp{2}}+1}}}} +{2 \ x \{\arcsin \left ({x} \right )} \{\log \left ({x} \right )}} -{2 \ x \{\arcsin \left ({x} \right )}}} \over 2 \]
</p>
</body>
</html>
当我不使用 mathjax 模式时,tex4ht 输出会稍微好一些,但分数全部丢失了。
make4ht -ulm default foo.tex "htm"
我的问题是:上面 Fricas 生成的数学公式是否在某种程度上无效?除了使用\over
旧的公式之外,还有其他问题导致 mathjax 失败得如此严重吗?我还删除了\over
,但在 mathjax 模式下 tex4ht 的问题仍然存在。因此,似乎除了\over
mathjax 不满意的公式之外,还有其他问题。
我可以去向 Fricas 投诉它的 Latex,但我想先在这里检查一下。
2019 年
答案1
您可以在.cfg
文件中为 MathJax 配置自定义命令声明:
\Preamble{xhtml}
\Configure{@HEAD}{\HCode{
<script>
window.MathJax = {
tex: {
macros: {
\unexpanded{
sp: "^",
sb: "_",
}
}
}
};
</script>
}}
\begin{document}
\EndPreamble
MathJax 仍然对您的代码存在一些问题。我制作了一个更简单的编译示例:
\[
{{\log \left( {{{\sqrt {{-{{x} \sp {2}}+1}}}+1}} \right)}
-{2\ x\,{\arcsin\left({x}\right)}}
}\over 2
\]
但当我改变空间时
-{2\ x\,{\arcsin\left({x}\right)}}
返回您的版本:
-{2\ x\ {\arcsin\left({x}\right)}}
问题又回来了:
我想说这看起来像是 MathJax 的问题。