mathjax 使用 Jekyll 以不同方式处理帖子的标题和内容
mathjax processed differently in title and content of posts with Jekyll
我正在努力理解 Jekyll。
我正在使用 Kramdown 作为降价处理器。
mathjax 在标题和内容上的处理方式存在奇怪的差异。
说我要写
前面的事情post我要这样写:
---
title: \(\sqrt x\)
---
但是在post的内容里我要写:
\(\sqrt x\)
如果我在标题中做 \(\sqrt x\)
,网页中的外观将会被破坏。
如果我在 post 的内容中执行 \(\sqrt x\)
,我将得到带有文字的单个括号 (\sqrt x)
为什么?谁能解释一下这两个中的字符串是如何处理的以及为什么它们的处理方式不同?
前文(元数据)中的文本未被解析为 Markdown。事实上,Jekyll 在将文档传递给 Kramdown 之前从文档中删除了前言。 Kramdown 甚至从来没有看到过头条新闻。因此,您的 "title" 将按原样通过,无需转义。如果有帮助,则 frontmatter 不是 Markdown 的一部分。它是 Jekyll 特定的附加组件。
相比之下,在 Markdown 文本中,需要对 mathjax 进行转义。一些 mathjax 语法与 Markdown 语法冲突,因此需要告诉解析器什么是 mathjax 什么不是。这是通过用适当的分隔符包围 mathjax 来实现的。然后 Markdown 解析器从内容中去除转义字符,但其他内容保持不变。
请记住,mathjax 语法实际上是由 JavaScript 在浏览器中解析并转换为格式正确的等式。 Kramdown/Jekyll 生成的 HTML 仍然包含未解析的 mathjax 语法。但是由于我们有两条不同的路径,所以有两种稍微不同的方法可以得到相同的输出。
我正在努力理解 Jekyll。
我正在使用 Kramdown 作为降价处理器。
mathjax 在标题和内容上的处理方式存在奇怪的差异。
说我要写
前面的事情post我要这样写:
---
title: \(\sqrt x\)
---
但是在post的内容里我要写:
\(\sqrt x\)
如果我在标题中做 \(\sqrt x\)
,网页中的外观将会被破坏。
如果我在 post 的内容中执行 \(\sqrt x\)
,我将得到带有文字的单个括号 (\sqrt x)
为什么?谁能解释一下这两个中的字符串是如何处理的以及为什么它们的处理方式不同?
前文(元数据)中的文本未被解析为 Markdown。事实上,Jekyll 在将文档传递给 Kramdown 之前从文档中删除了前言。 Kramdown 甚至从来没有看到过头条新闻。因此,您的 "title" 将按原样通过,无需转义。如果有帮助,则 frontmatter 不是 Markdown 的一部分。它是 Jekyll 特定的附加组件。
相比之下,在 Markdown 文本中,需要对 mathjax 进行转义。一些 mathjax 语法与 Markdown 语法冲突,因此需要告诉解析器什么是 mathjax 什么不是。这是通过用适当的分隔符包围 mathjax 来实现的。然后 Markdown 解析器从内容中去除转义字符,但其他内容保持不变。
请记住,mathjax 语法实际上是由 JavaScript 在浏览器中解析并转换为格式正确的等式。 Kramdown/Jekyll 生成的 HTML 仍然包含未解析的 mathjax 语法。但是由于我们有两条不同的路径,所以有两种稍微不同的方法可以得到相同的输出。