| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- #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>
|