บทความ/จัดพิมพ์ โดย: นาย เจษฏา กานต์ประชา
ปัญหาภาษาไทยและวิธีการแก้ไขจากเวอ์ชัน 2.4 จะไม่สามารถนำมาใช้กับเวอร์ชัน 3.2 ได้ เพราะดีไซน์และโครงสร้างโค้ดเปลี่ยนไปอย่างสิ้นเชิง แต่ก็สามารถแก้ไขผ่าน option renderActions ดังนี้
window.MathJax = { ... options: { renderActions: { updateThaiTex: [9, function (doc) { if (typeof this.initThaiTex == 'undefined') { this.parseTextNodeUnder = function (node, option) { for (let childNode = node.firstChild; childNode != null; childNode = childNode.nextSibling) { if (childNode.nodeType == Node.ELEMENT_NODE && childNode.classList.contains('tex2math_ignore')) continue; if (childNode.nodeType == Node.TEXT_NODE) { for (let regexTex of option.regexTexArray) { childNode.textContent = childNode.textContent.replace(regexTex, function(match, tex_begin, tex_content, tex_end) { // Fix Thai Language tex_content = tex_content.replace(option.regexThaiCharacter, function(match, has_textcmd_before, thai_content) { return has_textcmd_before ? match: "\\text{" + thai_content + "}"; }); return tex_begin + tex_content + tex_end; }); } } else if (childNode.nodeType == Node.ELEMENT_NODE) this.parseTextNodeUnder(childNode, option); } }; let option = { "regexTexArray": [ /(\\\[)(.+?)(\\\])/gs, /(\\\()(.+?)(\\\))/gs, /(\$\$)(.+?)(\$\$)/gs, /(\$)(.+?)(\$)/gs ], "regexThaiCharacter": /(\\text(?:rm)?\{[^}]*)?([\u0E00-\u0E7F]+)/g }; this.parseTextNodeUnder(document.body, option); } this.initThaiTex = true; }, ''] } } ... }
สำหรับ tex2math_ignore เป็นชื่อ class ที่ต้องการให้ยกเว้นการแสดงผลเป็น LaTeX หากมีการกำหนด option ignoreHtmlClass จะต้องนำมาใส่ในโค้ดส่วนนี้ด้วย
ตัวอย่างผลลัพธ์ที่ได้ เมื่อเราเขียนคำสั่ง LaTeX เป็น \frac{พื้นที่สามเหลี่ยม}{พื้นที่สี่เหลี่ยม}
\[ \frac{พื้นที่สามเหลี่ยม}{พื้นที่สี่เหลี่ยม} \]อีกแนวทางหนึ่งในการแก้ปัญหาการแสดงผลบนอุปกรณ์พกพาขนาดเล็ก สมการคณิตศาสตร์ยาวเกิน แทนที่จะใช้วิธีการตัดขึ้นบรรทัดใหม่ ซึ่งอาจทำให้ความหมายเปลี่ยนไป สามารถใช้วิธีการเพิ่ม Scrollbar ด้วยโค้ด css ดังนี้
.MathJax_SVG_Display, mjx-container[display="true"] { overflow:auto; padding-top:0.5rem; padding-bottom:0.25rem }
ตัวอย่างผลลัพธ์ที่ได้ (ต้องทดสอบดูบนจอเล็ก หรือปรับขนาดหน้าต่างบราวเซอร์ ให้มีความกว้างน้อยกว่าความยาวของสมการ)
\[ \sum\limits_{k=1}^{n}{k^{10}} = \left(\frac{n(n+1)(2n+1)}{6}\right)\left(\frac{(n^2+n-1)(3n^6+9n^5+2n^4-11n^3+3n^2+10n-5)}{11}\right) \]