我們已經使用mathjax到我們的網站(java-GWT)來渲染公式,它工作得很好,但問題是我們需要向用戶顯示波斯語/阿拉伯語腳本中的數字。如何更改數字語言在mathjax
我不得不提到我們有超過10萬個選擇題和超過5K的文章在我們的網站上有公式來呈現。
我們已經使用mathjax到我們的網站(java-GWT)來渲染公式,它工作得很好,但問題是我們需要向用戶顯示波斯語/阿拉伯語腳本中的數字。如何更改數字語言在mathjax
我不得不提到我們有超過10萬個選擇題和超過5K的文章在我們的網站上有公式來呈現。
這是Java的做法。我回答這個,因爲你有一個Java標籤。我不知道mathjax。我希望你可以在你的代碼中實現這個邏輯。
阿拉伯語爲= \ u06f0 \ u06f1 \ u06f2 \ u06f3 \ u06f4 \ u06f5 \ u06f6 \ u06f7 \ u06f8 \ u06f9。
我們將每個字符作爲char而不是int處理。所以,把數字轉換成字符串然後使用這個函數。它應該爲你的目的服務。
private static String decimalToArabic(String number) {
char[] chars = new char[number.length()];
for(int i=0;i<number.length();i++) {
char ch = number.charAt(i);
switch(ch) {
case '\u06F0' : chars[i] = '0';
break;
case '\u06F1' : chars[i] = '1';
break;
case '\u06F2' : chars[i] = '2';
break;
case '\u06F3' : chars[i] = '3';
break;
case '\u06F4' : chars[i] = '4';
break;
case '\u06F5' : chars[i] = '5';
break;
case '\u06F6' : chars[i] = '6';
break;
case '\u06F7' : chars[i] = '7';
break;
case '\u06F8' : chars[i] = '8';
break;
case '\u06F9' : chars[i] = '9';
break;
}
}
return new String(chars);
}
爲了訪問波斯文數字,您需要使用對這些字形的Unicode位置的引用。波斯的數字在U + 06F0到U + 06F9(阿拉伯數字是U + 0660到U + 0669)。因此,您可以使用\unicode{0x6F2}
生成2(2)的波斯字形。 MathJax中提供的網絡字體不包括阿拉伯數字或波斯數字的字形,但是不能保證讀者能夠查看該符號。您可以通過添加包含符號的建議字體來提高賠率。它看起來像宋體和Times New Roman既包括阿拉伯語和波斯語字符,所以
\unicode['Times New Roman',Arial]{x6F2}
將可能使人們有可能對大多數觀衆看到您所期望的字符。當然,您可以創建宏,如\0
,\1
,\2
等,以便於輸入。
另外,如果你想擁有「123」顯示爲「123」自動,可以通過添加做了以下
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
"HTML-CSS": {
undefinedFamily: "'Times New Roman',Arial,STIXGeneral,'Arial Unicode MS',serif",
noReflows: false
}
});
MathJax.Hub.Register.StartupHook("HTML-CSS Jax Ready", function() {
var REMAP = MathJax.OutputJax["HTML-CSS"].FONTDATA.REMAP;
var ZERO = 0x6F0; // use 0x660 for Arabic, 0x6F0 for Persian
for (var i = 0; i < 10; i++) {REMAP[0x30+i] = ZERO+i}
});
</script>
到您的網頁了在之前加載MathJax.js本身的腳本。這將重新映射所有數字0到9到他們的波斯語(或阿拉伯語,如果您更改ZERO = 0x6F0
到ZERO = 0x660
)對應。
請注意,這隻會影響HTML-CSS輸出。如果您將HTML-CSS更改爲SVG,則類似的配置可用於SVG輸出。但是這不會改變NativeMML輸出的結果(然而原始的\unicode{}
方法可以在所有三種輸出格式中工作)。
感謝您的回答,但我需要使用mathjax來做,因爲我不希望它們被更改的頁面中有很多數字。我只需要在數學公式中改變數字 –