Initial commit

This commit is contained in:
malysheva committed 2026-10-09 04:24:38 +00:00
commit c534d5ce80
163 files changed
+11500

No files matched your search

@@ -0,0 +1,9 @@
Уважаемый Иван Иванович!
Предлагаем выполнить геомеханическое сопровождение горных работ после получения согласованного комплекта исходных данных.
== Состав и результат работ
В состав входят анализ материалов, подготовка расчётных схем, проверочные расчёты и разработка рекомендаций. Заказчику передаются технический отчёт в PDF, таблица расчётных случаев и графические материалы.
Для начала требуются актуальная проектная геометрия, характеристики пород и сведения об уровне подземных вод. Один цикл уточнения по консолидированным замечаниям включён в стоимость.
@@ -0,0 +1,11 @@
== Состав результата
#table(
columns: (1cm, 1fr, 3.5cm),
inset: 5pt,
align: (center, left, center),
[№], [Материал], [Формат],
[1], [Технический отчёт], [PDF],
[2], [Расчётные таблицы], [XLSX],
[3], [Графические материалы], [PNG / SVG],
)
@@ -0,0 +1,72 @@
// ПРИМЕР ТЕХНИКО-КОММЕРЧЕСКОГО ПРЕДЛОЖЕНИЯ.
#import "/.template/lib/index.typ": document, profiles, recipient, attachment, attachment-set, load-company, empty-private-settings, private-company-media
#let company-id = "scientia" // "scientia" | "technology" | "too"
#let document-mode = "final" // "final" | "draft" | "clean-copy"
#let use-private-assets = false // true — читать .private/settings.typ
#let private-settings = if use-private-assets {
import "/.private/settings.typ": settings
settings
} else {
empty-private-settings
}
#let company-media = private-company-media(private-settings, company-id)
#let company = load-company(
company-id,
logo: auto,
signature: company-media.signature,
stamp: company-media.stamp,
)
#let addressee = recipient(
company: "АО «Заказчик»",
title: "Руководителю проекта",
name: "Иванову Ивану Ивановичу",
address: none,
)
#let attachments = attachment-set(
items: (
attachment(
"scope",
"Техническое задание",
[#include "chapters/99-appendices.typ"],
subtitle: "Состав и результаты работ",
number: auto,
outlined: true,
),
),
numbering: "arabic",
start: 1,
)
#show: document.with(
company: company,
profile: profiles.commercial_offer(
recipient: addressee,
subject: "Геомеханическое сопровождение горных работ",
amount: "1 250 000",
currency: "руб.",
tax_note: "включая НДС 20 %",
delivery_term: "45 рабочих дней с даты получения исходных данных",
validity: "30 календарных дней",
payment_terms: "30 % аванс, 70 % после передачи результата",
date: "01.01.2026",
reference: "ТКП-001/2026",
title: "Технико-коммерческое предложение",
signer: none,
note: "Контактное лицо: Петров П.П.",
show_stamp: true,
attachments: attachments,
render_attachments: true,
),
options: (
mode: document-mode,
watermark: if document-mode == "draft" { "ЧЕРНОВИК" } else { none },
media-policy: if document-mode == "final" { "placeholder" } else { "reserve-space" },
diagnostics: true,
),
)
#include "chapters/10-offer.typ"
@@ -0,0 +1,5 @@
1.1. Исполнитель обязуется выполнить геомеханические расчёты и подготовить технический отчёт, а Заказчик обязуется предоставить исходные данные, принять и оплатить результат.
1.2. Состав работ, исходные данные и требования к результату устанавливаются техническим заданием — приложением № 1.
1.3. Результат передаётся в электронном виде в формате PDF, если стороны письменно не согласовали иной формат.
@@ -0,0 +1,5 @@
2.1. Цена работ составляет 1 250 000 (Один миллион двести пятьдесят тысяч) рублей, включая НДС 20 %.
2.2. Заказчик перечисляет аванс в размере 30 % в течение пяти рабочих дней с даты подписания договора. Оставшиеся 70 % оплачиваются после передачи результата и подписания акта.
2.3. Дополнительные работы выполняются только после письменного согласования состава, стоимости и сроков.
@@ -0,0 +1,5 @@
3.1. Стороны несут ответственность за неисполнение обязательств в соответствии с договором и применимым законодательством.
3.2. Исполнитель не отвечает за выводы, основанные на неполных или недостоверных исходных данных, если недостатки данных невозможно было выявить при обычной проверке.
3.3. Этот раздел является демонстрационной структурой и обязательно требует юридической проверки перед использованием.
@@ -0,0 +1,4 @@
1. Цель работ — оценка устойчивости проектных конструкций.
2. Исходные данные предоставляет Заказчик по согласованному перечню.
3. Результат — технический отчёт с расчётами и рекомендациями.
4. Срок выполнения — 45 рабочих дней после получения полного комплекта данных.
+125
View File
@@ -0,0 +1,125 @@
// ПРИМЕР ДОГОВОРА. Текст является заготовкой и требует юридической проверки.
#import "/.template/lib/index.typ": document, profiles, party, signer, attachment, attachment-set, load-company, empty-private-settings, private-company-media
#let company-id = "scientia" // "scientia" | "technology" | "too"
#let document-mode = "final" // "final" | "draft" | "clean-copy"
#let use-private-assets = false // true — читать .private/settings.typ
#let private-settings = if use-private-assets {
import "/.private/settings.typ": settings
settings
} else {
empty-private-settings
}
#let company-media = private-company-media(private-settings, company-id)
#let company = load-company(
company-id,
logo: auto,
signature: company-media.signature,
stamp: company-media.stamp,
)
#let contractor = party(
"contractor",
"Исполнитель",
company.legal.name,
legal: company.legal,
contacts: company.contacts,
banking: company.banking,
representative: signer(
company.director.name,
company.director.title,
basis: "Устава",
signature: company.resources.signature,
stamp: company.resources.stamp,
),
)
#let customer = party(
"customer",
"Заказчик",
"АО «Заказчик»",
legal: (
inn: "0000000000",
kpp: "000000000",
ogrn: "0000000000000",
address: "620000, г. Екатеринбург, ул. Примерная, 1",
),
contacts: (
email: "customer@example.invalid",
phone: "+7 (000) 000-00-00",
),
banking: (
bank: "Пример Банк",
account: "00000000000000000000",
correspondent-account: "00000000000000000000",
bik: "000000000",
),
representative: signer(
"Иванов И.И.",
"Генеральный директор",
basis: "Устава",
signature: none,
stamp: none,
),
)
#let sections = (
profiles.contract_section(
"subject",
"Предмет договора",
[#include "chapters/10-subject.typ"],
number: auto,
level: 1,
),
profiles.contract_section(
"price",
"Цена и порядок расчётов",
[#include "chapters/20-price.typ"],
number: auto,
level: 1,
),
profiles.contract_section(
"responsibility",
"Ответственность сторон",
[#include "chapters/30-responsibility.typ"],
number: auto,
level: 1,
),
)
#let attachments = attachment-set(
items: (
attachment(
"specification",
"Техническое задание",
[#include "chapters/99-appendices.typ"],
subtitle: none,
number: auto,
outlined: true,
),
),
numbering: "arabic",
start: 1,
)
#document(
[],
company: company,
profile: profiles.contract(
number: "Д-001/2026",
date: "01 января 2026 г.",
place: "г. Екатеринбург",
title: "Договор оказания услуг",
parties: (contractor, customer),
preamble: auto,
sections: sections,
attachments: attachments,
),
options: (
mode: document-mode,
watermark: if document-mode == "draft" { "ЧЕРНОВИК" } else { none },
media-policy: if document-mode == "final" { "placeholder" } else { "reserve-space" },
diagnostics: true,
),
)
@@ -0,0 +1,9 @@
Уважаемый Иван Иванович!
Направляем на рассмотрение материалы первого этапа работ по договору № Д-001/2026. В комплект включены пояснительная записка, таблица исходных данных и перечень вопросов, требующих согласования.
Просим подтвердить получение материалов и направить замечания до 15 января 2026 года. При отсутствии замечаний предлагается использовать переданные данные для следующего расчётного этапа.
Контактное лицо по техническим вопросам — Петров Пётр Петрович, `author@example.invalid`.
С уважением,
@@ -0,0 +1,5 @@
Перечень передаваемых материалов:
1. Пояснительная записка — 25 листов.
2. Таблица исходных данных — 1 файл в формате XLSX.
3. Графические приложения — 3 листа.
+65
View File
@@ -0,0 +1,65 @@
// ПРИМЕР ДЕЛОВОГО ПИСЬМА. Каталог можно целиком скопировать в корень проекта.
#import "/.template/lib/index.typ": document, profiles, recipient, attachment, attachment-set, load-company, empty-private-settings, private-company-media
#let company-id = "scientia" // "scientia" | "technology" | "too"
#let document-mode = "final" // "final" | "draft" | "clean-copy"
#let use-private-assets = false // true — читать .private/settings.typ
#let private-settings = if use-private-assets {
import "/.private/settings.typ": settings
settings
} else {
empty-private-settings
}
#let company-media = private-company-media(private-settings, company-id)
#let company = load-company(
company-id,
logo: auto,
signature: company-media.signature,
stamp: company-media.stamp,
)
#let addressee = recipient(
company: "АО «Горнодобывающая компания»",
title: "Техническому директору",
name: "Иванову Ивану Ивановичу",
address: "620000, г. Екатеринбург, ул. Примерная, 1",
)
#let attachments = attachment-set(
items: (
attachment(
"materials",
"Перечень передаваемых материалов",
[#include "chapters/99-appendices.typ"],
subtitle: none,
number: auto,
outlined: false,
),
),
numbering: "arabic",
start: 1,
)
#show: document.with(
company: company,
profile: profiles.letter(
recipient: addressee,
date: "01.01.2026",
reference: "ИСХ-001/2026",
title: "О направлении материалов этапа 1",
signer: none,
note: "Исп.: Петров П.П., +7 (000) 000-00-00",
show_stamp: true,
attachments: attachments,
render_attachments: false,
),
options: (
mode: document-mode,
watermark: if document-mode == "draft" { "ЧЕРНОВИК" } else { none },
media-policy: if document-mode == "final" { "placeholder" } else { "reserve-space" },
diagnostics: true,
),
)
#include "chapters/10-letter.typ"
@@ -0,0 +1,15 @@
<svg xmlns="http://www.w3.org/2000/svg" width="900" height="280" viewBox="0 0 900 280">
<rect width="900" height="280" rx="24" fill="#fffaf0"/>
<g font-family="Arial, sans-serif" font-size="25" text-anchor="middle" fill="#222">
<rect x="45" y="75" width="220" height="125" rx="16" fill="#fbb20d"/>
<text x="155" y="132">Исходные</text><text x="155" y="165">данные</text>
<rect x="340" y="75" width="220" height="125" rx="16" fill="#e39f49"/>
<text x="450" y="132">Расчётная</text><text x="450" y="165">модель</text>
<rect x="635" y="75" width="220" height="125" rx="16" fill="#fbb20d"/>
<text x="745" y="132">Выводы и</text><text x="745" y="165">рекомендации</text>
</g>
<g stroke="#444" stroke-width="6" fill="none">
<path d="M265 137h75m220 0h75"/>
<path d="m323 121 17 16-17 16m295-32 17 16-17 16"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 905 B

