formatMath复杂公式图片转文字

第一种方法:template模板中的公式进行转换

第一步引用
<link href="https://cdn.bootcss.com/KaTeX/0.10.2/katex.min.css" rel="stylesheet">
<script src="https://cdn.bootcss.com/KaTeX/0.10.2/katex.min.js"></script>
<script src="https://cdn.bootcss.com/KaTeX/0.10.2/contrib/auto-render.min.js"></script>

第二步 相关文字进行转码
<p>{{@ $value.questionstem | formatFill}}</p>

第三步 给试题父级盒子

<!-- 试题 -->
<div class="testlist"></div>
<!-- 试题 -->

第四步 公式模板
html = formatMath(html); 是重点 。formatFill 对应的是html中的formatFill

//公式模板
template.defaults.imports.formatFill = function(html) {
	var reg = /\{\*{3,}\}/g;
	html = html.replace(reg, '______');
	html = formatMath(html);
	console.log(html);
	return html
}

打印出的html为

<p>如图,在四边形ABCD中,AB=1,BC=1,CD=2,DA=<span class="math inline">$\sqrt{6}$</span> ,且∠ABC=90°,则四边形ABCD的面积是(  )</p><p>
<img src="https://static1.wkzj.com/web/testlibimage/B30386806BC7CB1B7F683F679086B468.png"></p>

第五步

// 复杂公式转换
formatMath = function (html) {
	var reg1 = /<img[^>]*?src="[^"]*?"[^>]*?data-latex[^>]*?>/i;
	var reg2 = /data-latex\b\s*=\s*[\'\"]?([^\'\"]*)[\'\"]?/i;
	var reg3 = /\\hfill/gi;
	while (reg1.test(html)) {
		var latex = reg2.exec(html)[1];
		latex = latex.replace(reg3, '');
		if (latex == '&lt;') {
			latex = '<';
		}
		if (latex == '&gt;') {
			latex = '>';
		}
		html = html.replace(reg1, '$' + latex + '$');
	}
	// 去掉controls
	var reg4 = /controls=""/gi;
	var reg5 = /\$\$/gi;
	html = html.replace(reg4, '');
	html = html.replace(reg5, '');
	return html
};
// 公式渲染
function doSubmit() {
	renderMathInElement($('.testlist')[0], {
		delimiters: [{
				left: "$$",
				right: "$$",
				display: true
			},
			{
				left: "$",
				right: "$",
				display: false
			}
		]
	});
}

第六步加载时渲染

// 题目的渲染
function questionRender(selector, data) {
    var htmls = template('questiontpl', data);
    $(selector).html(htmls);
    slider = mui('#questionArea').slider();
    doSubmit();
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值