From f2d92d2060738267755b0e45c1a6b79ff834aa7b Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 16 Mar 2021 12:18:27 +0530 Subject: [PATCH] E-book viewer: Fix errors when viewing books with mathematics that are split over multiple internal files. Fixes #1919033 [Unhandled mathjax loading related error in Viewer](https://bugs.launchpad.net/calibre/+bug/1919033) --- src/pyj/read_book/mathjax.pyj | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/src/pyj/read_book/mathjax.pyj b/src/pyj/read_book/mathjax.pyj index d179d9a5e1..533c9f60da 100644 --- a/src/pyj/read_book/mathjax.pyj +++ b/src/pyj/read_book/mathjax.pyj @@ -31,12 +31,27 @@ def load_mathjax(src): document.head.appendChild(script) +standalone_proceed_data = { + 'link_uid': None, + 'proceed': None, + 'event_listender_added': False, +} + + +def standalone_proceed(): + if standalone_proceed_data.proceed: + postprocess(standalone_proceed_data.link_uid) + standalone_proceed_data.proceed() + standalone_proceed_data.proceed = None + + def apply_mathjax(mathjax_files, link_uid, proceed): if runtime.is_standalone_viewer: - document.documentElement.addEventListener("calibre-mathjax-typeset-done", def(ev): - postprocess(link_uid) - proceed() - ) + if not standalone_proceed_data.event_listender_added: + standalone_proceed_data.event_listender_added = True + document.documentElement.addEventListener("calibre-mathjax-typeset-done", standalone_proceed) + standalone_proceed_data.link_uid = link_uid + standalone_proceed_data.proceed = proceed load_mathjax(f'{runtime.FAKE_PROTOCOL}://{runtime.SANDBOX_HOST}/mathjax/startup.js') return window.MathJax = v'{}' @@ -65,7 +80,7 @@ def apply_mathjax(mathjax_files, link_uid, proceed): } # also do any changes in pdf-mathjax-loader.js for the standalone - # viewer/editor/pdf outpu + # viewer/editor/pdf output window.MathJax.loader = { 'load': v"['input/tex-full', 'input/asciimath', 'input/mml', 'output/chtml']", 'require': def (url):