@@ -0,0 +1,16 @@
@book{fnip,
title={Федеральные нормы и правила в области промышленной безопасности},
author={{Ростехнадзор}},
year={2020},
publisher={Приказ №439 от 13 ноября 2020 г.}
}
@book{rukovodstvo,
title={Руководство по проектированию бортов карьера. Guidelines for open pit slope design},
author={Рид, Д. and Стейси, П.},
year={2015},
publisher={Правовед},
langid = {russian},
address={Екатеринбург},
pages={528}
}
@@ -0,0 +1,11 @@
#import "/.template/lib/index.typ": vref, vrefs
#heading(numbering: none)[ВВЕДЕНИЕ]
Настоящий отчёт подготовлен для демонстрации структуры рабочего проекта. Замените этот текст описанием основания, цели, исходных данных и границ своей работы.
В основном разделе показаны рисунки, таблицы, формулы, ссылки и цитирование источников. Эти блоки можно копировать и адаптировать. Например, требования к наблюдениям можно сопроводить ссылкой на нормативный источник @fnip.
Цель работы — оценить исходные условия, выполнить расчётную проверку и сформулировать рекомендации для следующего этапа.
Исходные материалы приведены в #vref(<appendix-source-data>), а дополнительные расчёты — в #vref(<appendix-additional-calculations>). Оба приложения можно указать одной групповой ссылкой: в #vrefs((<appendix-source-data>, <appendix-additional-calculations>)).
@@ -0,0 +1,78 @@
// Публичные функции шаблона можно импортировать в любой главе.
#import "/.template/lib/index.typ": corp-table, formula, vref, vrefs, eqref
= ИСХОДНЫЕ ДАННЫЕ <source-data>
В работе использованы инженерно-геологические материалы, параметры массива и проектная геометрия. Структура исходных данных показана на #vref(<workflow>).
// РИСУНОК: храните файлы проекта в assets/images/.
// width принимает, например, 60%, 12cm или auto.
#figure(
image("../assets/images/example-diagram.svg", width: 82%),
caption: [Последовательность подготовки расчётной модели],
) <workflow>
// НЕСКОЛЬКО ИЗОБРАЖЕНИЙ: grid позволяет собрать панели а), б), в).
#figure(
grid(
columns: (1fr, 1fr),
column-gutter: 1em,
row-gutter: 0.4em,
align(center)[
#rect(width: 5.4cm, height: 2.2cm, fill: rgb("fff3cf"), stroke: rgb("e39f49"))
#linebreak()
а) исходная схема
],
align(center)[
#circle(radius: 1.1cm, fill: rgb("fbb20d"), stroke: rgb("444444"))
#linebreak()
б) расчётная область
],
),
caption: [Варианты представления графических материалов],
) <figure-grid>
На #vrefs((<workflow>, <figure-grid>)) приведены два допустимых способа оформления графики.
= МЕТОДИКА РАСЧЁТА
Расчётный коэффициент запаса определяется отношением удерживающих сил к сдвигающим:
// ФОРМУЛА: helper formula оформляет отдельную нумерованную формулу.
#formula(
$K = (sum F_("уд"))/(sum F_("сдв"))$,
) <safety-factor>
В тексте можно использовать короткую формулу $K >= 1.3$ без отдельного номера. На #eqref(<safety-factor>) ссылаются как на обычный объект документа.
= РЕЗУЛЬТАТЫ
// ПРОСТАЯ ТАБЛИЦА: columns задаёт число или относительную ширину столбцов.
#figure(
corp-table(
columns: (1.3fr, 1fr, 1fr),
header: ([Расчётный случай], [Коэффициент $K$], [Оценка]),
body: (
[Основное сочетание], [1,42], [Устойчиво],
[Водо-насыщение], [1,31], [Устойчиво],
[Сейсмическое воздействие], [1,18], [Требуются меры],
),
align: (left, center, left),
table-align: "center",
text-size: 9.5pt,
body-inset: (x: 5pt, y: 4pt),
repeat_header: true,
continuation: true,
),
caption: [Результаты проверочных расчётов],
) <calculation-results>
Как видно из #vref(<calculation-results>, "р"), третий случай требует дополнительных мероприятий. Более сложные таблицы, объединение ячеек и импорт CSV показаны в `docs/examples/formatting/main.typ`.
== Основные рекомендации
- уточнить положение уровня подземных вод;
- проверить расчётные параметры по результатам наблюдений;
- повторить оценку после корректировки проектной геометрии.
Дополнительные исходные данные вынесены в приложение, а библиографическая запись хранится в `assets/references.bib`.
@@ -0,0 +1,11 @@
#heading(numbering: none)[ЗАКЛЮЧЕНИЕ]
В демонстрационном отчёте показаны настройка титульных данных, подключение глав, автоматическая нумерация рисунков, таблиц и формул, перекрёстные ссылки, библиография и приложение.
Перед выпуском собственного документа:
- замените значения в `main.typ`;
- удалите учебные блоки, которые не относятся к работе;
- подключите фактические главы через `#include`;
- проверьте ссылки, список источников и итоговый PDF;
- смените `document-mode` с `draft` на `final`.
@@ -0,0 +1,14 @@
= Исходные данные <appendix-source-data>
В приложении можно разместить исходные таблицы, схемы и другие материалы, которые перегружают основной текст.
#figure(
table(
columns: (1fr, 1fr),
inset: 5pt,
[Параметр], [Значение],
[Высота уступа], [15 м],
[Угол откоса], [70°],
),
caption: [Пример исходных параметров],
) <appendix-source-table>
@@ -0,0 +1,8 @@
= Дополнительные расчёты <appendix-additional-calculations>
Каждое приложение хранится в отдельном файле. Его первый заголовок задаёт название, номер формируется автоматически, а метка позволяет ссылаться на приложение из любой главы.
#figure(
rect(width: 6cm, height: 2cm, fill: luma(235), stroke: 0.6pt),
caption: [Дополнительная расчётная схема],
) <appendix-calculation-scheme>
+109
View File
@@ -0,0 +1,109 @@
// ============================================================================
// SCIENTIA — НАСТРОЙКА ОТЧЁТА
// Меняйте значения в этом файле и подключайте нужные главы через #include.
// Готовые варианты для письма, ТКП и договора: docs/examples/documents/.
// ============================================================================
#import "/.template/lib/index.typ": document, profiles, bibliography-section, load-company, empty-private-settings, private-company-media, report-executor
// --- 1. ОСНОВНЫЕ ПЕРЕКЛЮЧАТЕЛИ ---------------------------------------------
#let company-id = "scientia" // Варианты: "scientia" | "technology" | "too"
#let document-mode = "final" // Варианты: "final" | "draft" | "clean-copy"
// Служебные страницы отчёта включаются независимо друг от друга.
#let show-title-page = true // Титульный лист
#let show-executors = true // Список исполнителей
#let show-outline = true // Содержание
// В чистом примере .private не требуется. Если вы скопировали свою папку
// .private, поменяйте только false на true.
#let use-private-assets = false
#let private-settings = if use-private-assets {
import "/.private/settings.typ": settings
settings
} else {
empty-private-settings
}
#let company-media = private-company-media(private-settings, company-id)
#let company = load-company(
company-id,
logo: auto,
signature: company-media.signature,
stamp: company-media.stamp,
)
// --- 2. ИСПОЛНИТЕЛИ ---------------------------------------------------------
// Состав и роли меняются здесь; имена и PNG берутся из справочника шаблона.
#let executors = (
report-executor("musikhin", role: "Ответственный исполнитель", private-settings: private-settings),
report-executor("guzeev", role: "Главный геомеханик", private-settings: private-settings),
report-executor("fedorov", private-settings: private-settings),
)
// --- 3. ИСТОЧНИКИ И ПРИЛОЖЕНИЯ ---------------------------------------------
#let bibliographies = (
bibliography-section(
"sources",
path("assets/references.bib"),
title: [СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ],
style: "gost-r-705-2008-numeric",
target: auto,
group: "report-sources",
page_break: true,
),
)
#let appendices = (
path("chapters/appendices/01-source-data.typ"),
path("chapters/appendices/02-additional-calculations.typ"),
)
// --- 4. ПАРАМЕТРЫ ОТЧЁТА ---------------------------------------------------
// Все значения, которые обычно проверяют в начале проекта, показаны явно.
#show: document.with(
company: company,
profile: profiles.report(
title: "Геомеханическое обоснование устойчивости бортов карьера",
theme: "Этап 1. Анализ исходных данных и расчёт устойчивости",
udk: "622.271.3",
director_date: "«01» января 2026 г.",
is_research: false,
is_intermediate: true,
stage_number: 1,
volume_number: 1,
contract_number: "Д-001/2026",
contract_date: "«01» января 2026 г.",
city: "Екатеринбург",
year: 2026,
executors: executors,
appendices: appendices,
appendix_numbering: "cyrillic",
appendix_start: 1,
bibliographies: bibliographies,
show_title_page: show-title-page,
show_executors: show-executors,
show_outline: show-outline,
figure_before: 0.75em,
figure_after: 0.75em,
table_before: 0.75em,
table_after: 0.75em,
figure_caption_before: 0pt,
figure_caption_after: 0pt,
table_caption_before: 0pt,
table_caption_after: 0pt,
),
options: (
mode: document-mode,
watermark: if document-mode == "draft" { "ЧЕРНОВИК" } else { none },
media-policy: if document-mode == "final" { "placeholder" } else { "reserve-space" },
diagnostics: true,
),
)
// --- 5. СОСТАВ ДОКУМЕНТА ---------------------------------------------------
// Чтобы заменить, добавить или переставить главу, измените только этот список.
#include "chapters/00-introduction.typ"
#pagebreak()
#include "chapters/10-main.typ"
#pagebreak()
#include "chapters/90-conclusion.typ"