e

eskd-drafting

@preview

Draft ESKD technical drawings and documentation layouts.

v0.1.0
MIT AND MIT-0
Template

Package Information

Last Updated
Minimum Typst Version
0.12.0
Authors
runasexe
Categories
layoutmodeltext
Disciplines
engineering

Preview

Template preview

1. Get the package

Download the package using the TPIX CLI:

tpix get @preview/eskd-drafting:0.1.0

2. Initialize from template

Create a new project from this template:

typst init @preview/eskd-drafting:0.1.0

Version History

0.1.00.12.0
cf4afc6531b3...

Библиотека оформления конструкторской документации ЕСКД: eskd-drafting

eskd-drafting — пакет для системы верстки Typst, реализующий автоматическое построение чертежных рамок, основных надписей (штампов), дополнительных граф инвентарного учета и разметки страниц технических документов в соответствии со стандартами Единой системы конструкторской документации (ЕСКД).

Языковые версии: English Documentation | English Quick Guide


Preview 1 Preview 2 Preview 3 Preview 4 Preview 5


1. Нормативная база

Библиотека разработана на основе действующих государственных и межгосударственных стандартов:

  • ГОСТ 2.104-2006 «ЕСКД. Основные надписи»
  • ГОСТ 2.105-95 / ГОСТ 2.105-2019 «ЕСКД. Общие требования к текстовым документам»
  • ГОСТ 2.106-96 «ЕСКД. Текстовые документы»
  • ГОСТ 2.301-68 «ЕСКД. Форматы»
  • ГОСТ 2.302-68 «ЕСКД. Масштабы»
  • ГОСТ 2.303-68 «ЕСКД. Линии»
  • ГОСТ 2.304-81 «ЕСКД. Шрифты чертежные»
  • ГОСТ 2.004-88 «ЕСКД. Общие требования к выполнению конструкторских и технологических документов на печатающих и графических устройствах вывода ЭВМ»
  • ГОСТ 2.103-2013 «ЕСКД. Стадии разработки и литеры документов»
  • ГОСТ 2.501-2013 «ЕСКД. Правила учета и хранения»

NOTE: Назначение пакета eskd-drafting ограничено геометрической разметкой листа, полями, рабочими рамками, основными надписями и элементами инвентарного учета. Пакет не регламентирует форматирование произвольного текста внутри рабочих полей, оформление списков литературы по ГОСТ Р 7.0.5 или отчетов по ГОСТ 7.32.


2. Номенклатура рамок и основных надписей

Поля листа формируются согласно ГОСТ 2.104-2006: 20 мм слева (поле подшивки), по 5 мм сверху, справа и снизу.

2.1. Основные надписи

Форма / Штамп Модуль Размеры Стандарт Состав и назначение
Форма 1 frames-form-1.typ 185 × 55 мм ГОСТ 2.104-2006 (п. 5.1) Чертежи и схемы (первый лист). Графа 1 (Наименование, 70 × 25 мм), графа 2 (Обозначение, 120 × 15 мм), графа 3 (Материал, 70 × 15 мм), графа 4 (Литеры), графа 5 (Масса), графа 6 (Масштаб), графы 7 и 8 (Лист/Листов), графа 9 (Организация, 50 × 15 мм), до 6 строк подписей, таблица изменений.
Форма 2 frames-form-2.typ 185 × 40 мм (185 × 52 мм с toc) ГОСТ 2.104-2006, ГОСТ 2.105 / 2.106 Текстовые документы (первый/заглавный лист ПЗ, РЭ, ТУ). При передаче параметра toc через свойства страницы или формы автоматически включает двухъярусную шапку содержания (12 мм) над правой частью (120 мм): строка 1 (5 мм) — «№» (15 мм), «Наименование» (70 мм), «Обозначение» (35 мм); строка 2 (7 мм) — «Примечание» (120 мм) с вырезом 65 × 12 мм слева над подписями. Передача toc в другие формы запрещена.
Форма 2а frames-form-2a.typ 185 × 15 мм ГОСТ 2.104-2006 (п. 5.1) Последующие листы всех видов документов. Графа 2 (110 мм), графа 7 (Лист: верх 7 мм — подпись, низ 8 мм — номер), таблица изменений слева.
Форма 2б frames-form-2b.typ 185 × 15 мм ГОСТ 2.104-2006 (п. 5.1) Последующие листы при двусторонней печати. Зеркальная раскладка: графа 7 (Лист) расположена слева (10 мм), обозначение в центре (110 мм), таблица изменений справа.

2.2. Боковые штампы инвентарного учета (графы 19–25)

Размещаются на поле подшивки (20 мм от левого края) с поворотом на -90°:

  • frame-left-3r (85 × 12 мм): графы 19–21 («Инв. № подп.», «Подп. и дата», «Взам. инв. №»).
  • frame-left-5r (145 × 12 мм): графы 19–23 (дополнительно: «Инв. № дубл.», «Подп. и дата»).
  • frame-left-7r (H × 12 мм): боковой штамп инвентарного учета (графы 19–25: нижний блок 145 мм и верхний блок 95 мм с графой 24 «Справ. №» и графой 25 «Перв. примен.»).
    • Режим по умолчанию (gap: auto): фиксированный интервал 47 мм от нижнего блока. Все 7 граф укладываются в базовые 287 мм высоты от низа листа, обеспечивая соответствие требованиям фальцовки по ГОСТ 2.501-2013 для брошюровки в папки формата А4.
    • Растянутый режим (gap: "max"): максимально возможный интервал (H_рамки - 240 мм), при котором графы 24 и 25 примыкают к верхнему левому углу листа.
    • Произвольный интервал (gap: <length> / none): явно заданное смещение.

