md2gost
v1.3.2
Published
Converts markdown to docx format, trying to comply with GOST standards
Readme
md2gost
Render Markdown files into formatted DOCX and PDF documents with automatic GOST formatting.
The project is available in two forms:
- npm package – CLI and JavaScript/TypeScript API.
- VS Code extension – editor integration with preview, table editor, and one-click export.
💡 The Markdown syntax and rendering engine are identical in both versions. All documentation below applies to both.
👻 Quick start
Installation
npm install md2gostor install the CLI globally:
npm install -g md2gostCLI
Render a document:
md2gost report.mdRender directly to PDF:
md2gost report.md --format pdfSpecify an output path:
md2gost report.md -o dist/report.docx
md2gost report.md -o dist/report.pdfOptions:
| Option | Description |
|----------------------------------|---------------------------------------------|
| -o, --output <path> | Output file |
| -f, --format <docx\|pdf> | Output format |
| -k, --keep-intermediate-docx | Keep intermediate DOCX after PDF generation |
| -d, --disable-macros | Disable Word/VBA macros (PDF unavailable) |
JavaScript / TypeScript
import renderMarkdown from "md2gost";
const result = await renderMarkdown({
input: "./report.md",
output: "./report.pdf",
progress(percent, message) {
console.log(`${percent}% ${message}`);
}
});
console.log(result.filePath);The exported API consists of:
renderMarkdown(config)MDRenderConfigMDRenderResultMDRenderError
See the type definitions for the complete API reference.
✨ Features
- Export Markdown → DOCX / PDF
- Autonumbering (figures, tables, code listings, references)
- Generate a table of contents
- Support for the GOST structure of term papers
- Inserting other DOCX/PDF files (e.g., title page)
- Automatically adds “Continued from table/listing #” when tables or listings span multiple pages
- Code highlighting (optional)
- Automatic replacement of “AI” dashes with regular dashes
⚙️ Requirements
Basic rendering
- Node.js
PDF generation
- Windows
- Microsoft Word
Without Microsoft Word, PDF export and several advanced Word-specific features are unavailable.
📖 Documentation
- Шаблон курсовой работы
- Настройка стилей
- Поддерживаемый синтаксис Markdown:
- Дополнительный синтаксис:
- Переключаемые функции:
Написание курсовой работы
При рендере md2gost автоматически формирует специфические разделы курсовой работы согласно ГОСТ.
В связи с различными требованиями к оформлению, вам может понадобится изменить настройки стилей. Строка !!rule numbering lazy включает ленивую автонумерацию для всех элементов.
Шаблон файла
Используйте этот скелет как основу вашего .g.md файла. Заголовки, написанные капсом, являются ключевыми словами, активирующими автоматику.
!!rule numbering lazy
!!(title.docx){}
!!section from 3
# РЕФЕРАТ
ключевые, слова, 5-15 штук
Текст реферата на одной странице.
# ОГЛАВЛЕНИЕ
# ТЕРМИНЫ И ОПРЕДЕЛЕНИЯ
* Термин: Определение после двоеточия
* DOM: Объектная модель документа...
* Git: Система контроля версий...
# ПЕРЕЧЕНЬ СОКРАЩЕНИЙ И ОБОЗНАЧЕНИЙ
* HTML - HyperText Markup Language
* JS - JavaScript
# ВВЕДЕНИЕ
Текст...
# 1 Основная часть
## 1.1 Подраздел
Текст с ссылкой на источник [[mdn]].
Текст с ссылкой на картинку [#] (или [cat]).
![[cat] Кот](cat1.png)
Текст с ссылкой на картинку [cat].
## 1.2 Подраздел
Текст с ссылкой на приложение [код] и на листинг [кодhtml] в нём.
# ЗАКЛЮЧЕНИЕ
...
# СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
[s1] Источник 1
[mdn] Документация MDN Web Docs [Электронный ресурс]. – URL: https://developer.mozilla.org/
# ПРИЛОЖЕНИЯ
## [код] Код приложения
```html [кодhtml] Шаблон html страницы
<!DOCTYPE html>
<html lang="en">
</html>
```
## [imgs] Графический материал
![[just_cat] Кот обыкновенный](cat1.png)
![[imgs_кот] Кот необыкновенный](cat2.png)Особенности автоматизации разделов
При использовании указанных выше заголовков, md2gost применяет к ним специальную логику:
| Раздел | Что делает автоматика |
|----------------------------|------------------------------------------------------------------------------------------------------------------------------------------------|
| РЕФЕРАТ | Добавляет строку со статистикой: Отчет x с., x рис., x табл., x лист., x источн. Ключевые слова автоматически переводятся в ВЕРХНИЙ РЕГИСТР. |
| ОГЛАВЛЕНИЕ | Генерирует иерархический список всех разделов с указанием страниц. |
| ТЕРМИНЫ И ОПРЕДЕЛЕНИЯ | Вставляет фразу «В настоящем отчете применяются следующие термины...» и преобразует список в таблицу. |
| ПЕРЕЧЕНЬ СОКРАЩЕНИЙ... | Вставляет фразу «В настоящем отчете применяют следующие сокращения...». |
| ИСТОЧНИКИ | Автоматически нумерует и сортирует источники в порядке их первого упоминания в тексте. |
| ПРИЛОЖЕНИЯ | Выносит каждый подраздел на новую страницу. Нумерует приложения буквами (А, Б, В...). |
Важные нюансы:
- Разрыв страниц: После каждого из этих разделов (кроме введения и основной части), а также между приложениями, разрыв страницы добавляется автоматически.
- Разделы: Команда
!!section from 3позволяет начать нумерацию страниц с нужного числа (обычно с реферата), пропустив титульный лист и задание. - Ссылки и идентификаторы: В квадратных скобках пишутся ссылки на элементы:
- В тексте для источников указывайте [[mdn]] – программа заменит его на номер (например, [2]).
- Для картинок, таблиц, листингов и приложений указывайте «...в листинге [indexjs]» или «...в приложении [код]» – автоматика заменит их на правильные буквенно-цифровые ссылки: «...в листинге 1» или «...в приложении А».
Поддерживаемый синтаксис
Текст
Пустая строка разделяет параграфы. В отличие от обычного Markdown перенос строки сохраняется в параграфе.
Выделение *курсивом*
Выделение **жирным**
Выделение ***курсивом и жирным***
Выделение `моношрифтом` (см. ниже)
Неразрывный пробел: 5 кг
Ссылка: [подпись](https://example.com)Некоторые символы автоматически заменяются на другие, см. автозамены.
Для вставки пустых строк можно воспользоваться символами переноса строки <br>.
Есть разница между переносом строки просто и переносом строки с помощью <br>:
Перенос строки просто написав текст на двух строчках,
добавляет таб перед переносом строки, чтобы текст не растягивался
Перенос строки с помощью спецсимвола, <br>не добавляет таб перед переносом строки, чтобы делать *правильный* перенос строки
Выделение с помощью обратных кавычек `монотекст` по умолчанию отображается как курсив. С помощью правила backtick_mono можно именить отображение:
!!rule backtick_mono italic- курсив (по умолчанию)
!!rule backtick_mono off- обычный текст
!!rule backtick_mono on- моношрифт
!!rule backtick_mono outline- моношрифт в рамочке
Заголовки
# Заголовок первого уровня
## Заголовок второго уровня
### и т. д.Списки
При экспорте автоматически добавляются запятые/точка с запятой у элементов и точка у последнего элемента
Не нумерованный список:
* первое
* второе
- можно чертой
Нумерованный список:
1. первое
1. второе
2) можно скобкой
Вложенный список:
1. первое
* подпункт 1
* подпункт 2
2. второеКартинки
Картинкам можно задать размер, указав его в фигурных скобках.
В тексте подписи можно вставить перенос строки с помощью <br> (т.к. поддерживается только однострочное объявление картинки).
Путь к картинке вычисляется относителено .g.md файла
После квадратной скобки пробела быть не должно (тут он стоит из-за некоторых проблем с отображением этого файла)
![подпись] (путь/к/файлу.png)
![подпись] (путь/к/файлу.png){ширина x высота}
![Рисунок 1.1 - Пример] (image.png)
![Рисунок 1.2 - С указанием ширины] (image.png){340}
![Рисунок 1.3 - С указанием высоты] (image.png){x265}
![Рисунок 1.4 - С указанием размера] (image.png){340x265}
![Рисунок 1.5 - Важные зарисовки, с очень длинным названием, \nкоторое не умещается в одну строку] (image.png){340}Листинг
В отличие от обычного Markdown после кода языка в первой строке пишется заголовок листинга (при разрыве листинга на несколько страниц заголовок продублируется автоматически).
```html Листинг 1.1 - Шаблон html страницы
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
</body>
</html>
```Если листинг содержит текст, не являющийся языком программирования, укажите любую строку.
```txt Листинг 1.2 - Важные заметки
Этот листинг содержит просто текст. В качестве языка указано txt, но можно указать что угодно
```Таблицы
Параграф перед таблицей считается её подписью и при экспорте соответствующе форматируется.
Для вставки переноса строки внутри ячейки напишите <br>.
Таблица 1 - Результат анализа
Заголовок 1 | Заголовок 2 | Заголовок 3
------------|-------------|------------
текст | текст | текст
текст | текст | текстПоддерживается выравнивание текста с помощью двоеточия :. Вертикальные черты по краям таблицы опциональны.
Таблица 1 - Результат анализа
| Слева | По центру | Справа |
|:------|:---------:|-------:|
| текст | текст | текст |
| текст | текст | текст |Комментарии
Этот текст исчезнет при экспорте. Поддерживаются только отдельно стоящие комментарии.
<!-- Комментарий -->
<!-- Комментарий
в две строки -->
<!-- Исчезнет вся строка --> это тоже исчезнетРазрыв страницы
---Для вставки разрыва раздела см. Разрыв раздела.
Правила
Правила - специальные команды для изменения работы системы. Их можно писать в любом месте документа - они влияют на весь документ вне зависимости от расположения. Если одно и тоже правило указано несколько раз, используется последнее значение.
!!rule имя правилаОглавление
Достаточно написать заголовок "Оглавление"
# ОглавлениеРазрыв раздела
Создаёт разрыв раздела в документе:
!!section
Раздел без нумерации страниц
!!section from 3
Раздел с нумерацией страниц начиная с 3Различия:
---– просто разрыв страницы без влияния на нумерацию.!!section– начинает новую страницу и сбрасывает нумерацию.
Автонумерация
Система автонумерации автоматически нумерует элементы документа (разделы, рисунки, таблицы, листинги, источники) и позволяет ссылаться на них из текста.
Номера элементов и ссылки задаются выражениями в квадратных скобках: [...].
Поведение автонумерации можно настроить (см. тут). Совет: включите ленивую автонумерацию.
Базовый функционал:
В тексте [#] указывает на следующий элемент нумерации - рисунок, таблица, листинг - первое, что из этого встретилось.
В подписи элемента [#] заменяется на номер и подпись (например: Рисунок 1 - ).
В заголовках первого уровня цифра, поставленная вручную, распознаётся и последующие [#] продолжают с неё.
Ссылка на следующий элемент:
# 1 Примеры
## [#] Пример с рисунком
На рисунке [#] показан кот.
![[#] Кот] (cat.png)
![[#] Кот] (cat.png)
## [#] Пример с листингом
В листинге [#] показан код.
```html [#] Одинокий div
<div></div>
```
## [#] Пример с таблицей
В таблице [#] показаны результаты анализа.
[#] Результат анализа
Заголовок 1 | Заголовок 2
------------|------------
текст | текстРезультат:
# 1 Примеры
## 1.1 Пример с рисунком
На рисунке 1 показан кот.
![Рисунок 1 - Кот] (cat.png)
![Рисунок 2 - Кот] (cat.png)
## 1.2 Пример с листингом
В листинге 1 показан код.
```html Листинг 1 - Одинокий div
<div></div>
```
## 1.3 Пример с таблицей
В таблице 1 показаны результаты анализа.
Таблица 1 - Результат анализа
Заголовок 1 | Заголовок 2
------------|------------
текст | текстУ картинки перед круглой скобкой пробела быть не должно (тут он стоит из-за некоторых проблем с отображением этого файла)
Нумерация по разделам:
!!rule numbering sections on
# 1 Первый раздел
На рисунке [#] показан кот.
![[#] Кот] (cat.png)
![[#] Кот] (cat.png)
# [#] Второй раздел
На рисунке [#] показан кот.
![[#] Кот] (cat.png)
![[#] Кот] (cat.png)Результат:
# 1 Первый раздел
На рисунке 1.1 показан кот.
![Рисунок 1.1 - Кот] (cat.png)
![Рисунок 1.2 - Кот] (cat.png)
# 2 Второй раздел
На рисунке 2.1 показан кот.
![Рисунок 2.1 - Кот] (cat.png)
![Рисунок 2.2 - Кот] (cat.png)Относительные ссылки
К номеру можно применять смещение: [# ± N].
[#-1] предыдущий элемент
[#+2] через два вперёд
[#-3] на три назадПримеры:
![[#] Мяч] (ball.png)
На рисунке [#-1] был изображён кот
Ниже, на рисунках [#]-[#+2] изображены коты
![[#] Кот] (cat1.png)
![[#] Котик] (cat2.png)
![[#] Котяра] (cat3.png)
Выше, на рисунках [#-3]-[#-1] были изображены котыРезультат:
![Рисунок 1 - Мяч] (ball.png)
На рисунке 1 был изображён кот
Ниже, на рисунках 2-4 изображены коты
![Рисунок 2 - Кот] (cat1.png)
![Рисунок 3 - Котик] (cat2.png)
![Рисунок 4 - Котяра] (cat3.png)
Выше, на рисунках 2-4 были изображены котыУ картинок перед круглой скобкой пробела быть не должно (тут он стоит из-за некоторых проблем с отображением этого файла)
Именованные ссылки
Элементу можно присвоить идентификатор, который позволяет ссылаться на него из других мест документа: [name]. Идентификатор может состоять из латинских и кириллических букв, цифр и нижнего подчёркивания (без пробелов!). Идентификатор чувствителен к регистру.
В разделе [cats] вопрос будет рассмотрен подробнее
## [cats] О котах
Ниже, на рисунках [cat]-[Котяра] изображены коты
![[cat] Кот] (cat1.png)
![[img2] Котик] (cat2.png)
![[Котяра] Котяра] (cat3.png)К именованной ссылке также можно применять смещение: [name ± N].
Ниже, на рисунках [cat]-[cat+2] изображены коты
![[cat] Кот] (cat1.png)
![[#] Котик] (cat2.png)
![[#] Котяра] (cat3.png)У картинок перед круглой скобкой пробела быть не должно (тут он стоит из-за некоторых проблем с отображением этого файла)
Количество элементов
Специальные выражения выводят общее количество элементов.
Документ содержит [!pages] страниц,
[!imgs] рисунков,
[!tables] таблиц,
[!codes] листингов.Примечание: [!pages] может отображаться некоректно до рендера в pdf (как пустота или неверное значение). В таком случае выделите это место в Word и нажмите ПКМ->"Обновить поле" (при рендере в pdf не требуется).
Настройки автонумерации
- Включить ленивую автонумерацию:
!!rule numbering lazy- Когда включено, более не нужно писать
[#]в названиях картинок, таблиц и т.д. - добавляется автоматически
- Когда включено, более не нужно писать
- Включить нумерацию по разделам:
!!rule numbering sectionsРисунок 1 - Кот->Рисунок 1.1 - Кот
- Отключить автоматическое добавление названия элемента:
!!rule numbering autoprefix off![[#] Кот] (cat.png):Рисунок 1 - Кот->1 Кот
![Рисуночек [#]: Кот] (cat.png):Рисуночек Рисунок 1 - : Кот->Рисуночек 1: Кот
Пример с включённой ленивой автонумерацией (именованные элементы продолжают работать как раньше):
!!rule numbering lazy
Ниже, на рисунках [#] и [cat] изображены коты
![Кот] (cat1.png)
![[cat] Котик] (cat2.png)
В таблице [#] показаны результаты анализа.
Результат анализа
Заголовок 1 | Заголовок 2
------------|------------
текст | текст
Код представлен в листинге [#].
```html Шаблон html страницы
<html></html>
```Вставка внешнего документа
Команда позволяет вставить содержимое файлов DOCX (с поддержкой шаблонизации) или PDF. Путь к документу вычисляется относителено .g.md файла
Синтаксис: !!(путь/к/файлу){"ключ": "значение"}
Особенности вставки:
DOCX: Поддерживает передачу параметров. Внутри файла поля должны быть оформлены в двойных фигурных скобках:
{{поле}}.
PDF: Вставляется «как есть», блок параметров должен быть пустым
{}.
Ограничение: Вставка внешнего файла поддерживается только при экспорте в PDF.
Примеры использования
1. Простая вставка DOCX или PDF
В самом начале документа:
!!(title.docx){}
!!(title.pdf){}2. Вставка с параметрами и управлением нумерацией
Если нужно передать данные в шаблон и начать нумерацию основного документа, например, со второй страницы:
!!(title.docx){
"taskN": "1",
"topic": "Сбалансированные деревья поиска",
"group": "КЛМН-00-00",
"name": "Иванов П.С."
}
!!section from 2Подробнее про !!section в главе Разрыв раздела.
3. Вставка в произвольное место документа
Документ можно вставить не только в начало.
Текст основного документа...
!!(важная вставка.pdf){}
Продолжение основного текста...Незнамо на кой оно нужно, но чего сделано не воротишь
Блок параметров парсится как json, так что можно и числа, и объекты, и списки там писать. И такой неожиданый способ использования был предусмотрен...
!!(title.docx){
"students": [
{ "name": "Вася", "group": "ЁКЛМН-20-24" },
{ "name": "Петя", "group": "ЁПРСТ-30-24" },
null,
],
"veryImportantFeature": false,
"apples": 1.5,
}В ворде такие поля будут доступны через точку, напрмер {{students.0.name}}. Парсер расплющивает сложный объект в плоский список ключей. Так что пример выше идентичен такой записи:
!!(title.docx){
"students.0.name": "Вася",
"students.0.group": "ЁКЛМН-20-24",
"students.1.name": "Петя",
"students.1.group": "ЁПРСТ-30-24",
"veryImportantFeature": "false",
"apples": "1.5"
}Автозамены
Некоторые символы автоматически заменяются на другие
—на-("ИИ" тире на обычные)-на–(пробел-тире-пробел на вордовое тире)<br>на перенос строки"текст"на«текст»(кавычки-ёлочки)« » ‹ ›на« » ‹ › на неразрывный пробел	на отступ (таб)⋆на*|на|­на Soft Hyphen (мягкий перенос)​на ничего (используйте чтобы обмануть парсер)α β γ δ ε ζ η θ ι κ λ μ ν ξ ο π ρ σ τ υ φ χ ψ ω Δ Σ Ωнаα β γ δ ε ζ η θ ι κ λ μ ν ξ ο π ρ σ τ υ φ χ ψ ω Δ Σ Ω∞ ∑ ∏ √ ∫ ∂ ≈ ≠ < > ≤ ≥ ± × ÷на∞ ∑ ∏ √ ∫ ∂ ≈ ≠ < > ≤ ≥ ± × ÷© ® ™ § ¶ … • · ° € £ ¥ ¢ ¤ ƒ ‰на© ® ™ § ¶ … • · ° € £ ¥ ¢ ¤ ƒ ‰[!pages]на кол-во страниц[!imgs]на кол-во картинок[!tables]на кол-во таблиц[!codes]на кол-во листингов[!sources]на кол-во источников
Настройка стилей
Строгость ГОСТа не уступает его разнообразию. В этом разделе представлены правила для настройки стилей.
Строку с ключевым словом !!rule можно писать в любом месте документа. Правила применяются ко всему документу. Приоритет определяется только порядком правил.
Размеры (size, spacing) задаются в пунктах (pt).
Правила:
- Обычный текст (Абзацы)
- Размер шрифта
!!rule text size <int>- Пример:
!!rule text size 12 - По умолчанию:
14пт
- Межстрочный интервал
!!rule text line_spacing <float>- Пример:
!!rule text line_spacing 1.25 - По умолчанию:
1.5
- Абзацный отступ (Красная строка)
!!rule text indent <float>- Пример:
!!rule text indent 0.75 - По умолчанию:
1.25см
- Интервал после абзаца
!!rule text spacing after <int>- Пример:
!!rule text spacing after 0 - По умолчанию:
8пт
- Размер шрифта
- Заголовки
- Размер заголовка
!!rule headings h<1-6>[+] size <int>- Примеры:
!!rule headings h1 size 18– установить размер 18 пт для заголовков первого уровня!!rule headings h2+ size 14– установить размер 14 пт для заголовков второго и последующих уровней
- По умолчанию:
14пт для всех заголовков
- Интервал до и после
!!rule headings h<1-6>[+] spacing <before|after> <int>- Пример:
!!rule headings h1 spacing after 10 - По умолчанию:
- h1 – before:
18пт; after:4пт - остальные – before:
8пт; after:4пт
- h1 – before:
- Приведение к верхнему регистру
!!rule headings h<1-6>[+] uppercase- Пример:
!!rule headings h1 uppercase - По умолчанию: выключено для всех
- Отступ слева вместо абзацного отступа
!!rule headings h<1-6>[+] indent <first_line|left>- Пример:
!!rule headings h1 indent left - По умолчанию:
first_line(абзацный отступ) для всех
- Использовать готовый набор стилей
!!rule headings alt_style_1- Эквивалентен последовательности обычных
!!rule. Может быть переопределён правилами, указанными после.!!rule headings h1+ indent left !!rule headings h1+ spacing after 10 !!rule headings h1 size 18 !!rule headings h1 uppercase !!rule headings h1 spacing before 0 !!rule headings h2 size 16 !!rule headings h2+ spacing before 15
- Размер заголовка
- Автоматическая расстановка переносов
!!rule hyphenation- По умолчанию: выключено
- Таблицы
- Начертание названия
!!rule table title style <normal|bold|italic>- Пример:
!!rule table title style italic - По умолчанию:
normal
- Размер шрифта названия
!!rule table title size <int>- Пример:
!!rule table title size 12 - По умолчанию: наследуется от текста
- Интервал перед названием
!!rule table spacing before <int>- Пример:
!!rule table spacing before 6 - По умолчанию:
0пт
- Интервал после таблицы
!!rule table spacing after <int>- Пример:
!!rule table spacing after 6 - По умолчанию: наследуется от текста
- Начертание заголовка
!!rule table heading style <normal|bold|italic>- Пример:
!!rule table heading style bold - По умолчанию:
normal
- Выравнивание заголовка
!!rule table heading align <left|center|right>- Пример:
!!rule table heading align left - По умолчанию:
center
- Размер шрифта текста таблицы
!!rule table text size <int>- Пример:
!!rule table text size 10 - По умолчанию:
12пт
- Межстрочный интервал текста таблицы
!!rule table text line_spacing <float>- Пример:
!!rule table text line_spacing 1 - По умолчанию:
1.25
- Начертание названия
- Листинги
- Начертание названия
!!rule code title style <normal|bold|italic>- Пример:
!!rule code title style italic - По умолчанию:
normal
- Размер шрифта названия
!!rule code title size <int>- Пример:
!!rule code title size 12 - По умолчанию: наследуется от текста
- Интервал перед названием
!!rule code spacing before <int>- Пример:
!!rule code spacing before 8 - По умолчанию:
0пт
- Интервал после листинга
!!rule code spacing after <int>- Пример:
!!rule code spacing after 6 - По умолчанию: наследуется от текста
- Размер шрифта
!!rule code text size <int>- Пример:
!!rule code text size 10 - По умолчанию:
12пт
- Подсветка синтаксиса кода
!!rule code highlight- По умолчанию: выключено
- Начертание названия
- Картинки
- Размер шрифта подписи
!!rule img text size <int>- Пример:
!!rule img text size 12 - По умолчанию: наследуется от текста
- Интервал перед картинкой
!!rule img spacing before <int>- Пример:
!!rule img spacing before 8 - По умолчанию:
0пт
- Интервал после абзаца подписи
!!rule img spacing after <int>- Пример:
!!rule img spacing after 6 - По умолчанию: наследуется от текста
- Размер шрифта подписи
- Списки
- Символ для ненумерованных списков
!!rule list unordered style <dash|bullet|keep>keep– Сохранять символ, использованный в исходном файле- Пример:
!!rule list unordered style keep - По умолчанию:
bullet
- Символ для нумерованных списков
!!rule list ordered style <bracket|dot|keep>keep– Сохранять символ, использованный в исходном файле- Пример:
!!rule list ordered style keep - По умолчанию:
bracket
- Автоматическая замена знаков препинания в конце элементов списка. Элементы списка оканчиваются запятой или точкой с запятой, последний элемент точкой.
!!rule list autopunctuation <on|off>- Пример:
!!rule list autopunctuation off - По умолчанию:
on
- Символ для ненумерованных списков
Примеры
- Крупный заголовок первого уровня:
!!rule headings h1 size 18 !!rule headings h1 uppercase - Все заголовки без абзацного отступа:
!!rule headings h1+ indent left - Пример настройки под типичный ГОСТ:
!!rule headings alt_style_1 !!rule code title style italic !!rule table title style italic !!rule table heading style bold !!rule hyphenation
Подсветка синтаксиса кода
По ГОСТу листинги просто чёрно-белые, так что этот пункт не для курсовой
Чтобы включить подсветку кода, добавьте строчку !!rule code highlight в любом месте (один раз на весь файл).
Поддерживаются следующие языки:
- html, xml, css, js, ts, jsx, tsx, json, bash, powershell, python, java, c, cpp, csharp, go, rust, php, ruby, swift, kotlin, sql, yaml, markdown, docker, nginx
!!rule code highlight
```html Листинг 1.1 - Красивый листинг
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
</body>
</html>
```Подпись названия и автора
Отображаются в свойствах файла и в заголовке окна при открытии PDF.
!!rule title Мой отчёт
!!rule author Иванов П.С.Что-то ещё
- Установить время редактирования в минутах
!!rule etime <int>- Пример:
!!rule etime 123 - По умолчанию: случайное число от 30 до 120
- Установить время создания
!!rule ctime <ISO 8601>- Пример:
!!rule ctime 2026-02-18 - По умолчанию: время создания
.g.mdфайла
- Установить время изменения
!!rule mtime <ISO 8601>- Пример:
!!rule mtime 2026-02-18T12:30:00 - По умолчанию: время рендера
!!rule rainbow
