Javascript 导出包含MathJax结果的HTML

Javascript 导出包含MathJax结果的HTML,javascript,html,css,mathjax,Javascript,Html,Css,Mathjax,我使用QWebEngineView将标记转换为HTML,并通过MathJax呈现数学公式。所有内容都在中。然后我使用document.getElementById(“占位符”).innerHTML获取HTML内容,其中包含转换后的标记内容和呈现的MathJax输出。最后,我将HTML内容输出到一个HTML文件中 但是,当我通过Chrome打开导出的HTML文件时,公式会丢失CSS样式,如 有没有办法把公式整理好 我曾尝试将MathJax脚本添加到导出的HTML中,但公式将消失 谢谢 在HTML文

我使用
QWebEngineView
将标记转换为HTML,并通过MathJax呈现数学公式。所有内容都在
中。然后我使用
document.getElementById(“占位符”).innerHTML
获取HTML内容,其中包含转换后的标记内容和呈现的MathJax输出。最后,我将HTML内容输出到一个HTML文件中

但是,当我通过Chrome打开导出的HTML文件时,公式会丢失CSS样式,如

有没有办法把公式整理好

我曾尝试将MathJax脚本添加到导出的HTML中,但公式将消失


谢谢

在HTML文件中包含MathJax脚本:

<script src='https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js?config=TeX-MML-AM_CHTML'></script>


由于某些原因,内容会淡出并隐藏,因此需要以下样式来阻止内容被隐藏:

<style>
    .MJXc-processed {
        display: block !important;
    }
</style>

.MJXc已处理{
显示:块!重要;
}

您可以将其添加到HTML文件的

中,您不仅需要获取HTML,还需要获取MathJax的CommonHTML输出jax生成的CSS,以及AssistiveMML扩展名的样式(因为复制的HTML也包括其输出)。下面的代码将为您获取它


队列(函数(){
var styles=document.head.getElementsByTagName(“样式”);
styles=[].slice.call(样式);//转换为数组
while(styles.length){
var sheet=styles.pop();
if(sheet.innerHTML.match(/^(?.mjx-chtml |.mjx_-Assistive\u-MathML)\{/){
document.getElementById(“sheet”).innerHTML+=sheet.innerHTML;
}
}
});
队列(函数(){
var math=document.getElementById(“数学”);
math.parentNode.removeChild(数学);
});
\(x\)

谢谢!但现在它将复制公式三次。我们需要删除重复的
元素。有没有办法不让MathJax重新处理它,而只对它进行样式设置?嗨,当我将代码添加到上面示例中时,它不会正确呈现。有什么办法吗?您可以看到粘贴到此处的代码您的“”标记未关闭,因此e
最后出现在
标记中。这意味着它将不会被执行,并且您的样式表将出错。此外,代码试图用
id=“sheet”
修改样式表,就像在OP的原始代码中一样。用
替换您的
,它将起作用。@Phubab,忘记在我上面的响应中标记您了。