2.3. Повернутое обозначение документа (графа 26)

  • frame-code-inverted (14 × 70 мм): обозначение документа, повернутое на 180° в верхнем левом углу рабочей рамки (ГОСТ 2.104-2006, п. 4.1).
  • Управление через параметр code-inverted:
    • code-inverted: auto — автоматически включается для чертежей (Форма 1) с текстом code и контурной рамкой; отключается для текстовых документов (Формы 2, 2а, 2б).
    • code-inverted: none — отключено.
    • code-inverted: [АБВГ.123456.001] — включено с явно заданным текстом и рамкой.
    • code-inverted: (text: [АБВГ...], frame: false) — повернутый текст без внешней контурной рамки.

3. Быстрый старт

3.1. Инициализация проекта через CLI

typst init @preview/eskd-drafting:0.1.0 my-eskd-document

3.2. Минимальный рабочий пример

#import "@preview/eskd-drafting:0.1.0": *

#show: eskd-document.with(
  paper: "a4",
  orientation: "portrait",
  preset-lines: "industry",
  members: (
    ("Разраб.", "Алексеев",  "12.05.26"),
    ("Пров.",   "Борисов",   "15.05.26"),
    ("Н.контр.","Григорьев", "19.05.26"),
    ("Утв.",    "Дмитриев",  "20.05.26"),
  ),
  code: [АБВГ.000111.001РЭ],
  name: [Блок управления\ Руководство по эксплуатации],
  org: [НПК «Электроника»],
  lit: [О1],
  inv-orig: [12345],
  sig-date-orig: [12.05.26],
)

// Титульный лист
#show: page-title
#align(center + horizon)[
  #gost-text(h: h7_0, weight: "bold")[РУКОВОДСТВО ПО ЭКСПЛУАТАЦИИ]
]

// Заглавный лист текстового документа
#show: page-first-form2
= 1. Введение
Текст пояснительной записки...

// Последующие листы
#show: page-body
= 2. Технические данные
Продолжение документа...

4. Справочник API и конфигурация

4.1. Полная конфигурация документа (eskd-document)

Все свойства передаются в качестве именованных аргументов eskd-document. Значение auto включает автоматический расчет по стандартам ЕСКД, значение none полностью отключает отображение поля:

#import "@preview/eskd-drafting:0.1.0": *

#show: eskd-document.with(
  // Формат листа по ГОСТ 2.301-68: "a4", "a3", "a2", "a1", "a0", "a4x3", "a3x4" и др.
  paper: "a4",
  // Ориентация листа: "portrait" (книжная) или "landscape" (альбомная)
  orientation: "portrait",
  // Оформление линий: "industry" (толстые линии 0,8 мм) или "gost" (тонкие линии 0,35 мм)
  preset-lines: "industry",

  // Настройка шрифта по ГОСТ 2.304-81
  font: auto,                                   // "Arial", ("PT Astra Sans", "Arial") и др.
  font-type: auto,                              // "type-b" (толщина d=1/10 h) или "type-a" (d=1/14 h)
  font-italic: false,                           // true для наклонного шрифта 75° по ГОСТ 2.304-81

  // 1. Участники (строки подписей граф 10–13: роль, фамилия, дата, подпись)
  members: (
    ("Разраб.", "Алексеев",  "12.05.26"),
    ("Пров.",   "Борисов",   "15.05.26"),
    ("Т.контр.","Васильев",  "18.05.26"),
    ("Н.контр.","Григорьев", "19.05.26"),
    ("Утв.",    "Дмитриев",  "20.05.26"),
  ),

  // 2. Реквизиты изделия и документа (графы 1–9 ГОСТ 2.104-2006)
  code: [АБВГ.000111.001РЭ],                    // Графа 2: Обозначение документа (120х15 мм)
  name: [Блок управления\ Руководство по эксплуатации], // Графа 1: Наименование (70х25 мм)
  org: [НПК «Электроника»],                     // Графа 9: Предприятие / организация (50х15 мм)
  material: [Сталь 45 ГОСТ 1050-2013],          // Графа 3: Материал детали (Форма 1)
  lit: [О1А],                                   // Графа 4: Литеры документа (строка или массив)
  mass: [15,4],                                 // Графа 5: Масса в кг (число с запятой)
  scale: [1:2],                                 // Графа 6: Масштаб по ГОСТ 2.302-68
  code-inverted: auto,                          // Графа 26: Повернутое обозначение (auto, none, content, dict)
  page: auto,                                   // Графа 7: Номер листа (auto, none, int, str)
  total: auto,                                  // Графа 8: Всего листов (auto, none, int, str)

  // 3. Таблица изменений (графы 14–18 по ГОСТ 2.104-2006 и ГОСТ 2.503-2013)
  changes: (
    (
      num: [1],                                 // Графа 14: Номер изменения (Изм.)
      sheet: [Зам.],                            // Графа 15: Лист (Зам., Нов. или номер)
      doc: [ИИ-401-26],                         // Графа 16: Обозначение извещения (№ докум.)
      sig: [Белов],                             // Графа 17: Подпись (Подп.)
      date: [20.08.26],                         // Графа 18: Дата
    ),
  ),

  // 4. Боковые штампы инвентарного учета (графы 19–25 ГОСТ 2.104-2006)
  inv-orig: [12345],                            // Графа 19: Инв. № подлинника
  sig-date-orig: [12.05.26],                    // Графа 20: Подпись и дата приемки подлинника
  inv-repl: [ВЗ-4512],                          // Графа 21: Взамен инв. №
  inv-dup: [67890],                             // Графа 22: Инв. № дубликата
  sig-date-dup: [15.05.26],                     // Графа 23: Подпись и дата приемки дубликата
  ref-num: [РИС.2026],                          // Графа 24: Справочный номер (для бокового штампа 7r)
  prim-apply: [АБВГ.000111.000],                // Графа 25: Первичное применение (для бокового штампа 7r)

  // 5. Графы 31 и 32 под внешней рабочей рамкой листа (ГОСТ 2.104-2006)
  copier: [Федоров],                            // Графа 31: Фамилия копировщика (120 мм)
  format: auto,                                 // Графа 32: Обозначение формата (65 мм, auto, true, [A4x3])

  // 6. Групповая настройка высот шрифтов по ГОСТ 2.304-81
  sizes: (
    labels: h2_5,                               // Высота надписей граф («Разраб.», «Лист» — 2,5 мм)
    values: h3_5,                               // Высота значений граф (фамилии, даты — 3,5 мм)
    dates: h2_5,                                // Высота дат в подписях (2,5 мм)
    signs: h3_5,                                // Высота подписей (3,5 мм)
    code: h7_0,                                 // Обозначение документа в графе 2 (7,0 мм)
    name: h5_0,                                 // Наименование в графе 1 (5,0 мм)
    org: h5_0,                                  // Организация в графе 9 (5,0 мм)
    material: h5_0,                             // Материал в графе 3 (5,0 мм)
    params: h5_0,                               // Масса и масштаб в графах 5, 6 (5,0 мм)
    lit: h3_5,                                  // Литеры в графе 4 (3,5 мм)
    sheet: h3_5,                                // Номера листов в графах 7 и 8 (3,5 мм)
  ),

  // 7. Подавление правил валидации
  ignore-rules: auto,                           // auto (строгий контроль), "*" (отключить все) или список правил
)

