이다. 그래서 "0.12"가 더 이상 숫자로 취급되지 않습니다. AsciiMath에는 3 자리마다 쉼표를 구문 분석하는 메커니즘이 없습니다.
내가 제안 할 수있는 최선의 방법은 AsciiMath 사전 필터를 사용하여 AsciiMath가 사전 식을 분석하기 전에 쉼표를 제거하기 위해 AsciiMath를 사전 처리하는 것입니다. 단지 전에 트릭을 할해야 MathJax.js을로드하는 스크립트를 페이지에
<script type="text/x-mathjax-config">
MathJax.Hub.Register.StartupHook("AsciiMath Jax Ready", function() {
function removeCommas(n) {return n.replace(/,/g,'')}
MathJax.InputJax.AsciiMath.prefilterHooks.Add(function (data) {
data.math = data.math.replace(/\d{1,3}(?:\,\d\d\d)+/g,removeCommas);
});
});
</script>
같은 추가. 이것은 쉼표가 출력에도 나타나지 않는다는 것을 의미합니다. 4 자리수 이상인 모든 숫자에 쉼표를 추가하고 싶지 않는 한 자연스러운 방법은 없습니다 (쉼표가없는 경우에도 마찬가지입니다). 그러면 포스트 필터가 생성 된 MathML 위로 돌아가서 숫자를 쉼표로 변환해야합니다. 다음과 같이 입력하십시오 :
MathJax.Hub.Register.StartupHook("AsciiMath Jax Ready", function() {
function removeCommas(n) {
return n.replace(/,/g,'');
}
function addCommas(n){
return n.replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}
function recursiveAddCommas(node) {
if (node.isToken) {
if (node.type === 'mn') {
node.data[0].data[0] = addCommas(node.data[0].data[0]);
}
} else {
for (var i = 0, m = node.data.length; i < m; i++) {
recursiveAddCommas(node.data[i]);
}
}
}
MathJax.InputJax.AsciiMath.prefilterHooks.Add(function (data) {
data.math = data.math.replace(/\d{1,3}(?:\,\d{3})+/g, removeCommas);
});
MathJax.InputJax.AsciiMath.postfilterHooks.Add(function (data) {
recursiveAddCommas(data.math.root);
});
});
이 작동해야합니다.
"decimal : ','"을 추가하면 천 단위 구분 기호가 사용됩니다 (감사). 그러나 MathJax는 10 진수 부호마다 공백을 추가합니다 (예 : "0.12"). 그 문제에 대한 해결책이 있습니까? –