Initial commit

This commit is contained in:
tkachenko committed 2026-10-09 01:45:17 +00:00
commit 41d230d524
163 files changed
+11500

No files matched your search

@@ -0,0 +1,136 @@
#import "/.template/lib/index.typ": document, profiles, corp-table, formula, vref, vrefs, eqref
#let stress-rows = range(1, 73).map(index => (
[#index],
[
#if index == 3 {
[Составной параметр:
- первый вложенный пункт;
- второй вложенный пункт с длинным пояснением внутри ячейки.]
} else {
[Параметр #index с достаточно длинным наименованием для проверки переноса строк]
}
],
[
#if index == 4 {
[Значение #index. #link("https://example.invalid/table-cell")[Ссылка внутри ячейки] сохраняет кликабельность и не меняет отступы.]
} else {
[Значение #index. Текст ячейки переносится, но сохраняет одинаковые внутренние поля и межстрочный интервал.]
}
],
)).flatten()
#show: document.with(
company: "test-company",
profile: profiles.report(
title: "Стресс-тест типографики",
theme: "Таблицы, списки, формулы и грамматические ссылки",
year: 2026,
executors: (),
),
)
= КОНТЕКСТНЫЕ ИНТЕРВАЛЫ
== Заголовок перед абзацем
Обычный абзац после заголовка должен иметь устойчивую красную строку, нормативный межстрочный интервал и не зависеть от элемента, который находился перед заголовком.
== Заголовок перед маркированным списком
- Первый уровень маркированного списка;
- второй уровень с длинным текстом, который переносится на новую строку без смещения маркера;
- третий уровень.
- Возврат на первый уровень.
== Заголовок перед нумерованным списком
+ Основной пункт
+ Второй уровень
+ Третий уровень
+ Следующий основной пункт
== Соседние заголовки
=== Заголовок третьего уровня
==== Заголовок четвёртого уровня
Текст после цепочки заголовков.
= ССЫЛКИ С ПАДЕЖАМИ <stress-section>
#figure(
rect(width: 3cm, height: 1.3cm, fill: rgb("fbb20d")),
caption: [Первый контрольный рисунок],
) <stress-figure-a>
#figure(
circle(radius: 0.65cm, fill: rgb("e39f49")),
caption: [Второй контрольный рисунок],
) <stress-figure-b>
#formula($a^2 + b^2 = c^2$) <stress-equation>
Именительный: #vref(<stress-figure-a>, grammatical-case: "имен").
Родительный: без #vref(<stress-figure-a>, grammatical-case: "род").
Дательный: к #vref(<stress-figure-a>, grammatical-case: "дат").
Винительный: см. #vref(<stress-figure-a>, grammatical-case: "вин").
Творительный: перед #vref(<stress-figure-a>, grammatical-case: "тв").
Предложный: на #vref(<stress-figure-a>, grammatical-case: "предл").
Групповая ссылка: на #vrefs(
(<stress-figure-a>, <stress-figure-b>),
grammatical-case: "предл",
).
Формула в дательном падеже: к #vref(<stress-equation>, grammatical-case: "дат"); короткая ссылка #eqref(<stress-equation>).
Ссылка на раздел: в #vref(<stress-section>, grammatical-case: "предл").
Внешняя ссылка: #link("https://example.invalid/specification")[контрольная спецификация].
= МНОГОСТРАНИЧНАЯ ТАБЛИЦА
#figure(
corp-table(
columns: (1.2cm, 1.7fr, 2.3fr),
header: (
table.cell(rowspan: 2, align: center + horizon)[№],
table.cell(colspan: 2, align: center + horizon)[Контрольные данные],
[Параметр],
[Описание и значение],
),
body: stress-rows,
repeat_header: true,
continuation: true,
continuation_text: "Продолжение таблицы",
body-leading: 0.65em,
body-inset: (x: 4pt, y: 3pt),
justify: false,
hyphenate: false,
),
caption: [Таблица, переходящая через несколько страниц],
) <stress-table>
= ПРОВЕРКА ПОСЛЕ ТАБЛИЦЫ
Текст после таблицы не должен прилипать к последней строке. Ссылка на #vref(<stress-table>, grammatical-case: "вин") остаётся рабочей.
#pagebreak()
= ВЫСОКАЯ СТРОКА ТАБЛИЦЫ
#let tall-cell = range(1, 66).map(index => [Строка высокой ячейки #index. Содержимое одной строки таблицы продолжается без потери границ.]).join(linebreak())
#figure(
corp-table(
columns: (3cm, 1fr),
header: ([Идентификатор], [Высокая ячейка]),
body: ([ROW-ONE], tall-cell),
row_breakable: true,
page_break: "fit",
repeat_header: true,
continuation: true,
continuation_text: "Продолжение высокой таблицы",
justify: false,
),
caption: [Одна высокая строка, переходящая через страницы],
) <tall-row-table>