4.2. Динамическая модификация состояния (eskd-set)

#eskd-set(
  name: [Новый раздел документа],
  changes: ((num: [2], doc: [ИИ-402-26], sig: [Иванов], date: [25.08.26]),),
)

4.3. Шаблоны страниц и организация структуры документа

Переключение между разделами документа выполняется вызовом #show: <preset>:

#show: page-title        // Титульный лист (рамка и боковой штамп 5r, без основной надписи)
#show: page-first-form2  // Заглавный лист текстового документа (Форма 2; далее — Форма 2а)
#show: page-first-form1  // Заглавный лист чертежа / схемы (Форма 1; далее — Форма 2а)
#show: page-body         // Последующие листы документа (Форма 2а)
#show: page-body-double  // Последующие листы при двусторонней печати (Форма 2б)
#show: page-blank        // Чистый лист без рамок (для приложений и схем)

Для заглавного листа содержания используется шаблон page-first-form2 с передачей структуры toc в свойствах:

#show: page-first-form2.with(
  left: frame-left-7r,
  toc: (num: [№], name: [Наименование], code: [Обозначение], note: [Примечание]),
)

Для индивидуальной настройки отдельных секций используется функция #eskd-page:

#show: eskd-page.with(
  bottom: frame-form-1,             // Основная надпись первого листа секции
  left: frame-left-5r,              // Боковой штамп первого листа секции
  subsequent-bottom: frame-form-2a, // Основная надпись последующих листов
  subsequent-left: frame-left-5r,   // Боковой штамп последующих листов
  frame: true,                      // Внешняя рабочая рамка (true/false)
  code-inverted: auto,              // Повернутое обозначение (auto / none / [Текст] / dict)
  gap: auto,                        // Разрыв бокового штампа 7r (auto, "max", length, none)
  page: auto,                       // Номер первого листа секции (auto / none / int / str)
  total: auto,                      // Общее число листов документа (auto / none / int / str)
  paper: "a3",                      // Формат для данной секции
  orientation: "landscape",         // Ориентация для данной секции
)

5. Инженерные особенности и нормативные ограничения

5.1. Боковой штамп инвентарного учета (frame-left-7r), фальцовка и ГОСТ 2.501-2013

  • Нормативная база: ГОСТ 2.104-2006 (п. 4.1, 4.2, рисунки 1 и 2), ГОСТ 2.501-2013 (п. 5.6, приложение Г — правила складывания чертежей), ГОСТ 2.301-68.
  • Технический контекст:
    • В ГОСТ 2.104-2006 боковой штамп на поле подшивки (шириной 12 мм) состоит из нижнего блока (графы 19–23 длиной 145 мм) и верхнего блока (графа 24 «Справ. №» 35 мм и графа 25 «Перв. примен.» 60 мм, суммарно 95 мм).
    • В ГОСТ 2.104-2006 иллюстрации выполнены на примере формата А4. Для листа А4 ($H_{\text{рамки}} = 287\text{ мм}$) сумма $145 + 47 + 95 = 287\text{ мм}$, из-за чего графы 24 и 25 визуально смыкаются с верхним левым углом рамки.
    • В ряде САПР верхний блок (графы 24–25) параметрически привязан к верхнему краю рамки, в результате чего на листах А3–А0 он смещается на полную высоту листа (410, 584, 831 мм).
    • Согласно ГОСТ 2.501-2013 чертежи всех форматов при брошюровке в тома складываются до формата А4 (210 × 297 мм) с сохранением левого поля подшивки (20 мм). При увеличенном интервале графы 24 и 25 скрываются во внутренних складках чертежа. При фиксированном интервале 47 мм весь блок инвентарного учета (287 мм) размещается в пределах высоты первого сгиба и остается видимым на корешке.
  • Режимы параметра gap:
    • gap: auto (по умолчанию) — фиксированный интервал 47 мм. Все 7 граф укладываются в базовые 287 мм высоты от низа листа, обеспечивая соответствие требованиям фальцовки ГОСТ 2.501-2013.
    • gap: "max" — максимально возможный интервал ($H_{\text{рамки}} - 240\text{ мм}$), при котором графы 24 и 25 располагаются у верхнего левого угла листа.
    • gap: <length> (например, gap: 100mm или gap: none) — явно заданное смещение.

