在网站运营中,我们经常需要展示一些专业性较强的内容,比如涉及科学计算的数学公式,或是业务流程说明的复杂流程图。这些内容的传统展示方式往往效率低下,难以维护,也无法提供良好的阅读体验。AnQiCMS 结合其强大的内容管理能力和对 Markdown 的支持,为我们提供了一套优雅的解决方案。通过简单地引入一些外部库,并开启 Markdown 编辑器,我们就能让这些专业内容在网站页面上正确、美观地渲染显示。

开启 Markdown 编辑器

要开始在您的页面中嵌入数学公式和流程图,首先需要确保 AnQiCMS 后台的 Markdown 编辑器已启用。这是系统识别并处理公式和流程图语法的基础。

您只需前往 AnQiCMS 后台的 全局设置,然后点击 内容设置。在这个页面中,找到并开启 Markdown 编辑器功能。启用后,您在编辑文章或页面内容时,就可以使用 Markdown 语法来编写公式和流程图了。

准备模板文件,引入外部渲染库

Markdown 语法本身只是纯文本的标记方式,要将数学公式和流程图正确地转换成用户可见的图像,我们需要借助一些强大的第三方 JavaScript 库。这些库需要被引入到您网站的页面中。

通常,您网站的模板会有一个全局的基石文件,例如 base.html,或者一个被多个页面引用的公共头部文件。建议将这些库的引用代码放置在这个共享文件中,通常是在 <head> 标签的末尾或 <body> 标签的开头,这样可以确保它们在所有相关页面上都能被加载。

优化 Markdown 内容的显示样式

为了让 Markdown 内容在您的网站上拥有良好且一致的显示效果,我们可以引入 github-markdown-css 样式表。这个样式表能够让您的 Markdown 内容在网页上呈现出类似 GitHub 的阅读风格,简洁大方。

在您的模板文件的 <head> 部分添加以下代码:

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/github-markdown-css/5.2.0/github-markdown.min.css" crossorigin="anonymous" referrerpolicy="no-referrer" />

正确渲染数学公式

数学公式的渲染通常需要专门的引擎。MathJax 是一个非常流行的选择,它能够将 LaTeX、MathML 或 AsciiMath 等格式的数学表达式高质量地渲染为网页上的可读公式。

继续在您模板文件的 <head> 部分,紧随 Markdown 样式之后,添加 MathJax 的引用:

<script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>

请注意 async 属性,它允许脚本在下载的同时继续解析页面,避免阻塞页面加载。

正确渲染流程图

流程图可以通过 Mermaid 库来实现。Mermaid 允许您使用简单的文本描述来创建各种图表,例如流程图、序列图、甘特图等。

Mermaid 的引入方式略有不同,需要以模块化的方式加载。在您的模板文件的 <head><body> 开头添加以下代码:

<script type="module">
    import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs';
    mermaid.initialize({ startOnLoad: true });
</script>

这里 type="module" 确保了它作为 ES 模块加载,而 mermaid.initialize({ startOnLoad: true }) 则会在页面加载完成后自动扫描并渲染页面中的 Mermaid 图表。

在内容中实际应用公式和流程图

完成上述设置后,您就可以在 AnQiCMS 后台创建或编辑文档时,在“文档内容”编辑器中使用 Markdown 语法来编写数学公式和流程图了。

数学公式: 您可以使用 LaTeX 风格的语法来编写数学公式。

  • 行内公式 (inline math): 使用 $公式内容$ 包裹,例如 $E=mc^2$
  • 块级公式 (block math): 使用 $$公式内容$$ 包裹,它会单独占据一行,并居中显示,例如:
    
    $$
    \int_0^1 x^2 dx = \left[ \frac{x^3}{3} \right]_0^1 = \frac{1}{3}
    $$
    

流程图: 流程图使用 Mermaid 语法块。您需要用 mermaid` 和 ` 将流程图的文本定义包裹起来。例如:

```mermaid
graph TD;
    A[开始] --> B{决策};
    B -- 是 --> C[执行操作1];
    B -- 否 --> D[执行操作2];
    C --> E[结束];
    D --> E;

”`

在您的文档内容中添加这些代码后,保存并发布,访问前端页面时,这些公式和流程图就会被相应的库解析并渲染成美观的图像。

通过这些设置,您的网站内容将不再局限于纯文本和图片,而是能够灵活地展示复杂的数学表达式和清晰的业务流程,极大地丰富了内容形式,提升了专业度和用户体验。


常见问题 (FAQ)

1. 我的数学公式或流程图为什么没有正确显示? 遇到这种情况,首先请检查以下几点:

  • 是否启用了 Markdown 编辑器? 确保在 AnQiCMS 后台的“全局设置 -> 内容设置”中已开启 Markdown 编辑器。
  • 是否正确引入了外部库? 检查您模板文件(如 base.html)中 MathJax 和 Mermaid 的 <script><link> 标签是否完整、无误,并且网络连接正常,CDN 资源能够被正确加载。
  • 语法是否正确? 数学公式的 LaTeX 语法和流程图的 Mermaid 语法都有严格的规则,任何小的拼写或格式错误都可能导致渲染失败。

2. 我可以自定义数学公式或流程图的样式吗? 当然可以。对于数学公式,MathJax 允许通过配置或 CSS 覆盖来调整样式。对于流程图,Mermaid 支持多种主题,您可以在 mermaid.initialize() 中传入 theme 参数进行设置,例如 mermaid.initialize({ startOnLoad: true, theme: 'dark' });。此外,由于渲染后的公式和图表本质上是 SVG 或 HTML 元素,您也可以通过自定义 CSS 来进一步美化。

3. 这些渲染库会不会影响网站的加载速度? 任何引入的外部 JavaScript 库都会对页面加载速度产生一定影响。然而,MathJax 和 Mermaid 都是经过优化的库,并且我们使用了 CDN 加载和 async 属性(MathJax),这有助于提高加载效率。如果您对性能有极高要求,可以考虑仅在包含公式或流程图的特定页面模板中引入这些库,而不是全局引入,以减少不必要页面的加载负担。