AnkiWeb MathJax

Adds MathJax support to the web version of Anki

2022-06-20 기준 버전입니다. 최신 버전을 확인하세요.

// ==UserScript==
// @name         AnkiWeb MathJax
// @description  Adds MathJax support to the web version of Anki
// @namespace    https://giuseppe.eletto.me
// @author       Giuseppe Eletto
// @version      0.2.1
// @license      MIT
// @match        https://ankiuser.net/study/
// ==/UserScript==

(function() {
    // Constants
    const MATHJAX_CDN = 'https://cdn.jsdelivr.net/npm/mathjax@3/es5'
    const ANKI_QA_BOX = document.querySelector('div#qa_box')

    // Setup custom MathJax configurations
    unsafeWindow.MathJax = {
        chtml: {
            fontURL: `${MATHJAX_CDN}/output/chtml/fonts/woff-v2`
        },
        startup: {
            typeset: true,
            elements: [ANKI_QA_BOX],
            pageReady: () => {
                // Overrides the "drawAnswer" method (of the instance "study")
                study.drawAnswer = () => {
                    const v = unsafeWindow.anki.Reviewer.prototype.drawAnswer.call(study)
                    unsafeWindow.MathJax.typesetPromise()
                    return v
                }

                // Overrides the "answerCard" method (of the instance "study")
                study.answerCard = (x) => {
                    unsafeWindow.anki.Reviewer.prototype.answerCard.call(study, x)
                    unsafeWindow.MathJax.typesetPromise()
                }

                // Continues MathJax startup
                return unsafeWindow.MathJax.startup.defaultPageReady()
            }
        }
    }

    // Append and load MathJax script
    const mathJaxChtml = document.createElement('script')
    mathJaxChtml.src = `${MATHJAX_CDN}/tex-mml-chtml.js`
    document.head.appendChild(mathJaxChtml)
})()