5.2. Пресет линий preset-lines: "industry" и требования САПР

  • Нормативная база: ГОСТ 2.104-2006 (п. 4.1), ГОСТ 2.303-68.
  • Технический контекст:
    • В таблице изменений (графы 14–18) и графах подписей (10–13) шаг колонок составляет 5, 7 и 10 мм.
    • По тексту ГОСТ 2.104-2006 внутренние разделители этих ячеек выполняются сплошными тонкими линиями ($s_{\text{thin}} \approx 0,35\text{ мм}$).
    • В практике САПР внутренние разделители выполняются сплошными толстыми основными линиями ($s = 0,8\text{ мм}$) для обеспечения контрастности при печати.
  • Режимы preset-lines:
    • preset-lines: "industry" (по умолчанию) — стандарт САПР с толстыми разделителями (0,8 мм).
    • preset-lines: "gost" — вариант оформления с тонкими линиями (0,35 мм).

5.3. Рамка повернутого обозначения документа (графа 26 / code-inverted)

  • Нормативная база: ГОСТ 2.104-2006 (п. 4.1, рисунки 1 и 2).
  • Технический контекст: Графа 26 представляет собой повернутое на 180° обозначение документа размером 70 × 14 мм в верхнем левом углу рабочей рамки. Стандарт допускает как наличие замкнутой рамки ячейки, так и вывод только текста.
  • Режимы code-inverted:
    • code-inverted: auto (по умолчанию) — автоматическое включение с рамкой для Формы 1; отключение для текстовых форм.
    • code-inverted: [АБВГ.123456.001] — явно заданный текст с отрисовкой рамки.
    • code-inverted: (text: [...], frame: false) — повернутый текст без внешней контурной рамки.
    • code-inverted: none — отключение графы.

5.4. Размещение и автоматизация служебных граф 31 («Копировал») и 32 («Формат»)

  • Нормативная база: ГОСТ 2.104-2006 (п. 4.1, рисунки 1–4), ГОСТ 2.301-68.
  • Геометрия и расположение: Графы 31 и 32 располагаются за пределами внутренней рабочей рамки на нижнем 5-мм поле листа непосредственно под основной надписью в правом нижнем углу листа:
    • Графа 31 («Копировал»): ширина 120 мм, высота 5 мм (слева);
    • Графа 32 («Формат»): ширина 65 мм, высота 5 мм (справа).
    • Суммарная ширина: $120\text{ мм} + 65\text{ мм} = 185\text{ мм}$ (равна ширине основной надписи).
  • Правила отображения и значения параметров:
    • Параметр copier:
      • auto (по умолчанию) — графа 31 отображается с надписью Копировал и пустым полем для подписи;
      • none — графа 31 отключена и не отображается;
      • str / content / dict (например, copier: [Федоров]) — выводит Копировал <значение>.
    • Параметр format:
      • auto (по умолчанию) — графа 32 отображается с автоматическим определением обозначения формата листа (Формат А4, Формат А3, Формат А4х3 и др.);
      • true — принудительно включает отображение формата листа по свойствам страницы;
      • none или false — графа 32 отключена и не отображается;
      • str / content / dict (например, format: [А4]) — переопределяет выводимый текст формата.
    • Независимое отображение:
      • copier: auto, format: auto — отображаются обе графы;
      • copier: none, format: auto — отображается только графа 32 («Формат»);
      • copier: auto, format: none (или format: false) — отображается только графа 31 («Копировал»);
      • copier: none, format: none (или format: false) — обе графы отключены.
    • При отключенной рабочей рамке (frame: false по ГОСТ 2.105-2019, п. 4.1) графы 31 и 32 не формируются.

5.5. Номенклатура форматов и ориентация листов (ГОСТ 2.301-68, ГОСТ 2.104-2006, ГОСТ 2.501-2013)

Пакет реализует номенклатуру базовых и дополнительных (кратных) форматов листов, а также правила их пространственного расположения в соответствии с ГОСТ 2.301-68 (таблицы 1 и 2).

Базовые форматы (ГОСТ 2.301-68, п. 2)

Формат Размеры листа (мм) Допустимая ориентация Нормативные требования
a4 210 × 297 Только вертикальная (portrait) ГОСТ 2.301-68 (п. 2): формат А4 допускается применять только с вертикальным расположением.
ГОСТ 2.104-2006 (п. 4.2.1): основная надпись располагается только вдоль короткой стороны (210 мм).
a3 297 × 420 Горизонтальная (landscape, основная)
Вертикальная (portrait, допускается)
ГОСТ 2.301-68 (п. 2), ГОСТ 2.104-2006 (п. 4.2.2): основная надпись размещается в правом нижнем углу листа.
a2 420 × 594 Горизонтальная (основная)
Вертикальная (допускается)
ГОСТ 2.301-68 (п. 2), ГОСТ 2.104-2006 (п. 4.2.2).
a1 594 × 841 Горизонтальная (основная)
Вертикальная (допускается)
ГОСТ 2.301-68 (п. 2), ГОСТ 2.104-2006 (п. 4.2.2).
a0 841 × 1189 Горизонтальная (основная)
Вертикальная (допускается)
ГОСТ 2.301-68 (п. 2), ГОСТ 2.104-2006 (п. 4.2.2).

