Package Information
- Last Updated
- Minimum Typst Version
- 0.12.0
- Authors
- runasexe
- Categories
- layoutmodeltext
- Disciplines
- engineering
Preview
1. Get the package
Download the package using the TPIX CLI:
tpix get @preview/eskd-drafting:0.1.02. Initialize from template
Create a new project from this template:
typst init @preview/eskd-drafting:0.1.0Библиотека оформления конструкторской документации ЕСКД: eskd-drafting
eskd-drafting — пакет для системы верстки Typst, реализующий автоматическое построение чертежных рамок, основных надписей (штампов), дополнительных граф инвентарного учета и разметки страниц технических документов в соответствии со стандартами Единой системы конструкторской документации (ЕСКД).
Языковые версии: English Documentation | English Quick Guide
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$.
Инженерные истоки и нормативное обоснование ограничений
- Вертикальное положение формата А4: базовый формат проектной документации и архивного хранения составляет 210 × 297 мм. Вертикальный лист А4 подшивается по левому полю 20 мм непосредственно в стандартную папку или скоросшиватель без необходимости складывания, а основная надпись сразу находится в правом нижнем углу лицевой стороны.
- Горизонтальное положение кратных форматов А4хN: формат А4хN спроектирован для складывания в архивную папку А4 исключительно вертикальными сгибами-гармошкой по ГОСТ 2.501-2013 (приложение Б) с шагом 190/210 мм. При высоте 297 мм лист не требует продольных сгибов по высоте: после складывания он соответствует габаритам папки (297 мм), а основная надпись остается на лицевой стороне. Вертикальная ориентация (например, 297 × 630 мм) стандартом не предусмотрена, так как сложить такой лист без нарушения видимости штампа и полей подшивки невозможно.
- Нормативные исключения для горизонтального А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).
- Группа АСКОН (Компас-3D):
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). Отказ от искусственного скоса обусловлен следующими причинами:
- Искажение геометрии знаков: При программном скосе вертикальные штрихи истончаются относительно горизонтальных, что нарушает требование ГОСТ 2.304-81 к постоянству толщины линии обводки $d = 1/10,h$ (для типа Б) или $d = 1/14,h$ (для типа А).
- Нарушение габаритных контейнеров (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) и контроль читаемости
- Дискретный перебор по ряду ГОСТ 2.304-81: высота шрифта ступенчато уменьшается по ряду h ∈ {40.0, 28.0, 20.0, 14.0, 10.0, 7.0, 5.0, 3.5, 2.5, 1.8} мм.
- Геометрическое масштабирование (
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по размеру листа) или берется из счетчиков страниц Typstcounter(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 без модификации ядра пакета:
- Отраслевая основная надпись предприятия: examples/06-custom-stamps/custom-industry-stamp.typ.
- Основная надпись для курсовых и дипломных проектов: examples/06-custom-stamps/student-custom-form.typ.
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. Это означает, что вы можете свободно использовать, модифицировать и распространять документы, созданные на основе этих шаблонов, без обязательного сохранения уведомлений об авторских правах оригинального пакета.