Django渲染markdown和LaTeX

渲染markdown

安装包markdown2
使用markdown2.markdown函数将markdown语句转换为HTML

渲染LaTeX

在HTML网页的head部分加入以下语句

<script type="text/x-mathjax-config">
    MathJax.Hub.Config({
     
     
    showProcessingMessages: false, //关闭js加载过程信息
    messageStyle: "none", //不显示信息
    extensions: ["tex2jax.js"],
    jax: ["input/TeX", "output/HTML-CSS"],
    tex2jax: {
     
     
        inlineMath:  [['$', '$']], //行内公式选择$
        displayMath: [ ["$$","$$"] ], //段内公式选择$$
        skipTags: ['script', 'noscript', 'style', 'textarea', 'pre','code','a'], //避开某些标签
        ignoreClass:"comment-content" //避开含该Class的标签
    },
    "HTML-CSS": {
     
     
        availableFonts: ["STIX","TeX"], //可选字体
        showMathMenu: true //关闭右击菜单显示
    }
    });
    MathJax.Hub.Queue(["Typeset",MathJax.Hub]);

    </script>
    <script src="//cdn.bootcss.com/mathjax/2.7.0/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
    <link rel="dns-prefetch" href="//cdn.mathjax.org" />

对公式进行特殊处理

如果只完成了以上两步,会发现公式并不能正确显示,这是因为公式里面有一些特殊字符会被markdown错误识别,可以在公式两侧加入<p>段落标记,这样就不会被markdown处理了。

def change_formula(matched):
    formula = matched.group(0)
    formula = formula.replace('_', ' _')
    return '\n<p>'+formula+'</p>\n'

def detail(request, pk):
    # 不存在时返回404错误
    paper = get_object_or_404(Paper, pk=pk)
    # 用于识别公式的正则表达式
    paper.review = markdown2.markdown(re.sub(r'\$\$(.+?)\$\$', change_formula, paper.review))
    return render(request, 'papers/detail.html', context={
    
    'paper': paper})

完美运行

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/jining11/article/details/115139264
今日推荐