Кавычки

Библиотека Markdown-it предоставляет гибкий и расширяемый парсер Markdown для JavaScript. Одной из часто недооцениваемых, но важных возможностей является правильная обработка кавычек — как обычных прямых (", '), так и типографских («ёлочек», «лапок») — для создания аккуратного, читабельного текста.

Прямые и типографские кавычки

По умолчанию Markdown-it сохраняет прямые кавычки в тексте без изменений:

const md = require('markdown-it')();
const result = md.render('"Пример текста в кавычках"');
console.log(result);

Результат:

<p>"Пример текста в кавычках"</p>

Если требуется конвертация прямых кавычек в типографские, используется плагин markdown-it-typographer.

const MarkdownIt = require('markdown-it');
const md = new MarkdownIt({ typographer: true });

const result = md.render('"Текст в типографских кавычках"');
console.log(result);

Результат:

<p>«Текст в типографских кавычках»</p>

Ключевой момент: включение опции typographer: true позволяет Markdown-it автоматически заменять прямые кавычки на «ёлочки», одинарные кавычки на ‹лапки› и корректно расставлять апострофы.

Настройка кавычек через правила

Markdown-it поддерживает расширяемую систему правил рендеринга (renderer.rules), что позволяет создавать индивидуальные обработки кавычек.

Пример замены всех двойных кавычек на фигурные:

const md = new MarkdownIt();

md.renderer.rules.text = (tokens, idx) => {
  return tokens[idx].content.replace(/"/g, '“');
};

const result = md.render('"Фигурные кавычки"');
console.log(result);

Результат:

<p>“Фигурные кавычки“</p>

Особенности: данный подход заменяет кавычки только в обычном тексте, не затрагивая кодовые блоки или inline-код. Для более точного контроля можно использовать токенизацию (token.type) и фильтровать только нужные типы токенов (inline, text).

Работа с одинарными кавычками

Markdown-it корректно обрабатывает одинарные кавычки '. С включённым typographer они преобразуются в типографские апострофы и кавычки:

const md = new MarkdownIt({ typographer: true });
const result = md.render("'одинарная кавычка'");
console.log(result);

Результат:

<p>‹одинарная кавычка›</p>

Можно настроить поведение через опции quotes:

const md = new MarkdownIt({
  typographer: true,
  quotes: '«»„“'
});

Описание формата quotes:

  • Первые два символа — открывающая и закрывающая двойная кавычка.
  • Следующие два символа — открывающая и закрывающая одинарная кавычка.

Это позволяет полностью адаптировать кавычки под стилистические требования текста.

Влияние на HTML и SEO

Типографские кавычки генерируют корректный HTML:

  • <p>«Текст»</p> — семантически и визуально правильный абзац.
  • Использование стандартных кавычек "Текст" иногда снижает читаемость и может выглядеть устаревшим.

Markdown-it с плагином typographer автоматически учитывает пробелы и тире, что особенно важно для публикаций в вебе и SEO-оптимизации.

Расширенные возможности с плагинами

Для более продвинутой работы с кавычками доступны сторонние плагины:

  • markdown-it-replace — позволяет задавать регулярные выражения для замены любых символов, включая кавычки.
  • markdown-it-attrs — позволяет оборачивать кавычки и текст в кастомные HTML-атрибуты.
  • markdown-it-abbr — может использоваться для сокращений внутри кавычек, чтобы автоматически добавлять всплывающие подсказки.

Пример интеграции с markdown-it-replace:

const replace = require('markdown-it-replace');

const md = new MarkdownIt().use(replace, [
  { pattern: /"/g, replacement: '«' },
  { pattern: /'/g, replacement: '‹' }
]);

const result = md.render('"Пример" и \'одинарная\' кавычка');
console.log(result);

Результат:

<p>«Пример« и ‹одинарная‹ кавычка</p>

Это демонстрирует, как можно полностью контролировать стиль кавычек в тексте Markdown.

Рекомендации по использованию

  • Всегда включать typographer: true для типографически корректных публикаций.
  • Использовать quotes для адаптации под языковые и стилистические стандарты.
  • Для сложных случаев применять кастомные рендер-правила или плагины.
  • Не изменять кавычки внутри кода (inline_code и code_block), чтобы сохранить синтаксис.

Markdown-it предоставляет мощный инструментарий для работы с кавычками, обеспечивая гибкость, корректность и визуальную эстетику текста, что особенно важно для веб-контента, электронных книг и профессиональных публикаций.