如何绑定<;span>;在一个<;帆布>;javascript获取数学公式
我有一个小问题要理解如何在画布元素中从现有的KaTex Js文件中实现一个公式,以获得与使用它相同的符号如何绑定<;span>;在一个<;帆布>;javascript获取数学公式,javascript,canvas,katex,Javascript,Canvas,Katex,我有一个小问题要理解如何在画布元素中从现有的KaTex Js文件中实现一个公式,以获得与使用它相同的符号 <span id="mykatex1">...</span> <script> katex.render("f(a,b,c) = (a^2+b^2+c^2)^3", mykatex1); </script> 部门,在哪里 "-A" 是。。。 这就是我的问题。也许存在另一种方法来实现画布区域中的数学函数,但我有点困惑,没有计划如何处理
<span id="mykatex1">...</span>
<script>
katex.render("f(a,b,c) = (a^2+b^2+c^2)^3", mykatex1);
</script>
部门,在哪里
"-A"
是。。。
这就是我的问题。也许存在另一种方法来实现画布区域中的数学函数,但我有点困惑,没有计划如何处理它。顺便说一句这是一个全功能的空白动态图。免费使用。解决方案会很酷,因为计划是在图形区域中也实现相同的符号。thx
<!DOCTYPE html>
<html lang="de">
<head>
<title>Simple guide to using KaTeX</title>
<link rel="stylesheet" href="css/js_formeln__katex.min.css">
<script src="js/katex.min.js"></script>
<style type="text/css">
canvas {
border: 1px solid black;
font: 1.2em "Fira Sans", sans-serif;
}
</style>
</head>
<body>
<p><span id="mykatex1">...</span></p>
<script>
katex.render("f(a,b,c) = (a^2+b^2+c^2)^3", mykatex1);
</script>
<body onload="draw();">
<canvas id="canvas" width="2000" height="1000" ></canvas>
</body>
<script>
function draw() {
var canvas = document.getElementById('canvas');
if (canvas.getContext) {
var ctx = canvas.getContext('2d');
var b_x = 300, b_y = 300;
var b_x_erweitern_um = 600;
var b_y_erweitern_um = 100;
var x = 0, y = 0;
var grid_breite_x_y = 10;
var linewidth_1 = 0.1 , linewidth_2 = 1;
var freier_oberer_rand = 10;
var nach_links_verkleinern = 0;
var nach_rechts_verkleinern = 500;
var d_in = 0.5;
for ( x ; x <= b_x - freier_oberer_rand - nach_links_verkleinern -
nach_rechts_verkleinern + b_x_erweitern_um ; x += grid_breite_x_y ) {
ctx.moveTo( d_in + x + freier_oberer_rand + nach_rechts_verkleinern , freier_oberer_rand );
ctx.lineWidth = linewidth_1;
ctx.lineTo( d_in + x + freier_oberer_rand + nach_rechts_verkleinern , b_x + b_y_erweitern_um);
}
// horizontale Linien
for ( y + freier_oberer_rand ; y <= b_y - freier_oberer_rand + b_y_erweitern_um ; y += grid_breite_x_y ) {
ctx.moveTo( freier_oberer_rand + nach_rechts_verkleinern , d_in + y + freier_oberer_rand);
ctx.lineWidth = linewidth_1;
ctx.lineTo( b_x - nach_links_verkleinern + b_x_erweitern_um , d_in + y + freier_oberer_rand );
}
ctx.strokeStyle = "black";
ctx.stroke();
// Pfeile für x
ctx.beginPath();
ctx.fillStyle = 'black';
ctx.moveTo( b_x - nach_links_verkleinern + b_x_erweitern_um + 10, b_y + b_y_erweitern_um );
ctx.lineTo( b_x - nach_links_verkleinern + b_x_erweitern_um + 5, b_y + b_y_erweitern_um - 2 );
ctx.lineTo( b_x - nach_links_verkleinern + b_x_erweitern_um + 5, b_y + b_y_erweitern_um + 2 );
ctx.lineTo( b_x - nach_links_verkleinern + b_x_erweitern_um + 10, b_y + b_y_erweitern_um );
ctx.fill();
// Pfeile für y
ctx.beginPath();
ctx.moveTo( freier_oberer_rand + nach_rechts_verkleinern , freier_oberer_rand - 10 );
ctx.lineTo( freier_oberer_rand + nach_rechts_verkleinern + 2 , freier_oberer_rand - 5 );
ctx.lineTo( freier_oberer_rand + nach_rechts_verkleinern - 2 , freier_oberer_rand - 5 );
ctx.lineTo( freier_oberer_rand + nach_rechts_verkleinern , freier_oberer_rand - 10 );
ctx.fill();
// Bezeichnung x und y
ctx.beginPath();
ctx.font = '10pt Calibri';
ctx.fillStyle = 'black';
ctx.fillText( "y", freier_oberer_rand + nach_rechts_verkleinern - 10, freier_oberer_rand + 2 );
ctx.fillText( "x", b_x - nach_links_verkleinern + b_x_erweitern_um , b_y + b_y_erweitern_um + 10 );
var h_font = 30;
var p_index_a = 30;
var p_index_b = 90;
var omega = "0x03A9";
var test = "\\frac{d}{dx}\\left[\\int_a^xf(t)dt\\right]=f(x)";
var test2 = encodeURIComponent("\\frac{d}{dx}\\left[\\int_a^xf(t)dt\\right]=f(x)");
ctx.beginPath();
ctx.font = '30px Helvetica, Arial, sans-serif';
ctx.fillStyle = 'lime';
ctx.fillText( "-A", p_index_a, p_index_a );
ctx.fillText( "Aufprallfläche der Teilchen", p_index_b, p_index_a );
ctx.fillStyle = 'red';
ctx.fillText( "-V", p_index_a, p_index_a*2 );
ctx.fillText( "Volumen bei d. Impulsion", p_index_b, p_index_a*2 );
}
else {
alert("Dein Browser unterstützt das <canvas> Element nicht");
}
}
draw();
</script>
使用KaTeX的简单指南
帆布{
边框:1px纯黑;
字体:1.2em“Fira Sans”,无衬线;
}
katex.render(“f(a,b,c)=(a^2+b^2+c^2)^3”,mykatex1);
函数绘图(){
var canvas=document.getElementById('canvas');
if(canvas.getContext){
var ctx=canvas.getContext('2d');
var b_x=300,b_y=300;
var b_x_erweitern_um=600;
var b_y_erweitern_um=100;
变量x=0,y=0;
var grid_breite_x_y=10;
变量线宽_1=0.1,线宽_2=1;
var freier_oberer_rand=10;
var nach_links_verkleinern=0;
var nach_rechts_verkleinern=500;
var d_in=0.5;
为了(x;x将我的评论提升为答案
这个答案并没有回答你所说的问题,而是为你实际试图实现的目标提供了一个替代方案
回到年,为了与中的集成,我做了一些工作,使我的个人KaTeX fork呈现到画布上
直接绘制到画布的主要好处是,它可以与修改画布的其他内容很好地集成,包括剪裁、分层、转换、多个处理步骤、将整个内容保存为单个图像等。此外,将HTML垂直对齐到定义良好的基线非常困难
自从我发布拉取请求后,我就失去了关于它的讨论。最后我知道有一些计划要开发一些中间表示,可以在各种后端进行布局,包括HTML+CSS和Canvas。不确定这项工作进展了多少。我的PR已经关闭,因为它已经过时了。早在年,我就做了一些工作为了与中的as集成,我努力将我的个人KaTeX fork渲染到画布。从那以后我就失去了它的踪迹。我不确定我是否理解您想要做什么,但如果我想在公式的图形上显示公式,我会使用CSS属性“z-index”在公式的DOM元素上,使用透明背景色,我会将其放置在绘制图形的画布上。@MvG Dude。这JS太棒了。这正是我正在搜索的下一个项目。大thx在你身上!@DominiqueFortin thx Dude。它也可以工作,对你来说也有点thx,但这不是我正在搜索的对于
<!DOCTYPE html>
<html lang="de">
<head>
<title>Simple guide to using KaTeX</title>
<link rel="stylesheet" href="css/js_formeln__katex.min.css">
<script src="js/katex.min.js"></script>
<style type="text/css">
canvas {
border: 1px solid black;
font: 1.2em "Fira Sans", sans-serif;
}
</style>
</head>
<body>
<p><span id="mykatex1">...</span></p>
<script>
katex.render("f(a,b,c) = (a^2+b^2+c^2)^3", mykatex1);
</script>
<body onload="draw();">
<canvas id="canvas" width="2000" height="1000" ></canvas>
</body>
<script>
function draw() {
var canvas = document.getElementById('canvas');
if (canvas.getContext) {
var ctx = canvas.getContext('2d');
var b_x = 300, b_y = 300;
var b_x_erweitern_um = 600;
var b_y_erweitern_um = 100;
var x = 0, y = 0;
var grid_breite_x_y = 10;
var linewidth_1 = 0.1 , linewidth_2 = 1;
var freier_oberer_rand = 10;
var nach_links_verkleinern = 0;
var nach_rechts_verkleinern = 500;
var d_in = 0.5;
for ( x ; x <= b_x - freier_oberer_rand - nach_links_verkleinern -
nach_rechts_verkleinern + b_x_erweitern_um ; x += grid_breite_x_y ) {
ctx.moveTo( d_in + x + freier_oberer_rand + nach_rechts_verkleinern , freier_oberer_rand );
ctx.lineWidth = linewidth_1;
ctx.lineTo( d_in + x + freier_oberer_rand + nach_rechts_verkleinern , b_x + b_y_erweitern_um);
}
// horizontale Linien
for ( y + freier_oberer_rand ; y <= b_y - freier_oberer_rand + b_y_erweitern_um ; y += grid_breite_x_y ) {
ctx.moveTo( freier_oberer_rand + nach_rechts_verkleinern , d_in + y + freier_oberer_rand);
ctx.lineWidth = linewidth_1;
ctx.lineTo( b_x - nach_links_verkleinern + b_x_erweitern_um , d_in + y + freier_oberer_rand );
}
ctx.strokeStyle = "black";
ctx.stroke();
// Pfeile für x
ctx.beginPath();
ctx.fillStyle = 'black';
ctx.moveTo( b_x - nach_links_verkleinern + b_x_erweitern_um + 10, b_y + b_y_erweitern_um );
ctx.lineTo( b_x - nach_links_verkleinern + b_x_erweitern_um + 5, b_y + b_y_erweitern_um - 2 );
ctx.lineTo( b_x - nach_links_verkleinern + b_x_erweitern_um + 5, b_y + b_y_erweitern_um + 2 );
ctx.lineTo( b_x - nach_links_verkleinern + b_x_erweitern_um + 10, b_y + b_y_erweitern_um );
ctx.fill();
// Pfeile für y
ctx.beginPath();
ctx.moveTo( freier_oberer_rand + nach_rechts_verkleinern , freier_oberer_rand - 10 );
ctx.lineTo( freier_oberer_rand + nach_rechts_verkleinern + 2 , freier_oberer_rand - 5 );
ctx.lineTo( freier_oberer_rand + nach_rechts_verkleinern - 2 , freier_oberer_rand - 5 );
ctx.lineTo( freier_oberer_rand + nach_rechts_verkleinern , freier_oberer_rand - 10 );
ctx.fill();
// Bezeichnung x und y
ctx.beginPath();
ctx.font = '10pt Calibri';
ctx.fillStyle = 'black';
ctx.fillText( "y", freier_oberer_rand + nach_rechts_verkleinern - 10, freier_oberer_rand + 2 );
ctx.fillText( "x", b_x - nach_links_verkleinern + b_x_erweitern_um , b_y + b_y_erweitern_um + 10 );
var h_font = 30;
var p_index_a = 30;
var p_index_b = 90;
var omega = "0x03A9";
var test = "\\frac{d}{dx}\\left[\\int_a^xf(t)dt\\right]=f(x)";
var test2 = encodeURIComponent("\\frac{d}{dx}\\left[\\int_a^xf(t)dt\\right]=f(x)");
ctx.beginPath();
ctx.font = '30px Helvetica, Arial, sans-serif';
ctx.fillStyle = 'lime';
ctx.fillText( "-A", p_index_a, p_index_a );
ctx.fillText( "Aufprallfläche der Teilchen", p_index_b, p_index_a );
ctx.fillStyle = 'red';
ctx.fillText( "-V", p_index_a, p_index_a*2 );
ctx.fillText( "Volumen bei d. Impulsion", p_index_b, p_index_a*2 );
}
else {
alert("Dein Browser unterstützt das <canvas> Element nicht");
}
}
draw();
</script>