mathjax使用Jekyll在帖子的标题和内容中进行了不同的处理

时间:2016-10-18 13:37:36

标签: regex markdown jekyll mathjax

我想了解杰基尔。

我使用Kramdown作为降价处理器。

在标题和内容中处理mathjax的方式存在差异。

说我想写\sqrt{x}

在帖子的前面我不得不写这样的东西:

---
title: \(\sqrt x\)
---

但在帖子的内容中我要写:

\\(\sqrt x\\)

如果我在标题中\\(\sqrt x\\),则网页中的外观会被破坏。

如果我在帖子的内容中\(\sqrt x\),我会在(\sqrt x)

内获得单个文字。

为什么呢?有人可以解释这两个字符串中的字符串是如何处理的以及为什么它们被区别对待?

1 个答案:

答案 0 :(得分:1)

frontmatter中的文本(元数据)不会被解析为Markdown。实际上,Jekyll在将文件传递给Kramdown之前从文档中删除了前端。 Kramdown甚至从未见过这个前线。因此,你的标题"按原样传递,不需要转义。如果它有帮助,那么前线不是Markdown的一部分。这是Jekyll特有的附加组件。

相反,在Markdown文本中,mathjax需要进行转义。一些mathjax语法与Markdown语法冲突,因此需要告诉解析器什么是mathjax,什么不是。这是通过使用适当的分隔符包围mathjax来实现的。 Markdown解析器然后从内容中删除转义字符,但不会保持内容不变。

请记住,mathjax语法实际上是通过JavaScript在浏览器中解析并转换为格式正确的等式。 Kramdown / Jekyll生成的HTML仍包含未解析的mathjax语法。但由于我们有两种不同的路径,因此有两种略有不同的方法可以获得相同的输出。