md2gost 1.5.1 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +43 -1
- package/README.md +418 -19
- package/assets/styles.xml +126 -0
- package/assets/template.dotm +0 -0
- package/dist/index.d.ts +45 -0
- package/dist/index.js +2329 -415
- package/dist/index.js.map +3 -3
- package/dist/index.mjs +2281 -365
- package/dist/index.mjs.map +3 -3
- package/package.json +35 -7
package/README.md
CHANGED
|
@@ -113,14 +113,17 @@ Without Microsoft Word, PDF export and several advanced Word-specific features a
|
|
|
113
113
|
* [Картинки](#картинки)
|
|
114
114
|
* [Листинг](#листинг)
|
|
115
115
|
* [Таблицы](#таблицы)
|
|
116
|
+
* [Формулы](#формулы)
|
|
116
117
|
* [Комментарии](#комментарии)
|
|
118
|
+
* [Блоки Admonition](#блоки-admonition)
|
|
117
119
|
* [Разрыв страницы](#разрыв-страницы)
|
|
118
120
|
* Дополнительный синтаксис:
|
|
119
121
|
* [Правила (!!rule)](#правила)
|
|
120
122
|
* [Оглавление](#оглавление)
|
|
121
123
|
* [Разрыв раздела](#разрыв-раздела)
|
|
124
|
+
* [Колонтитулы](#колонтитулы)
|
|
122
125
|
* [Автонумерация](#автонумерация)
|
|
123
|
-
* [Вставка
|
|
126
|
+
* [Вставка DOCX, PDF и Markdown](#вставка-внешнего-документа)
|
|
124
127
|
* [Автозамены](#автозамены)
|
|
125
128
|
* Переключаемые функции:
|
|
126
129
|
* [Подсветка синтаксиса кода](#подсветка-синтаксиса-кода)
|
|
@@ -239,19 +242,19 @@ Without Microsoft Word, PDF export and several advanced Word-specific features a
|
|
|
239
242
|

|
|
240
243
|
|
|
241
244
|
Выделение с помощью обратных кавычек ``` `монотекст` ``` по умолчанию отображается как курсив. С помощью [правила](#правила) `backtick_mono` можно изменить отображение:
|
|
242
|
-
* `!!rule backtick_mono italic`
|
|
245
|
+
* `!!rule backtick_mono italic` – курсив (по умолчанию)
|
|
243
246
|
|
|
244
247
|

|
|
245
248
|
|
|
246
|
-
* `!!rule backtick_mono off`
|
|
249
|
+
* `!!rule backtick_mono off` – обычный текст
|
|
247
250
|
|
|
248
251
|

|
|
249
252
|
|
|
250
|
-
* `!!rule backtick_mono on`
|
|
253
|
+
* `!!rule backtick_mono on` – моношрифт
|
|
251
254
|
|
|
252
255
|

|
|
253
256
|
|
|
254
|
-
* `!!rule backtick_mono outline`
|
|
257
|
+
* `!!rule backtick_mono outline` – моношрифт в рамочке
|
|
255
258
|
|
|
256
259
|

|
|
257
260
|
|
|
@@ -302,6 +305,8 @@ Without Microsoft Word, PDF export and several advanced Word-specific features a
|
|
|
302
305
|
![Рисунок 1.5 - Важные зарисовки, с очень длинным названием, <br>которое не умещается в одну строку] (image.png){340}
|
|
303
306
|
```
|
|
304
307
|
|
|
308
|
+
Если курсор находится на строке с Markdown-картинкой, при вставке изображения из буфера обмена доступно действие **Replace image with …**. Оно сохраняет изображение в той же папке под новым именем с номером (например, `image.png` → `image1.png`) и обновляет путь в Markdown. Исходный файл не перезаписывается. Работает с локальными путями в сохранённом файле.
|
|
309
|
+
|
|
305
310
|
|
|
306
311
|
### Листинг
|
|
307
312
|
В отличие от обычного Markdown после кода языка в первой строке пишется заголовок листинга (при разрыве листинга на несколько страниц заголовок продублируется автоматически).
|
|
@@ -353,6 +358,29 @@ Without Microsoft Word, PDF export and several advanced Word-specific features a
|
|
|
353
358
|
| текст | текст | текст |
|
|
354
359
|
```
|
|
355
360
|
|
|
361
|
+
### Формулы
|
|
362
|
+
|
|
363
|
+
Формулы записываются в LaTeX-синтаксис. Строчные формулы заключаются в одинарные знаки доллара, а блочные — в двойные. Открывающий и закрывающий маркеры блочной формулы должны находиться на отдельных строках; формулы внутри абзаца при экспорте не считаются блочными. Чтобы вывести знак доллара как обычный символ, экранируйте его обратным слешем: `\$`.
|
|
364
|
+
|
|
365
|
+
```md
|
|
366
|
+
Скорость равна $v = \frac{s}{t}$.
|
|
367
|
+
|
|
368
|
+
$$
|
|
369
|
+
E = mc^2
|
|
370
|
+
$$
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
Чтобы указать номер блочной формуле напишите любой текст в круглых скобках на отдельной строке непосредственно перед формулой:
|
|
374
|
+
|
|
375
|
+
```md
|
|
376
|
+
(А.1)
|
|
377
|
+
$$
|
|
378
|
+
E = mc^2
|
|
379
|
+
$$
|
|
380
|
+
|
|
381
|
+
Как показано в формуле А.1, энергия зависит от массы.
|
|
382
|
+
```
|
|
383
|
+
|
|
356
384
|
### Комментарии
|
|
357
385
|
Этот текст исчезнет при экспорте. Поддерживаются только отдельно стоящие комментарии.
|
|
358
386
|
```md
|
|
@@ -363,6 +391,88 @@ Without Microsoft Word, PDF export and several advanced Word-specific features a
|
|
|
363
391
|
<!-- Исчезнет вся строка --> это тоже исчезнет
|
|
364
392
|
```
|
|
365
393
|
|
|
394
|
+
### Блоки Admonition
|
|
395
|
+
|
|
396
|
+
Admonition – это выделенный информационный блок. Синтаксис совместим с [Admonitions в Docusaurus](https://docusaurus.io/docs/markdown-features/admonitions): блок начинается с трёх двоеточий и его типа, а заканчивается строкой из трёх двоеточий.
|
|
397
|
+
|
|
398
|
+
> **Важно:** Admonition не является элементом оформления по ГОСТ. Используйте его в документах, где важнее наглядно отделить примечание, рекомендацию или предупреждение, чем строго следовать ГОСТ.
|
|
399
|
+
|
|
400
|
+
Поддерживаются типы `note`, `info`, `tip`, `warning` и `danger`. У каждого типа свой цвет; при стандартных настройках это соответственно нейтральный, синий, зелёный, оранжевый и красный блок.
|
|
401
|
+
|
|
402
|
+
````md
|
|
403
|
+
:::note
|
|
404
|
+
Обычное примечание. Внутри работает Markdown: **жирный текст**, *курсив* и [ссылки](https://example.com).
|
|
405
|
+
:::
|
|
406
|
+
|
|
407
|
+
:::info
|
|
408
|
+
В процессе измерения допускается отклонение температуры не более чем на 2 °C от заданного значения.
|
|
409
|
+
:::
|
|
410
|
+
|
|
411
|
+
:::tip
|
|
412
|
+
Для повышения точности измерений выполняйте калибровку прибора перед каждой серией экспериментов.
|
|
413
|
+
:::
|
|
414
|
+
|
|
415
|
+
:::warning
|
|
416
|
+
Перед запуском алгоритма убедитесь, что входные данные приведены к единому масштабу.
|
|
417
|
+
:::
|
|
418
|
+
|
|
419
|
+
:::danger
|
|
420
|
+
Удаление исходных данных до завершения обработки делает результаты эксперимента невосстановимыми.
|
|
421
|
+
:::
|
|
422
|
+
````
|
|
423
|
+
|
|
424
|
+

|
|
425
|
+
|
|
426
|
+
Заголовок блока можно заменить своим текстом, указав его в квадратных скобках, можно указать пустой заголовок. Некоторые форматтеры Markdown требуют пустые строки внутри блока, поэтому для них используйте такой вариант. Форматтер, идущий вместе с расширением, понимает Admonition и без пустых строк.
|
|
427
|
+
|
|
428
|
+
````md
|
|
429
|
+
:::tip[Рекомендация по *измерениям*]
|
|
430
|
+
|
|
431
|
+
Перед каждой серией измерений выполняйте калибровку прибора.
|
|
432
|
+
|
|
433
|
+
:::
|
|
434
|
+
:::note[]
|
|
435
|
+
Без заголовка
|
|
436
|
+
:::
|
|
437
|
+
:::note[ ]
|
|
438
|
+
Без заголовка, но с иконкой
|
|
439
|
+
:::
|
|
440
|
+
````
|
|
441
|
+
|
|
442
|
+

|
|
443
|
+
|
|
444
|
+
#### Настройка оформления
|
|
445
|
+
|
|
446
|
+
Оформление меняется правилами `!!rule`. Вместо `<type>` укажите один из типов блока или `all`, чтобы применить правило ко всем Admonition; правило для конкретного типа, указанное позднее, имеет приоритет.
|
|
447
|
+
|
|
448
|
+
Правило `title` используется, только когда заголовок не указан в квадратных скобках у самого блока, можно указать пустое значение чтобы убрать заголовок (укажите ` ` чтобы сохранить иконку с пустым заголовком).
|
|
449
|
+
|
|
450
|
+
| Что настраивается | Правило | Пример |
|
|
451
|
+
|---------------------------------------------------------|------------------------------------------------------------|------------------------------------------------|
|
|
452
|
+
| Внешний отступ до/после блока, пт | `!!rule admonition <type> spacing <before\|after> <int>` | `!!rule admonition all spacing before 8` |
|
|
453
|
+
| Отступ блока слева, см | `!!rule admonition <type> indent <float>` | `!!rule admonition all indent 1.25` |
|
|
454
|
+
| Внутренние отступы блока по горизонтали и вертикали, пт | `!!rule admonition <type> padding <horizontal> <vertical>` | `!!rule admonition all padding 10 6` |
|
|
455
|
+
| Цвет фона | `!!rule admonition <type> background <#RRGGBB>` | `!!rule admonition warning background #FFF6E8` |
|
|
456
|
+
| Акцентный цвет: полоска, заголовок и иконка | `!!rule admonition <type> color <#RRGGBB>` | `!!rule admonition warning color #B26A00` |
|
|
457
|
+
| Ширина цветной полоски слева, пт | `!!rule admonition <type> bar_width <float>` | `!!rule admonition all bar_width 2.25` |
|
|
458
|
+
| Показывать иконку возле заголовка | `!!rule admonition <type> icon <on\|off>` | `!!rule admonition note icon off` |
|
|
459
|
+
| Размер иконки, пт | `!!rule admonition <type> icon size <int>` | `!!rule admonition all icon size 16` |
|
|
460
|
+
| Окрашивать заголовок акцентным цветом | `!!rule admonition <type> title_color <on\|off>` | `!!rule admonition all title_color off` |
|
|
461
|
+
| Заголовок по умолчанию | `!!rule admonition <type> title <текст>` | `!!rule admonition warning title **Важно**` |
|
|
462
|
+
|
|
463
|
+
Например, следующий набор правил создаёт блоки в строгом стиле, а для критического сообщения задаёт более заметный цвет:
|
|
464
|
+
|
|
465
|
+
```
|
|
466
|
+
!!rule admonition all padding 6 4
|
|
467
|
+
!!rule admonition all icon off
|
|
468
|
+
!!rule admonition all title_color off
|
|
469
|
+
!!rule admonition all background #ffffff
|
|
470
|
+
!!rule admonition danger background #FFF4F4
|
|
471
|
+
!!rule admonition danger icon on
|
|
472
|
+
```
|
|
473
|
+
|
|
474
|
+

|
|
475
|
+
|
|
366
476
|
### Разрыв страницы
|
|
367
477
|
```
|
|
368
478
|
---
|
|
@@ -372,7 +482,7 @@ Without Microsoft Word, PDF export and several advanced Word-specific features a
|
|
|
372
482
|
|
|
373
483
|
|
|
374
484
|
### Правила
|
|
375
|
-
Правила
|
|
485
|
+
Правила – специальные команды для изменения работы системы. Их можно писать в любом месте документа – они влияют на весь документ вне зависимости от расположения. Если одно и тоже правило указано несколько раз, используется последнее значение.
|
|
376
486
|
|
|
377
487
|
```
|
|
378
488
|
!!rule имя правила
|
|
@@ -426,8 +536,46 @@ Without Microsoft Word, PDF export and several advanced Word-specific features a
|
|
|
426
536
|
Альбомная ориентация с нумерацией с 3-й страницы
|
|
427
537
|
```
|
|
428
538
|
|
|
539
|
+
### Колонтитулы
|
|
540
|
+
|
|
541
|
+
Колонтитулы позволяют выводить повторяющуюся информацию сверху и снизу страниц: например, инвентарный номер документа и таблицу для регистрации изменений. Синтаксис поддерживает текст и одну таблицу внутри каждого блока.
|
|
542
|
+
|
|
543
|
+
```md
|
|
544
|
+
!!header align=center
|
|
545
|
+
Инвентарный номер:<br>567.0004653-03 98 01-07
|
|
546
|
+
!!endheader
|
|
547
|
+
|
|
548
|
+
!!footer
|
|
549
|
+
| № изменения: _________ | Подпись отв. лица: __________ | Стр. [!page] из [!pages] |
|
|
550
|
+
|:--|:--|--:|
|
|
551
|
+
!!endfooter
|
|
552
|
+
```
|
|
553
|
+
|
|
554
|
+
**Синтаксис:**
|
|
555
|
+
|
|
556
|
+
```text
|
|
557
|
+
!!header [align=left|center|right]
|
|
558
|
+
содержимое
|
|
559
|
+
!!endheader
|
|
560
|
+
|
|
561
|
+
!!footer [align=left|center|right]
|
|
562
|
+
содержимое
|
|
563
|
+
!!endfooter
|
|
564
|
+
|
|
565
|
+
!!header none
|
|
566
|
+
!!footer none|auto
|
|
567
|
+
```
|
|
568
|
+
|
|
569
|
+
- `align` задаёт выравнивание текстового содержимого; по умолчанию – `left`.
|
|
570
|
+
- В блоке допустимы обычный текст, inline-форматирование и одна Markdown-таблица. Таблица занимает всю рабочую ширину страницы и выводится с границами.
|
|
571
|
+
- `[!page]` – номер текущей страницы; `[!pages]` – общее число страниц документа.
|
|
572
|
+
- `!!header` и `!!footer` настраивают текущий раздел и не создают разрыв раздела. За создание раздела отвечает только `!!section`.
|
|
573
|
+
- Настройка действует для текущего и следующих разделов до следующего одноимённого оператора или конца документа. Новый `!!header` не изменяет footer и наоборот.
|
|
574
|
+
- `!!header none` и `!!footer none` отключают соответствующий колонтитул. `!!footer auto` возвращает стандартный автоматический нижний колонтитул с номером страницы.
|
|
575
|
+
- Чтобы первая страница имела иной колонтитул, перед ней следует создать отдельный раздел с помощью `!!section`.
|
|
576
|
+
|
|
429
577
|
### Автонумерация
|
|
430
|
-
Система автонумерации автоматически нумерует элементы документа (разделы, рисунки, таблицы, листинги, источники) и позволяет ссылаться на них из текста.
|
|
578
|
+
Система автонумерации автоматически нумерует элементы документа (разделы, рисунки, таблицы, листинги, формулы, источники) и позволяет ссылаться на них из текста.
|
|
431
579
|
|
|
432
580
|
Номера элементов и ссылки задаются выражениями в квадратных скобках: `[...]`.
|
|
433
581
|
|
|
@@ -435,7 +583,7 @@ Without Microsoft Word, PDF export and several advanced Word-specific features a
|
|
|
435
583
|
|
|
436
584
|
#### Базовый функционал:
|
|
437
585
|
|
|
438
|
-
В тексте `[#]` указывает на следующий элемент нумерации
|
|
586
|
+
В тексте `[#]` указывает на следующий элемент нумерации – рисунок, таблица, листинг, формула – первое, что из этого встретилось.
|
|
439
587
|
|
|
440
588
|
В подписи элемента `[#]` заменяется на номер и подпись (например: `Рисунок 1 - `).
|
|
441
589
|
|
|
@@ -466,6 +614,14 @@ Without Microsoft Word, PDF export and several advanced Word-specific features a
|
|
|
466
614
|
Заголовок 1 | Заголовок 2
|
|
467
615
|
------------|------------
|
|
468
616
|
текст | текст
|
|
617
|
+
|
|
618
|
+
## [#] Пример с формулой
|
|
619
|
+
В формуле [#] показана связь энергии и массы.
|
|
620
|
+
|
|
621
|
+
[#]
|
|
622
|
+
$$
|
|
623
|
+
E = mc^2
|
|
624
|
+
$$
|
|
469
625
|
````
|
|
470
626
|
|
|
471
627
|
**Результат:**
|
|
@@ -492,6 +648,11 @@ Without Microsoft Word, PDF export and several advanced Word-specific features a
|
|
|
492
648
|
Заголовок 1 | Заголовок 2
|
|
493
649
|
------------|------------
|
|
494
650
|
текст | текст
|
|
651
|
+
|
|
652
|
+
## 1.4 Пример с формулой
|
|
653
|
+
В формуле 1 показана связь энергии и массы.
|
|
654
|
+
|
|
655
|
+
E = mc^2 \qquad (1)
|
|
495
656
|
````
|
|
496
657
|
|
|
497
658
|
*У картинки перед круглой скобкой пробела быть не должно (тут он стоит из-за некоторых проблем с отображением этого файла)*
|
|
@@ -573,6 +734,12 @@ Without Microsoft Word, PDF export and several advanced Word-specific features a
|
|
|
573
734
|
![[cat] Кот] (cat1.png)
|
|
574
735
|
![[img2] Котик] (cat2.png)
|
|
575
736
|
![[Котяра] Котяра] (cat3.png)
|
|
737
|
+
|
|
738
|
+
[energy]
|
|
739
|
+
$$
|
|
740
|
+
E = mc^2
|
|
741
|
+
$$
|
|
742
|
+
Как показано в формуле [energy], энергия кота зависит от массы.
|
|
576
743
|
```
|
|
577
744
|
|
|
578
745
|
К именованной ссылке также можно применять смещение: `[name ± N]`.
|
|
@@ -592,14 +759,16 @@ Without Microsoft Word, PDF export and several advanced Word-specific features a
|
|
|
592
759
|
Документ содержит [!pages] страниц,
|
|
593
760
|
[!imgs] рисунков,
|
|
594
761
|
[!tables] таблиц,
|
|
595
|
-
[!codes]
|
|
762
|
+
[!codes] листингов,
|
|
763
|
+
[!formulas] формул,
|
|
764
|
+
[!sources] источников.
|
|
596
765
|
```
|
|
597
766
|
|
|
598
767
|
**Примечание:** `[!pages]` может отображаться некоректно до рендера в pdf (как пустота или неверное значение). В таком случае выделите это место в Word и нажмите ПКМ->"Обновить поле" (при рендере в pdf не требуется).
|
|
599
768
|
|
|
600
769
|
#### Настройки автонумерации
|
|
601
770
|
* Включить ленивую автонумерацию: `!!rule numbering lazy`
|
|
602
|
-
* Когда включено, более не нужно писать `[#]` в названиях картинок, таблиц и т.д.
|
|
771
|
+
* Когда включено, более не нужно писать `[#]` в названиях картинок, таблиц и т.д. – добавляется автоматически
|
|
603
772
|
* Включить нумерацию по разделам: `!!rule numbering sections`
|
|
604
773
|
* `Рисунок 1 - Кот` -> `Рисунок 1.1 - Кот`
|
|
605
774
|
* Отключить автоматическое добавление названия элемента: `!!rule numbering autoprefix off`
|
|
@@ -628,24 +797,36 @@ Without Microsoft Word, PDF export and several advanced Word-specific features a
|
|
|
628
797
|
```html Шаблон html страницы
|
|
629
798
|
<html></html>
|
|
630
799
|
```
|
|
800
|
+
|
|
801
|
+
В формуле [#] показана связь энергии и массы.
|
|
802
|
+
|
|
803
|
+
$$
|
|
804
|
+
E = mc^2
|
|
805
|
+
$$
|
|
631
806
|
````
|
|
632
807
|
|
|
633
808
|
|
|
634
809
|
### Вставка внешнего документа
|
|
635
810
|
|
|
636
|
-
Команда позволяет вставить содержимое файлов DOCX
|
|
811
|
+
Команда позволяет вставить содержимое файлов DOCX, PDF, `.md` и `.g.md`.
|
|
637
812
|
|
|
638
813
|
Синтаксис: `!!(путь/к/файлу){"ключ": "значение"}`
|
|
639
814
|
|
|
640
815
|
|
|
641
|
-
|
|
642
|
-
* **DOCX:** Поддерживает передачу параметров.
|
|
816
|
+
Тип вставки определяется расширением файла:
|
|
817
|
+
* **DOCX:** Поддерживает передачу параметров. Поля внутри документа оформляются в двойных фигурных скобках: `{{поле}}`.
|
|
643
818
|
|
|
644
819
|

|
|
645
820
|
|
|
646
|
-
* **PDF:** Вставляется «как
|
|
821
|
+
* **PDF:** Вставляется «как есть». Блок параметров должен быть пустым `{}`.
|
|
822
|
+
|
|
823
|
+
* **Markdown (`.md`, `.g.md`):** содержимое файла раскрывается непосредственно в тело документа до рендера. Поэтому внутри подключаемого файла можно использовать обычный синтаксис md2gost, включая правила, секции и другие вставки.
|
|
647
824
|
|
|
648
|
-
|
|
825
|
+
Подробнее о передаче переменных, вложенных Markdown-вставках и шаблонизации см. в разделе [Markdown-вставки и шаблонизация](#markdown-вставки-и-шаблонизация).
|
|
826
|
+
|
|
827
|
+
Путь к подключаемому файлу вычисляется относительно файла, содержащего директиву вставки.
|
|
828
|
+
|
|
829
|
+
> **Ограничение DOCX/PDF:** такие вставки добавляются только при экспорте в PDF. Markdown-вставки работают при экспорте и в DOCX, и в PDF.
|
|
649
830
|
|
|
650
831
|
|
|
651
832
|
#### Примеры использования
|
|
@@ -670,6 +851,8 @@ Without Microsoft Word, PDF export and several advanced Word-specific features a
|
|
|
670
851
|
!!section from 2
|
|
671
852
|
```
|
|
672
853
|
|
|
854
|
+
В подключаемом DOCX эти значения можно использовать как `{{taskN}}`, `{{topic}}`, `{{group}}` и `{{name}}`.
|
|
855
|
+
|
|
673
856
|
Подробнее про `!!section` в главе [Разрыв раздела](#разрыв-раздела).
|
|
674
857
|
|
|
675
858
|
**3. Вставка в произвольное место документа**
|
|
@@ -723,17 +906,21 @@ Without Microsoft Word, PDF export and several advanced Word-specific features a
|
|
|
723
906
|
- `	` на отступ (таб)
|
|
724
907
|
- `⋆` на `*`
|
|
725
908
|
- `|` на `|`
|
|
909
|
+
- `&` на `&`
|
|
726
910
|
- `­` на Soft Hyphen (мягкий перенос)
|
|
727
911
|
- `​` на ничего (используйте чтобы обмануть парсер)
|
|
728
912
|
- `α β γ δ ε ζ η θ ι κ λ μ ν ξ ο π ρ σ τ υ φ χ ψ ω Δ Σ Ω` на `α β γ δ ε ζ η θ ι κ λ μ ν ξ ο π ρ σ τ υ φ χ ψ ω Δ Σ Ω`
|
|
729
913
|
- `∞ ∑ ∏ √ ∫ ∂ ≈ ≠ < > ≤ ≥ ± × ÷` на `∞ ∑ ∏ √ ∫ ∂ ≈ ≠ < > ≤ ≥ ± × ÷`
|
|
730
914
|
- `© ® ™ § ¶ … • · ° € £ ¥ ¢ ¤ ƒ ‰` на `© ® ™ § ¶ … • · ° € £ ¥ ¢ ¤ ƒ ‰`
|
|
915
|
+
- `[!page]` на номер текущей страницы
|
|
731
916
|
- `[!pages]` на кол-во страниц
|
|
732
917
|
- `[!imgs]` на кол-во картинок
|
|
733
918
|
- `[!tables]` на кол-во таблиц
|
|
734
919
|
- `[!codes]` на кол-во листингов
|
|
735
920
|
- `[!sources]` на кол-во источников
|
|
736
921
|
|
|
922
|
+
При экспорте обычные пробелы автоматически заменяются на неразрывные там, где части записи должны оставаться вместе: после коротких служебных слов (`в таблице`), между обозначением и номером (`рисунок 1`, `№ 5`, `ГОСТ 123`), в инициалах (`А. С. Пушкин`), адресах (`ул. Ленина`), датах (`2026 г.`), а также между числом и единицей измерения (`15 кг`, `25 %`). Дефисы внутри слов и обозначений (`веб-сервис`, `UTF-8`) также становятся неразрывными. Исходный Markdown при этом не меняется.
|
|
923
|
+
|
|
737
924
|
### Настройка стилей
|
|
738
925
|
Строгость ГОСТа не уступает его разнообразию. В этом разделе представлены правила для настройки стилей.
|
|
739
926
|
|
|
@@ -759,6 +946,9 @@ Without Microsoft Word, PDF export and several advanced Word-specific features a
|
|
|
759
946
|
- `!!rule text spacing after <int>`
|
|
760
947
|
- Пример: `!!rule text spacing after 0`
|
|
761
948
|
- По умолчанию: `8` пт
|
|
949
|
+
* Автоматическая расстановка переносов
|
|
950
|
+
- `!!rule hyphenation`
|
|
951
|
+
- По умолчанию: выключено
|
|
762
952
|
* Заголовки
|
|
763
953
|
* Размер заголовка
|
|
764
954
|
- `!!rule headings h<1-6>[+] size <int>`
|
|
@@ -792,9 +982,6 @@ Without Microsoft Word, PDF export and several advanced Word-specific features a
|
|
|
792
982
|
!!rule headings h2 size 16
|
|
793
983
|
!!rule headings h2+ spacing before 15
|
|
794
984
|
```
|
|
795
|
-
* Автоматическая расстановка переносов
|
|
796
|
-
- `!!rule hyphenation`
|
|
797
|
-
- По умолчанию: выключено
|
|
798
985
|
* Таблицы
|
|
799
986
|
* Начертание названия
|
|
800
987
|
- `!!rule table title style <normal|bold|italic>`
|
|
@@ -880,7 +1067,15 @@ Without Microsoft Word, PDF export and several advanced Word-specific features a
|
|
|
880
1067
|
- `!!rule list autopunctuation <on|off>`
|
|
881
1068
|
- Пример: `!!rule list autopunctuation off`
|
|
882
1069
|
- По умолчанию: `on`
|
|
883
|
-
|
|
1070
|
+
* Формулы
|
|
1071
|
+
* Интервал перед формулой
|
|
1072
|
+
- `!!rule formula spacing before <int>`
|
|
1073
|
+
- Пример: `!!rule formula spacing before 6`
|
|
1074
|
+
- По умолчанию: `0` пт
|
|
1075
|
+
* Интервал после формулы
|
|
1076
|
+
- `!!rule formula spacing after <int>`
|
|
1077
|
+
- Пример: `!!rule formula spacing after 6`
|
|
1078
|
+
- По умолчанию: наследуется от текста
|
|
884
1079
|
|
|
885
1080
|
#### Примеры
|
|
886
1081
|
|
|
@@ -950,3 +1145,207 @@ Without Microsoft Word, PDF export and several advanced Word-specific features a
|
|
|
950
1145
|
- По умолчанию: время рендера
|
|
951
1146
|
* `!!rule rainbow`
|
|
952
1147
|
|
|
1148
|
+
### Markdown-вставки и шаблонизация
|
|
1149
|
+
|
|
1150
|
+
Markdown-файлы с расширением `.md` и `.g.md` обрабатываются иначе, чем DOCX и PDF: их содержимое раскрывается в исходный документ **до рендера** и становится его полноценной частью.
|
|
1151
|
+
|
|
1152
|
+
Это позволяет разбивать большие документы на отдельные файлы и использовать повторно отдельные главы, таблицы, блоки и другие фрагменты.
|
|
1153
|
+
|
|
1154
|
+
Например:
|
|
1155
|
+
|
|
1156
|
+
```markdown
|
|
1157
|
+
# Отчёт
|
|
1158
|
+
|
|
1159
|
+
!!(blocks/introduction.md){}
|
|
1160
|
+
|
|
1161
|
+
!!(blocks/results.md){}
|
|
1162
|
+
```
|
|
1163
|
+
|
|
1164
|
+
В подключаемых файлах разрешён весь синтаксис md2gost, включая:
|
|
1165
|
+
|
|
1166
|
+
* правила форматирования;
|
|
1167
|
+
* секции;
|
|
1168
|
+
* изображения и ссылки;
|
|
1169
|
+
* другие Markdown-вставки.
|
|
1170
|
+
|
|
1171
|
+
Относительные пути внутри подключаемого Markdown-файла вычисляются относительно самого подключаемого файла. Пути к изображениям и ссылкам при раскрытии вставки корректируются автоматически.
|
|
1172
|
+
|
|
1173
|
+
|
|
1174
|
+
#### Передача переменных
|
|
1175
|
+
|
|
1176
|
+
В Markdown-вставку можно передавать переменные через блок параметров:
|
|
1177
|
+
|
|
1178
|
+
```markdown
|
|
1179
|
+
!!(blocks/student.md){
|
|
1180
|
+
"name": "Иванов И.И.",
|
|
1181
|
+
"group": "КЛМН-01"
|
|
1182
|
+
}
|
|
1183
|
+
```
|
|
1184
|
+
|
|
1185
|
+
В `blocks/student.md` они доступны через двойные фигурные скобки:
|
|
1186
|
+
|
|
1187
|
+
```markdown
|
|
1188
|
+
# {{name}}
|
|
1189
|
+
|
|
1190
|
+
Группа: {{group}}
|
|
1191
|
+
```
|
|
1192
|
+
|
|
1193
|
+
Можно обращаться и к вложенным значениям:
|
|
1194
|
+
|
|
1195
|
+
```markdown
|
|
1196
|
+
# {{student.name}}
|
|
1197
|
+
|
|
1198
|
+
Группа: {{student.group}}
|
|
1199
|
+
Первый результат: {{student.scores[0]}}
|
|
1200
|
+
```
|
|
1201
|
+
|
|
1202
|
+
Например:
|
|
1203
|
+
|
|
1204
|
+
```markdown
|
|
1205
|
+
!!(blocks/student.md){
|
|
1206
|
+
"student": {
|
|
1207
|
+
"name": "Иванов И.И.",
|
|
1208
|
+
"group": "КЛМН-01",
|
|
1209
|
+
"scores": [5, 4, 5]
|
|
1210
|
+
}
|
|
1211
|
+
}
|
|
1212
|
+
```
|
|
1213
|
+
|
|
1214
|
+
|
|
1215
|
+
#### Значения по умолчанию
|
|
1216
|
+
|
|
1217
|
+
Для переменных можно указывать запасное значение:
|
|
1218
|
+
|
|
1219
|
+
```markdown
|
|
1220
|
+
{{name || "Без имени"}}
|
|
1221
|
+
{{comment ?? "Комментарий отсутствует"}}
|
|
1222
|
+
```
|
|
1223
|
+
|
|
1224
|
+
Поддерживаются два оператора:
|
|
1225
|
+
|
|
1226
|
+
* `value || fallback` — использует запасное значение, если исходное значение отсутствует, равно `null`, `false`, `0` или пустой строке.
|
|
1227
|
+
* `value ?? fallback` — использует запасное значение только если исходное значение отсутствует или равно `null`.
|
|
1228
|
+
|
|
1229
|
+
Для экранирования кавычки используется обратный слеш:
|
|
1230
|
+
|
|
1231
|
+
```markdown
|
|
1232
|
+
{{name || "это \"инкогнито\" с обратным \\ слешом"}}
|
|
1233
|
+
```
|
|
1234
|
+
|
|
1235
|
+
|
|
1236
|
+
#### Передача объектов и массивов
|
|
1237
|
+
|
|
1238
|
+
По умолчанию значение, подставляемое внутрь текста, преобразуется в строку.
|
|
1239
|
+
|
|
1240
|
+
Если объект или массив нужно передать дальше во вложенную Markdown-вставку без такого преобразования, значение должно состоять только из одной переменной:
|
|
1241
|
+
|
|
1242
|
+
```markdown
|
|
1243
|
+
!!(table.md){
|
|
1244
|
+
"rows": "{{student.rows}}"
|
|
1245
|
+
}
|
|
1246
|
+
```
|
|
1247
|
+
|
|
1248
|
+
В этом случае `rows` получит исходное значение `student.rows`, например массив или объект, а не его строковое представление.
|
|
1249
|
+
|
|
1250
|
+
|
|
1251
|
+
#### Наследование переменных
|
|
1252
|
+
|
|
1253
|
+
Вложенная Markdown-вставка наследует переменные родительского документа.
|
|
1254
|
+
|
|
1255
|
+
Например, если в основном документе доступна переменная `author`, она будет доступна и внутри подключаемого Markdown-файла без явной повторной передачи.
|
|
1256
|
+
|
|
1257
|
+
При необходимости значение можно переопределить:
|
|
1258
|
+
|
|
1259
|
+
```
|
|
1260
|
+
!!(chapter.md){
|
|
1261
|
+
"author": "Петров П.П."
|
|
1262
|
+
}
|
|
1263
|
+
```
|
|
1264
|
+
|
|
1265
|
+
Внутри `chapter.md` будет использовано новое значение `author`, а остальные переменные продолжат наследоваться от родителя.
|
|
1266
|
+
|
|
1267
|
+
|
|
1268
|
+
#### Неизвестные переменные и экранирование
|
|
1269
|
+
|
|
1270
|
+
Если указанная переменная не существует, md2gost выводит предупреждение, а маркер остаётся в тексте без изменений:
|
|
1271
|
+
|
|
1272
|
+
```
|
|
1273
|
+
{{unknownVariable}}
|
|
1274
|
+
```
|
|
1275
|
+
|
|
1276
|
+
Чтобы вывести конструкцию `{{...}}` буквально и не выполнять подстановку, перед ней нужно поставить обратный слеш:
|
|
1277
|
+
|
|
1278
|
+
```
|
|
1279
|
+
\{{name}}
|
|
1280
|
+
```
|
|
1281
|
+
|
|
1282
|
+
Поддерживаются также HTML-комментарии:
|
|
1283
|
+
|
|
1284
|
+
```
|
|
1285
|
+
<!-- Этот текст не попадёт в результат -->
|
|
1286
|
+
```
|
|
1287
|
+
|
|
1288
|
+
Если последовательность `<!--` нужно вывести буквально, не создавая HTML-комментарий, её можно записать через шаблонную вставку:
|
|
1289
|
+
|
|
1290
|
+
```
|
|
1291
|
+
{{"<!--"}}
|
|
1292
|
+
```
|
|
1293
|
+
|
|
1294
|
+
|
|
1295
|
+
#### Переменные главного документа
|
|
1296
|
+
|
|
1297
|
+
При использовании npm-пакета переменные можно передать не только во вставку, но и непосредственно в главный документ через `MDRenderConfig.variables`:
|
|
1298
|
+
|
|
1299
|
+
```ts
|
|
1300
|
+
await renderMarkdown({
|
|
1301
|
+
input: "./report.g.md",
|
|
1302
|
+
variables: {
|
|
1303
|
+
author: "Иванов И.И.",
|
|
1304
|
+
settings: { compact: true }
|
|
1305
|
+
}
|
|
1306
|
+
});
|
|
1307
|
+
```
|
|
1308
|
+
|
|
1309
|
+
После этого переменные доступны в основном документе и наследуются подключаемыми Markdown-файлами.
|
|
1310
|
+
|
|
1311
|
+
|
|
1312
|
+
#### Расширенная шаблонизация
|
|
1313
|
+
|
|
1314
|
+
В подключаемых Markdown-файлах можно использовать условные блоки и циклы. В основном документе шаблонные выражения выполняются, если переменные переданы через `MDRenderConfig.variables` в программном API.
|
|
1315
|
+
|
|
1316
|
+
```markdown
|
|
1317
|
+
{{#if showResults}}
|
|
1318
|
+
## Результаты
|
|
1319
|
+
{{#for result, index in results}}
|
|
1320
|
+
{{index + 1}}. {{result}}
|
|
1321
|
+
{{:else}}
|
|
1322
|
+
Результатов пока нет.
|
|
1323
|
+
{{/for}}
|
|
1324
|
+
{{:else}}
|
|
1325
|
+
Раздел скрыт.
|
|
1326
|
+
{{/if}}
|
|
1327
|
+
```
|
|
1328
|
+
|
|
1329
|
+
Условие `{{#if ...}}` проверяет значение переменной или сравнение, например `{{#if score >= 5}}`. Цикл `{{#for value in items}}` перебирает массив; запись `{{#for value, key in items}}` дополнительно даёт индекс или ключ. Циклы также принимают объект, строку или целое число (повторение заданное число раз). Блок `{{:else}}` необязателен и работает как с условием, так и с пустым циклом. Блоки можно вкладывать друг в друга.
|
|
1330
|
+
|
|
1331
|
+
В подстановках доступны значения переменных, строки, числа, `true`, `false`, `null` и одно бинарное действие. Поддерживаются арифметические операторы `+`, `-`, `*`, `/`, `//` (целочисленное деление), `%`, `**`; в условиях — сравнения `==`, `!=`, `<`, `<=`, `>`, `>=`, `in` и логические `and`, `or`, `&&`, `||`, `??`. Для подстановки по-прежнему работают `||` и `??` со значением по умолчанию.
|
|
1332
|
+
|
|
1333
|
+
Чтобы убрать пробельные символы вокруг выражения, добавьте `-` после открывающих или перед закрывающими скобками: `{{- name -}}`. Для Markdown-вставки на отдельной строке форма `!!(-chapter.md-){}` убирает пробелы вокруг директивы. Запись `!!(--chapter.md--){}` убирает пробелы не только вокруг директивы, но и крайние внутри вставляемого документа. (Можно убирать пробелы только с одной стороны: `{{- name }}`, `!!(chapter.md-){}`)
|
|
1334
|
+
|
|
1335
|
+
Для сложных или полученных извне шаблонов можно ограничить объём обработки через `MDRenderConfig.templateOptions`:
|
|
1336
|
+
|
|
1337
|
+
```ts
|
|
1338
|
+
await renderMarkdown({
|
|
1339
|
+
input: "./report.g.md",
|
|
1340
|
+
variables: { showResults: true, results: ["Первый", "Второй"] },
|
|
1341
|
+
templateOptions: {
|
|
1342
|
+
allowLoops: true,
|
|
1343
|
+
allowIncludes: true,
|
|
1344
|
+
maxTotalIterations: 2000,
|
|
1345
|
+
maxIncludeDepth: 100
|
|
1346
|
+
}
|
|
1347
|
+
});
|
|
1348
|
+
```
|
|
1349
|
+
|
|
1350
|
+
Также доступны ограничения `maxLoopIterations`, `maxDepth`, `maxIncludes`, `maxFileLength`, `maxTotalInputLength` и `maxGeneratedLength`. В расширении VS Code суммарное число итераций и глубина Markdown-вставок задаются настройками `md2gost.render.maxTotalIterations` и `md2gost.render.maxIncludeDepth`.
|
|
1351
|
+
|