Обозначения базовых форматов указываются без суффикса: a4, a3, a2, a1, a0. Обозначения с суффиксом x1 (например, a4x1) стандартом не предусмотрены и вызывают ошибку валидации gost-2.301-68-paper-format.

Дополнительные (кратные) форматы aNxM (ГОСТ 2.301-68, п. 3, таблица 2)

Согласно ГОСТ 2.301-68 (п. 3) дополнительные форматы образуются умножением исключительно короткой стороны базового листа ($W = W_N \times M, H = H_N$). Все производные форматы представляют собой горизонтальные полосы фиксированной высоты и применяются только в горизонтальной ориентации (landscape).

Ряд формата Перечень форматов Размеры ($H \times W$, мм) Допустимая ориентация Нормативная база
А4хN a4x3..a4x9 297 × (210 × N) (от 297 × 630 до 297 × 1892) Только горизонтальная ГОСТ 2.301-68 (п. 3, таблица 2), складывание по ГОСТ 2.501-2013
А3хN a3x3..a3x7 420 × (297 × N) (от 420 × 891 до 420 × 2080) Только горизонтальная ГОСТ 2.301-68 (п. 3, таблица 2)
А2хN a2x3..a2x5 594 × (420 × N) (от 594 × 1261 до 594 × 2102) Только горизонтальная ГОСТ 2.301-68 (п. 3, таблица 2)
А1хN a1x3, a1x4 841 × (594 × N) (от 841 × 1783 до 841 × 2378) Только горизонтальная ГОСТ 2.301-68 (п. 3, таблица 2)
А0хN a0x2, a0x3 1189 × (841 × N) (от 1189 × 1682 до 1189 × 2523) Только горизонтальная ГОСТ 2.301-68 (п. 3, таблица 2)

Коэффициент кратности $\times 2$ для большинства форматов стандартом не используется, так как удвоение дает следующий стандартный базовый формат ($A4\times2 = A3$, $A3\times2 = A2$, $A2\times2 = A1$, $A1\times2 = A0$). Исключение составляет формат $A0\times2$.

Инженерные истоки и нормативное обоснование ограничений

  1. Вертикальное положение формата А4: базовый формат проектной документации и архивного хранения составляет 210 × 297 мм. Вертикальный лист А4 подшивается по левому полю 20 мм непосредственно в стандартную папку или скоросшиватель без необходимости складывания, а основная надпись сразу находится в правом нижнем углу лицевой стороны.
  2. Горизонтальное положение кратных форматов А4хN: формат А4хN спроектирован для складывания в архивную папку А4 исключительно вертикальными сгибами-гармошкой по ГОСТ 2.501-2013 (приложение Б) с шагом 190/210 мм. При высоте 297 мм лист не требует продольных сгибов по высоте: после складывания он соответствует габаритам папки (297 мм), а основная надпись остается на лицевой стороне. Вертикальная ориентация (например, 297 × 630 мм) стандартом не предусмотрена, так как сложить такой лист без нарушения видимости штампа и полей подшивки невозможно.
  3. Нормативные исключения для горизонтального А4 (297 × 210 мм):
    • ГОСТ 2.004-88 (п. 1.8) допускает применение горизонтального формата А4 для широких машинных таблиц, ведомостей и распечаток программных листингов;
    • ГОСТ 2.701-2008 (п. 5.1.2) допускает выполнение схем на горизонтальном А4 при ограничениях систем автоматизированного проектирования.
    • В пакете данное исключение активируется подавлением правила: ignore-rules: "gost-2.301-68-a4-landscape".

Складные листы-вклейки в текстовых документах (ГОСТ 2.105-2019):
В пояснительных записках и ТУ формат А4х3 встраивается между страницами А4 с помощью функции #eskd-page(paper: "a4x3", bottom: frame-form-2a)[...] для широких таблиц и графических схем, сохраняя сквозную нумерацию тома.

5.6. Внедрение пользовательских шрифтов и типографика по ГОСТ 2.304-81

Пакет поддерживает работу со шрифтами типов А и Б по ГОСТ 2.304-81:

Тип шрифта Толщина линии d Масштаб кегля Межстрочный шаг b Межбуквенный шаг a Межсловный шаг e
Тип Б (type-b) (1/10) h 1.40 1.40 h 0.20 h 0.60 h
Тип А (type-a) (1/14) h 1.286 1.429 h 0.143 h 0.429 h

По умолчанию (font: auto, font-group: auto) библиотека использует компактную цепочку открытых и системных шрифтов (OpenGost Type B/A, osifont, GOST Type B/A, PT Astra Sans, Arial), что предотвращает избыточные предупреждения компилятора Typst при отсутствии специализированного ПО.

