Я пытаюсь понять, как отображать синтаксис уценки аналогично сайту Math StackExchange.Я хочу, чтобы это делалось с библиотекой python вместо какого-либо инструмента командной строки.
После долгих исследований я обнаружил markdown и python-markdown-math , поэтому я решил пойти с ними.Чтобы использовать оба, я только что установил их как:
pip install markdown
pip install python-markdown-math
Тем не менее, давайте начнем с небольшого анализаПример вывода, сгенерированного сайтом обмена стека математики:
![enter image description here](https://i.stack.imgur.com/VSAtL.png)
А теперь давайте попробуем достичь аналогичного результата, используя markdown
и python-markdown-math
библиотеки:
import textwrap
import markdown
from pathlib import Path
src = """\
Rendered result of `$a+b$` ==> $a+b$
Rendered result of `$$a+b$$` ==> $$a+b$$
"""
md = markdown.Markdown(
extensions=['mdx_math'],
extension_configs={
'mdx-math': {'enable_dollar_delimiter': True}
}
)
html = """\
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>MathJax example</title>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.4/MathJax.js">
</script>
</head>
<body>
{}
</body>
</html>
""".format(md.convert(src))
Path('test.html').write_text(html)
Если мы запустим этот фрагмент, а затем откроем сгенерированный test.html
, мы увидим, что отрендеренный HTML будет:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>MathJax example</title>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.4/MathJax.js">
</script>
</head>
<body>
<p>Rendered result of <code>$a+b$</code> ==> $a+b$</p>
<p>Rendered result of <code>$$a+b$$</code> ==> <script type="math/tex; mode=display">a+b</script>
</p>
</body>
</html>
, который выглядит следующим образом:
![enter image description here](https://i.stack.imgur.com/PSyko.png)
Как видите, результат довольно сильно отличается от того, что я хотел бы получить, поэтому мой вопрос в том, как получить правильный рендерингhtml (например, сайт обмена стеками по математике)?