#regex #markdown #jekyll #mathjax
#регулярное выражение #уценка #jekyll #mathjax
Вопрос:
Я пытаюсь понять Jekyll.
Я использую Kramdown в качестве процессора markdown.
Существует странная разница в том, как mathjax обрабатывается в заголовке и содержимом.
Скажем, я хочу написать
В начале сообщения я должен написать что-то вроде этого:
---
title: (sqrt x)
---
Но в содержании сообщения я должен написать:
\(sqrt x\)
Если я сделаю \(sqrt x\)
это в заголовке, внешний вид веб-страницы будет искажен.
Если я сделаю (sqrt x)
это в содержимом сообщения, я получу отдельные брекеты с литералом внутри (sqrt x)
Почему? Может кто-нибудь объяснить, как обрабатываются строки в этих двух и почему они обрабатываются по-разному?
Ответ №1:
Текст в интерфейсе (метаданные) не анализируется как Markdown. Фактически, Jekyll удаляет frontmatter из документа перед передачей его в Kramdown. Kramdown даже не видит frontmatter. Поэтому ваш «заголовок» передается как есть, экранирование не требуется. Если это помогает, frontmatter не является частью Markdown. Это дополнение, специфичное для Jekyll.
Напротив, в тексте Markdown mathjax необходимо экранировать. Некоторые синтаксические конфликты mathjax с синтаксисом Markdown, поэтому синтаксическому анализатору необходимо сообщить, что является mathjax, а что нет. Это достигается путем окружения mathjax соответствующими разделителями. Затем анализатор Markdown удаляет escape-символы из содержимого, но в остальном оставляет содержимое неизменным.
Помните, что синтаксис mathjax фактически анализируется и преобразуется в правильно отформатированное уравнение с помощью JavaScript в браузере. HTML, сгенерированный Kramdown / Jekyll, по-прежнему содержит синтаксис mathjax без изменений. Но поскольку у нас есть два разных пути, есть два немного разных способа получить один и тот же результат.