2017-07-18 3 views
1

Dies ist ein altes TeX-Problem --- es wäre sinnvoller gewesen, ein Leerzeichen zu verlangen, wenn ein Leerzeichen erwünscht ist: 12,123 ist wahrscheinlich eine Zahl, während 12, 123 wahrscheinlich eine Liste ist. Ach, es ist was es ist.mathjax Kommas in Ziffern

In Bezug auf MathJax rendering of commas in numbers, wo die Lösung ist die Unterdrückung von Räumen über {,}. Funktioniert, aber unbequem. Gibt es eine Möglichkeit, dies automatisch zu machen?

Der Hack in https://github.com/mathjax/MathJax/issues/169#issuecomment-2040235 befasst sich mit europäischen vs Anglo. Die äquivalente Hack,

<script type="text/x-mathjax-config"> 
    MathJax.Hub.Register.StartupHook("TeX Jax Ready",function() { 
    MathJax.InputJax.TeX.Definitions.number = 
     /^(?:[0-9]+(?:\,[0-9]{3})*(?:\{\.\}[0-9]*)*|\{\.\}[0-9]+)/ 
    }); 
</script> 

löst das Problem in comma 1,234.56 aber jetzt gibt es einen Raum nach der Periode (d.h. vor 5). Ich bin mir nicht sicher, wie die obige Regex funktioniert. Kann jemand helfen?

Antwort

2

ändern Sie das Muster zu

/^(?:[0-9]+(?:,[0-9]{3})*(?:\.[0-9]*)*|\.[0-9]+)/ 

12,345.6 zu ermöglichen, als eine Zahl behandelt werden, während 12, 345 eine Liste von zwei Zahlen. Im ursprünglichen Muster benötigt die \{\.\} ein Literal {.} (geschweifte Klammern enthalten), nicht nur eine Dezimalzahl.