在 MathJax 模式下使用 TeX4ht 时 $\ln$ 有什么特别之处?

在 MathJax 模式下使用 TeX4ht 时 $\ln$ 有什么特别之处?

这个问题只针对TeX4ht

在 tex4ht 中使用 MathJax 模式时,它无法呈现包含 $\ln$ 的部分标题,但它对我迄今为止尝试过的所有其他符号都有效。

$\ln$ 有何特别之处?

平均能量损失

\documentclass[11pt]{article}%

\usepackage{amsmath}
\begin{document}
This is a document

\section{$\int \arcsin(x) \ln x  \,dx$}
test

\section{$\int \arcsin(x) \sqrt x \,dx$}
test

\section{$\int \arcsin(x) \sin x  \,dx$}

\end{document}

必须按如下方式编译才能看到问题:

 make4ht -ulm default  foo.tex "htm,1,mathjax"

在上面的例子中,分割级别为 1。任何大于 0 的值都表明存在问题。

现在 HTML 如下所示:

Mathematica 图形

不使用mathjaxtex4ht 模式也可以解决问题。

这是生成的原始 HTML。请注意,由before\qopname \relax o{ln}x生成的HTML不会执行任何操作。tex4htmathjax

<!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. 6--><p class="noindent" >This is a document
</p>
<div class="tableofcontents">
<span class="sectionToc" >1 <a
href="#x1-10001" id="QQ2-1-1">\(\int \arcsin (x) \qopname \relax o{ln}x \,dx\)</a></span>
<br />   <span class="sectionToc" >2 <a
href="#x1-20002" id="QQ2-1-2">\(\int \arcsin (x) \sqrt x \,dx\)</a></span>
<br />   <span class="sectionToc" >3 <a
href="#x1-30003" id="QQ2-1-3">\(\int \arcsin (x) \sin x \,dx\)</a></span>
</div>
<h3 class="sectionHead"><span class="titlemark">1   </span> <a
 id="x1-10001"></a>\(\int \arcsin (x) \ln x \,dx\)</h3>
<!--l. 9--><p class="noindent" >test
</p><!--l. 11--><p class="noindent" >
</p>
<h3 class="sectionHead"><span class="titlemark">2   </span> <a
 id="x1-20002"></a>\(\int \arcsin (x) \sqrt x \,dx\)</h3>
<!--l. 12--><p class="noindent" >test
</p><!--l. 14--><p class="noindent" >
</p>
<h3 class="sectionHead"><span class="titlemark">3   </span> <a
 id="x1-30003"></a>\(\int \arcsin (x) \sin x \,dx\)</h3>

</body>
</html>

这是 TeX4ht 的一个错误吗?我现在也会将此报告给 texh4t 错误跟踪,并在此帖子中添加链接(在这里解释起来更容易,因为可以添加屏幕截图)。

我在用TeX Live 2019在 Linux 上。

答案1

amsmath以非稳健的方式定义数学运算符,因此在写入辅助文件之前(例如在写入目录时)会对其进行部分扩展。为了解决这个问题,tex4ht 会加载一个.../texmf-dist/tex/generic/tex4ht/mathjax-latex-4ht.4ht调整这些定义的文件。对我们来说最有趣的部分是:

\fixmathjaxtoc\int
\fixmathjaxtoc\,
\fixmathjaxtoc\sin
\fixmathjaxtoc\cos
\fixmathjaxtoc\tan
\fixmathjaxtoc\arcsin
\fixmathjaxtoc\arccos
\fixmathjaxtoc\arctan
\fixmathjaxtoc\csc
\fixmathjaxtoc\sec
\fixmathjaxtoc\cot
\fixmathjaxtoc\sinh
\fixmathjaxtoc\cosh
\fixmathjaxtoc\tanh
\fixmathjaxtoc\coth
\fixmathjaxtoc\log

(以下均带有\fixmathjaxtoc

所以你问了 有什么特别之处\ln?它不在这个列表中。你能做些什么呢?添加\fixmathjaxtoc\ln到你的文档中。(它必须放在后面, \begin{document}因为 的定义\fixmathjaxtoc加载得相当晚。此外,你想确保你的文档在没有 tex4ht 的情况下仍然有效,因此请首先检查该命令是否确实存在):

\documentclass[11pt]{article}%

\usepackage{amsmath}
\begin{document}
\ifx\fixmathjaxtoc\undefined\else
  \fixmathjaxtoc\ln
\fi
This is a document

\section{$\int \arcsin(x) \ln x  \,dx$}
test

\section{$\int \arcsin(x) \sqrt x \,dx$}
test

\section{$\int \arcsin(x) \sin x  \,dx$}

\end{document}

在此处输入图片描述

相关内容