여기에 macro substitution을 사용한다고 생각합니다. 공식을 생성하는 기계가 무엇이든간에 \frac{\x}{\y}
으로 표시된 공식을 얻으십시오. 그런 다음 해당 매크로 대신 변수 이름이나 값을 대체 할 수 있습니다. 이런 식으로 뭔가 : 당신이 공식이 처음 구성되는 방식을 제어 할 방법이없는 경우
katex.render("\\frac{\\x}{\\y}", element, {
macros: {
"\\x": String(x),
"\\y": String(y),
}
});
이 단지 그것으로 명령을 대체하는 식으로 값을 대체에서 문제를 이동합니다. 이 경우 입력 문자열을 commands \…
및 다른 문자로 토큰화할 수 있습니다. 명령은 그대로 유지되지만 다른 문자는 변수 대체가 가능합니다.
한 가지 그룹화되어 조심해야합니다 : 입력 \frac xy
는 잘 렌더링하지만 (텍스트와 매크로 대체 모두가 당신을 줄 것이다 것입니다) x=34.5
하고 순진한 방법으로 대체 y=5.67
결과 \frac 34.55.67
와 \frac{3}{4}.55.67
로 렌더링합니다. 따라서 수식에있는 각 매크로가 {…}
으로 묶이거나 "\\x": "{" + x + "}"
과 같이 대체 할 때 {…}
의 다른 수준을 추가해야합니다. 수식 안에 {…}
으로 매크로를 묶는 것은 매크로가 후속 공백을 먹는 것에 대해 걱정할 필요가 없다는 이점이 있습니다. \text{\x is 2}
이 좋지 않지만 \text{{\x} is 2}
이 더 좋습니다.
그러나 올바르게 그룹화 된 경우에도 모든 비 명령이 실제로 변수가 아니므로이 방법은 완벽하지 않습니다. 예를 들어 \begin{array}{rlrl}…\end{array}
으로 a
이 array
이 아니고 r
이 rlrl
인 경우를 변수로 간주해야합니다. 이 문제를 해결하려면 많은 의미 론적 통찰력이 필요하므로 실제로는 문제가됩니다.
이 딜레마를 해결하는 한 가지 방법은 KaTeX에서 렌더링을 수행 한 다음 결과 DOM 하위 트리에서 대체를 수행하는 것입니다.변수를 <span class="mord …">…</span>
으로 식별 할 수 있어야합니다 (mord
은 일반 수학을 나타냄). 이것은 KaTeX가 출력에 사용하는 정확한 표현에 의존한다는 것을 의미합니다. 따라서 KaTeX의 고정 버전을 실행해야합니다. 이러한 내부 내용은 예고없이 변경 될 수 있습니다. \underbrace
처럼 문제가되는 항목조차도 현재이 대체 방법으로 작동하는 것처럼 보일지라도 일부 (가능할 경우) 버전에서는 주어진 상자의 너비에 따라 특정 구성이 깨질 수 있다는 사실을 알고 있어야합니다.
출처
2017-11-30 17:47:28
MvG
[String.replace()] (https://www.w3schools.com/jsref/jsref_replace.asp)? –
이 경우'\ dfrac {a} {c}'이고 변수는 ** ** ** ** ** **입니까? @NicoSchertler – besrabasant
이 사건은 어떻게됩니까? 변수 세트가 있어야하며 모든 변수를 대체합니다. –