Управление шрифтами разделено на два независимых параметра:

  • font-group: выбор предустановленной группы САПР-шрифтов (gost-font-families):
    • Группа АСКОН (Компас-3D): font-group: "ascon" (Ascon GOST 2.304 Type B, GOST 2.304 type B);
    • Группа T-FLEX CAD: font-group: "tflex" (T-FLEX GOST Type B, T-FLEX GOST Type A);
    • Группа SolidWorks: font-group: "solidworks" (SolidWorks GOST, SolidWorks GOST A);
    • Группа AutoCAD: font-group: "autocad" (ISOCPEUR, ISOCTEUR, ISOCP, ISOCT);
    • Группа СПДС и Mechanics: font-group: "spds" (SPDS GOST Type B, CSC GOST Type B, Mechanics GOST Type B).
  • font: явное указание конкретной гарнитуры (font: "osifont", font: "PT Astra Sans") или массива гарнитур (font: ("CustomGost", "Arial")).
#show: eskd-document.with(
  font-group: "ascon", // Подключение группы шрифтов Компас-3D
  font: "osifont",     // Явное указание конкретной гарнитуры во главе цепочки
  font-type: "type-b",
  font-italic: true,   // Использование аутентичного наклонного начертания 75°
)

Для низкоуровневой настройки метрик доступен параметр font-cfg, позволяющий задавать коэффициенты шрифта (font, scale, cap-ratio, leading-ratio, letter-space-ratio, word-space-ratio).

Метрики цифровых глифов и полуапроши

При использовании векторных шрифтов (TrueType, OpenType) полная ширина символа (Advance Width) включает в себя как ширину графического контура, так и боковые защитные поля (полуапроши, sidebearings). Метрики символов и величина полуапрошей индивидуальны для каждого шрифта. Согласно ГОСТ 2.004-88 (п. 1.8, прим. 3) допускается применение шрифтов, генерируемых средствами вычислительной техники, при условии обеспечения удобочитаемости. Ответственность за начертание знаков, геометрию штрихов и внутренние полуапроши возлагается на шрифт, тогда как пакет eskd-drafting управляет позиционированием, масштабированием и контролем ограничений ЕСКД.

5.7. Техническое обоснование отказа от синтетического наклона шрифта

Согласно ГОСТ 2.304-81 (пп. 1.1, 1.2) допускается выполнение чертежных надписей как без наклона (прямой шрифт), так и с наклоном около 75°.

По умолчанию eskd-drafting использует прямое начертание (font-italic: false), что соответствует ГОСТ 2.304-81 и обеспечивает читаемость в объемных текстовых документах (пояснительных записках, технических условиях, руководствах по эксплуатации).

Пакет не использует программный (синтетический) наклон текста или геометрический скос (skew / shear). Отказ от искусственного скоса обусловлен следующими причинами:

  1. Искажение геометрии знаков: При программном скосе вертикальные штрихи истончаются относительно горизонтальных, что нарушает требование ГОСТ 2.304-81 к постоянству толщины линии обводки $d = 1/10,h$ (для типа Б) или $d = 1/14,h$ (для типа А).
  2. Нарушение габаритных контейнеров (bounding boxes): Скос символов выходит за пределы их расчетного эм-бокса. Это искажает измерения движка Typst (measure), приводит к погрешностям алгоритмов автоподгонки (auto-fit-gost, compute-group-font) и ложным срабатываниям контроля читаемости (gost-text-scale-warning, gost-text-scale-extreme).

Для использования наклонного шрифта 75° подключите файл аутентичного чертежного шрифта, в котором угол 75° и пропорции толщин заложены разработчиком шрифта, и активируйте наклонное начертание:

#show: eskd-document.with(
  font: ("OpenGost Type B TT", "Arial"),
  font-type: "type-b",
  font-italic: true,
)

5.8. Автоподгонка текста (auto-fit-gost) и контроль читаемости

  1. Дискретный перебор по ряду ГОСТ 2.304-81: высота шрифта ступенчато уменьшается по ряду h ∈ {40.0, 28.0, 20.0, 14.0, 10.0, 7.0, 5.0, 3.5, 2.5, 1.8} мм.
  2. Геометрическое масштабирование (scale): включается при превышении лимитов на минимальном кегле 1,8 мм.

Пороги контроля читаемости (ГОСТ 2.304-81, ГОСТ 2.004-88):

  • Сжатие ниже 70%: предупреждение gost-text-scale-warning.
  • Экстремальное сжатие ниже 40%: ошибка gost-text-scale-extreme.

5.9. Автоматическая подгонка контента под основную надпись первого листа

В текстовых документах первый лист имеет основную надпись высотой 40 мм (Форма 2) или 52 мм (Форма 2 с параметром toc), а последующие — 15 мм (Форма 2а). Плавающие спейсеры автоматически выравнивают полезную высоту текста на первом листе и возвращают полный размер на последующих страницах.

5.10. Гармонизация шрифтов подписей (members)

Функция compute-group-font анализирует длины фамилий в блоке подписей и приводит их к единому кеглю для устранения несогласованности в соседних строках.

5.11. Автоматическая обработка и гармонизация таблицы изменений (changes)

Параметр changes принимает массив словарей ( (num: [...], ...), ... ). Вместимость строк изменений регламентирована ГОСТ 2.104-2006:

  • Форма 1 (чертежи): до 4 строк изменений (20 мм над шапкой изменений, заполнение снизу вверх);
  • Форма 2 (текстовые заглавные): до 2 строк изменений (10 мм);
  • Формы 2а и Форма 2б (последующие листы): 1 строка изменения (5 мм).

Функция compute-group-font автоматически гармонизирует кегли в столбцах таблицы изменений (num, sheet, doc, sig, date). Доступна гранулярная настройка кеглей ячеек (num-size, sheet-size, doc-size, sig-size, date-size, общий size). Превышение вместимости контролируется правилом gost-2.104-2006-changes-overflow.

5.12. Автоматическая обработка литер (lit)

