我想问你关于“加倍字母”的问题,同时用Mathjax复制页面。
然后我在记事本上收到:∫x2dx= 2x +C∫x2dx= 2x + C
所以它复制两次相同的公式。
在这里,当我复制Mathjax公式然后我在记事本中收到:(x + 1)2 =?
所以这里复制公式正确,它没有复制加倍。
这是我的问题 - 这是什么原因,第一页给出了双重公式同时复制?这对我来说是个大问题,因为谷歌在第一页上阅读公式也“两次”。我该如何修复这个问题?
(我不能把链接放到这些页面上,因为我的声誉太低了)
答案 0 :(得分:2)
这是由MathJax的AssistiveMML extension引起的,它将视觉隐藏但可访问的MathML与MathJax的输出一起注入DOM。
虽然MathML片段获得user-select:none
(以防止复制和粘贴),但并非所有浏览器都支持此CSS功能。
作为读者,您可以通过Accessibility>下的MathJax菜单(righ / cmd-单击表达式)禁用扩展名。 Assisitve MathML。
答案 1 :(得分:1)
您可以添加此脚本以将MathJax元素直接复制为LaTeX或MML!它使用jQuery,但你可以手动删除它:
var MathJaxRevertRendering = function(html){
var $ = jQuery;
var stencil = $('<div>' + html + '</div>');
var replaceMathJax = function(){
if ($(this).parents('.mjx-chtml').length) return;
var math = $(this).find('math');
if (math.length){
var latex = math.find('annotation[encoding="LaTeX"]');
if (latex.length){
$(this).replaceWith( '$$' + $.trim(latex.html()) + '$$');
}else{
$(this).replaceWith( math[0].outerHTML );
}
}
};
if (stencil.find('.mjx-chtml').length){
stencil.find('.MathJax_Preview,script').remove();
stencil.find('.mjx-chtml').each(replaceMathJax);
html = stencil.html();
}
return html;
};
document.addEventListener('copy', function(e){
var getSelectionHtml = function() {
var html = "";
if (typeof window.getSelection != "undefined") {
var sel = window.getSelection();
if (sel.rangeCount) {
var container = document.createElement("div");
for (var i = 0, len = sel.rangeCount; i < len; ++i) {
container.appendChild(sel.getRangeAt(i).cloneContents());
}
html = container.innerHTML;
}
} else if (typeof document.selection != "undefined") {
if (document.selection.type == "Text") {
html = document.selection.createRange().htmlText;
}
}
return html;
};
var html = getSelectionHtml();
var htmlLatexed = MathJaxRevertRendering(html);
if (html != htmlLatexed){
e.clipboardData.setData('text/html', htmlLatexed);
var removeHTML = true;
e.clipboardData.setData('text/plain', htmlLatexed.split(/(<math)|(<\/math>)/).reduce(function(buffer, val){
if (!val) return buffer;
if (val == '<math' || val == '</math>'){
removeHTML = !removeHTML;
buffer += val;
}else{
buffer+=removeHTML ? jQuery('<div>'+val+'</div>').text() : val;
}
return buffer;
}, ''));
e.preventDefault();
}
});
然后,任何使用MathJax元素在您的网站上复制内容的人:将其粘贴到任何编辑器时都会看到数学格式良好。