diff -r 7b932d80c838 -r 5a434813eef3 eric6/UI/Previewers/PreviewerHTML.py --- a/eric6/UI/Previewers/PreviewerHTML.py Wed Oct 23 20:06:12 2019 +0200 +++ b/eric6/UI/Previewers/PreviewerHTML.py Thu Oct 24 19:30:01 2019 +0200 @@ -679,25 +679,34 @@ """installation instructions.</a></p>""") extensions = [] + + if Preferences.getEditor("PreviewMarkdownMermaid"): + try: + import md_mermaid # __IGNORE_EXCEPTION__ __IGNORE_WARNING__ + extensions.append("md_mermaid") + except ImportError: + pass + + if convertNewLineToBreak: + extensions.append('nl2br') + + pyMdown = False if usePyMdownExtensions: try: import pymdownx # __IGNORE_EXCEPTION__ __IGNORE_WARNING__ # PyPI package is 'pymdown-extensions' - extensions = [ + extensions.extend([ 'pymdownx.extra', 'pymdownx.caret', 'pymdownx.emoji', 'pymdownx.mark', 'pymdownx.tilde', 'pymdownx.keys', 'pymdownx.tasklist', 'pymdownx.smartsymbols', - ] - if convertNewLineToBreak: - extensions.append('nl2br') + ]) + pyMdown = True except ImportError: pass - if not extensions: - if convertNewLineToBreak: - extensions = ['extra', 'toc', 'nl2br'] - else: - extensions = ['extra', 'toc'] + + if not pyMdown: + extensions.extend(['extra', 'toc']) # version 2.0 supports only extension names, not instances if ( @@ -781,9 +790,26 @@ "tex-chtml.js'>\n" "</script>\n" ) + # prepare text for mathjax + text = ( + text + .replace(r"\(", r"\\(") + .replace(r"\)", r"\\)") + .replace(r"\[", r"\\[") + .replace(r"\]", r"\\]") + ) else: mathjax = "" + if Preferences.getEditor("PreviewMarkdownMermaid"): + mermaid = ( + "<script type='text/javascript' id='Mermaid-script'" + " src='https://unpkg.com/mermaid@8/dist/mermaid.min.js'>\n" + "</script>\n" + ) + else: + mermaid = "" + htmlFormat = Preferences.getEditor("PreviewMarkdownHTMLFormat").lower() body = markdown.markdown(text, extensions=extensions, output_format=htmlFormat.lower()) @@ -809,9 +835,10 @@ '''<meta http-equiv="Content-Type" ''' '''content="text/html; charset=utf-8" />\n''' '''{0}''' + '''{1}''' '''</head>\n''' '''<body>\n''' - ).format(mathjax) + ).format(mathjax, mermaid) foot = '''\n</body>\n</html>\n'''