По ГОСТ 2.103-2013 литеры распределяются по трем ячейкам графы 4. Поддерживаются составные литеры (О1, О2), подстрочные индексы (О₁, О₂) с автоматическим уменьшением кегля индекса, а также нормализация латинских гомоглифов в кириллицу.

5.13. Семантика значений полей: auto, none и пользовательские данные

  • auto (по умолчанию): значение разрешается каскадно из глобального состояния документа (state), вычисляется геометрически (например, format: auto по размеру листа) или берется из счетчиков страниц Typst counter(page) (для полей page и total). Для чертежей (Форма 1) параметр code-inverted: auto автоматически выводит повернутое обозначение документа в графе 26 с контурной рамкой.
  • none: поле полностью подавляется (возвращается пустой контент [] без резервирования пространства и отрисовки линий).
    • Для page: none номер текущего листа и надпись «Лист» не отображаются. В основных надписях последующих листов (Формы 2а и 2б) разделительная линия и надпись «Лист» не отрисовываются.
    • Для total: none общее число листов и надпись «Листов» не отображаются.
    • Для code-inverted: none повернутое обозначение в верхнем левом углу листа отключается.
  • Пользовательские значения (str / int / content / dict): передаваемое значение выводится в соответствующую графу в виде форматированного текста, проходит нормативный контроль ЕСКД и масштабируется механизмом auto-fit-gost.

6. Справочник правил валидации (ignore-rules)

Идентификатор правила Проверяемое требование стандарта
gost-2.301-68-paper-format Формат листа должен принадлежать ряду ГОСТ 2.301 (А0..А4 или кратные aNxM).
gost-2.301-68-paper-multiplied-ratio Кратность $M$ должна соответствовать таблице 2 ГОСТ 2.301-68.
gost-2.301-68-multiplied-landscape-only Запрет использования кратных форматов aNxM в вертикальной ориентации.
gost-2.301-68-paper-orientation Допустимость ориентации (portrait или landscape).
gost-2.301-68-a4-landscape Запрет использования формата А4 в альбомной ориентации (ГОСТ 2.301-68, п. 2).
gost-2.302-68-scale-series Масштаб должен принадлежать ряду ГОСТ 2.302 (1:1, 1:2, 1:2,5, 2:1 и др.).
gost-2.302-68-scale-m-prefix Запрет буквы «М» или «М:» в графе масштаба.
gost-2.302-68-scale-decimal-comma Запрет точки в качестве десятичного разделителя масштаба (требуется запятая).
gost-2.304-81-subscript-base-height Запрет размера основного шрифта менее 2,5 мм при наличии индексов (ГОСТ 2.304-81, п. 2.6).
gost-2.304-81-font-height Высота шрифта h должна принадлежать ряду ГОСТ 2.304.
gost-text-scale-warning Предупреждение о сжатии текста ниже 70%.
gost-text-scale-extreme Ошибка экстремального сжатия текста ниже 40%.
gost-2.103-2013-litera-value Проверка допустимости символов литер (П, Э, Т, И, О, О1, О2, А, Б, У).
gost-2.104-2006-mass-unit Запрет указания единиц измерения «кг» в графе массы.
gost-2.104-2006-mass-decimal-comma Запрет точки в графе массы (требуется запятая).
gost-2.104-2006-stamp-width Проверка точной ширины основной надписи и ее колонок по ГОСТ 2.104-2006 (185 мм).
gost-2.104-2006-stamp-height Проверка точной высоты основной надписи и ее строк по ГОСТ 2.104-2006.
gost-2.104-2006-members-overflow Запрет превышения вместимости граф подписей (Форма 1: 6 строк, Форма 2: 5 строк).
gost-2.104-2006-changes-overflow Запрет превышения вместимости таблицы изменений текущей основной надписи.
gost-2.104-2006-toc-unsupported Запрет передачи параметра оглавления (toc) в формы кроме Формы 2.
gost-2.303-68-line-thickness-s Толщина основной линии s в диапазоне от 0,5 до 1,4 мм.
gost-2.303-68-line-thickness-ratio Соотношение толщин линий: тонкая линия s_thin от s/3 до s/2.
eskd-drafting-preset-lines Допустимость значения пресета ("industry" или "gost").
eskd-drafting-page-numbers Корректность номеров страниц (текущий <= всего, целые положительные).

7. Пользовательские и отраслевые основные надписи

Пакет eskd-drafting следует государственным стандартам ЕСКД. Встроенные основные надписи и валидаторы соответствуют текстам ГОСТ. Нестандартные, отраслевые (СТО, ТУ) и учебные формы подключаются через модульные параметры bottom или subsequent-bottom без модификации ядра пакета:


8. Каталог примеров (examples/)

8.1. Быстрый старт (01-quickstart/)

  • examples/01-quickstart/readme-quickstart.typ — Быстрый старт: минимальный рабочий пример создания конструкторского документа со всеми обязательными графами.
  • examples/01-quickstart/all-page-types.typ — Галерея типов страниц ЕСКД: демонстрация 6 встроенных шаблонов страниц (page-title, page-first-form2, page-body, page-first-form1, page-body-double, page-blank).

8.2. Чертежи и схемы (02-drawings/)

  • examples/02-drawings/drawing-a4.typ — Чертеж детали А4 вертикальный: основная надпись Форма 1 (55 мм), трехстрочный боковой штамп 3r (графы 19–23), графа 26 (повернутое обозначение), графа 3 (материал).
  • examples/02-drawings/drawing-a3.typ — Сборочный чертеж А3 горизонтальный: основная надпись Форма 1, пятистрочный боковой штамп 5r (графы 19–25), графа 26, составная литера «О1».
  • examples/02-drawings/drawing-a2-portrait.typ — Сборочный чертеж А2 вертикальный: компоновка бокового штампа 7r с фиксированным разрывом (gap: 47mm) для фальцовки в папку А4.
  • examples/02-drawings/drawing-a2-landscape.typ — Сборочный чертеж А2 горизонтальный: основная надпись Форма 1, расширенный семистрочный боковой штамп 7r (графы 19–25), графа 26.
  • examples/02-drawings/multiplied-formats-a4x3-drawing.typ — Чертеж и схема на кратном формате А4х3 (630х297 мм): рабочая рамка $605 \times 287\text{ мм}$, Форма 1, боковой штамп 7r, графа 31 («Копировал») и графа 32 (Формат А4х3).

8.3. Текстовые документы (03-text-documents/)

  • examples/03-text-documents/explanatory-note.typ — Пояснительная записка (текстовый документ): структура документа: титульный лист (page-title), содержание (page-first-form2 с toc, Форма 2 52 мм), заглавный лист (page-first-form2, Форма 2 40 мм), последующие листы (page-body, Форма 2а 15 мм).
  • examples/03-text-documents/double-sided-text.typ — Двусторонняя печать текстового документа: чередование нечетных страниц с полем подшивки справа (Форма 2, Форма 2а) и четных страниц с зеркальным полем слева и зеркальной основной надписью Формы 2б (page-body-double).
  • examples/03-text-documents/text-document-with-a4x3-insert.typ — Пояснительная записка со складным листом А4х3 (ГОСТ 2.105-2019): сквозная нумерация тома А4 со складной вклейкой А4х3 для широкой сводной таблицы (Форма 2а) и схемы технологического процесса (Форма 1).

8.4. Тонкая настройка реквизитов (04-advanced-features/)

  • examples/04-advanced-features/advanced-members.typ — Настройка участников документа (графы 10–13): 4-элементные кортежи с личными подписями, гранулярные кегли (label-size, name-size), вертикальная гармонизация колонок (compute-group-font), разделители ().
  • examples/04-advanced-features/advanced-changes.typ — Настройка таблицы изменений (графы 14–18): многострочная таблица изменений (до 4 строк в Форме 1), формат массива словарей, индивидуальные кегли ячеек (doc-size, sig-size), вертикальная гармонизация кеглей, динамическое обновление актуального изменения на последующих листах через eskd-set.
  • examples/04-advanced-features/table-of-changes.typ — Таблица изменений (графы 14–18): массив изменений changes, сквозное отображение в чертеже (Форма 1) и обновление актуальной записи для последующих листов (Форма 2а).
  • examples/04-advanced-features/dynamic-override.typ — Динамическое переопределение реквизитов и страниц: изменение метаданных документа с помощью #eskd-set, принудительное задание номеров страниц (page, total).
  • examples/04-advanced-features/copier-and-format-labels.typ — Служебные надписи под внешней рамкой (графы 31 и 32): графа 31 («Копировал», 120 мм) и графа 32 («Формат», 65 мм) с автоматическим определением (format: auto).

8.5. Шрифты и линии (05-typography/)

  • examples/05-typography/custom-fonts-and-types.typ — Пользовательские шрифты и шрифт типа А: подключение шрифта через параметр font, начертание шрифта типа А по ГОСТ 2.304-81 (font-type: "type-a"), пресет тонких линий "gost".
  • examples/05-typography/text-scale-and-autofit.typ — Автоподгонка кегля и контроль читаемости: дискретный перебор стандартных высот $h \in {5,0; 3,5; 2,5; 1,8}\text{ мм}$, правила контроля сжатия gost-text-scale-warning (<70%) и gost-text-scale-extreme (<40%).
  • examples/05-typography/preset-lines.typ — Сравнение стилей линий industry и gost: пресет толстых линий 0,8 мм в сравнении с тонкими линиями 0,35 мм.

8.6. Пользовательские штампы (06-custom-stamps/)

  • examples/06-custom-stamps/custom-industry-stamp.typ — Отраслевая основная надпись предприятия: подключение пользовательской формы основной надписи организации через параметр bottom с сохранением нормативного контроля.
  • examples/06-custom-stamps/student-custom-form.typ — Учебная основная надпись для курсовых и дипломных проектов: интеграция нестандартной основной надписи последующих листов через модульный параметр subsequent-bottom.

9. Тестирование и производительность

9.1. Запуск тестового набора

# Установка зависимостей тестового контура
pip install -r ./tests/requirements-dev.txt

# Запуск модульного тестирования
python ./tests/tests.py

# Запуск бенчмарков производительности
python ./tests/benchmarks.py

9.2. Архитектурные свойства

  • Линейная масштабируемость O(N): время компиляции пропорционально числу страниц без квадратичных задержек на больших документах.
  • Поддерживаемые форматы вывода: валидирован экспорт в PDF 1.7, PDF 2.0, архивные профили PDF/A (1b, 2b, 3b), PDF/UA-1, а также SVG, PNG и HTML.

10. Лицензия

Проект использует двойное лицензирование:

  • Основной код библиотеки распространяется под лицензией MIT License.
  • Шаблонные файлы и стартовый код в директориях template/ и examples/ распространяются под лицензией без требования атрибуции MIT-0. Это означает, что вы можете свободно использовать, модифицировать и распространять документы, созданные на основе этих шаблонов, без обязательного сохранения уведомлений об авторских правах оригинального пакета.