# Рисунки, таблицы, формулы и ссылки Полный компилируемый каталог находится в [examples/formatting/main.typ](examples/formatting/main.typ). Его можно открыть рядом с предпросмотром, изменить параметры и скопировать готовый блок в свою главу. Собрать каталог отдельно: ```powershell typst compile --root . docs/examples/formatting/main.typ example.pdf ``` Или выполните задачу VS Code **Scientia: собрать учебный пример** и выберите пример оформления. ## Метки и автоматическая нумерация После рисунка, таблицы или формулы ставится уникальная метка: ```typst #figure( image("../assets/images/scheme.png", width: 80%), caption: [Расчётная схема], ) ``` Ссылка `@calculation-scheme` получает номер автоматически. Функция `vref` добавляет правильное слово. По умолчанию используется предложный падеж — самый частый вариант после слов «в» и «на»: ```typst на #vref() ``` Если нужен другой падеж, укажите его второй позицией одной буквой: ```typst #vref(, "и") // Рисунок 1 — именительный без #vref(, "р") // без Рисунка 1 — родительный к #vref(, "д") // к Рисунку 1 — дательный вижу #vref(, "в") // вижу Рисунок 1 — винительный перед #vref(, "т") // перед Рисунком 1 — творительный на #vref(, "п") // на Рисунке 1 — предложный ``` Названия объектов ссылки всегда начинаются с прописной буквы: «Рисунок», «Таблица», «Формула», «Раздел». Если в исключительном месте нужна строчная буква, добавьте `capitalized: false`. Можно писать и прежние сокращения (`"имен"`, `"род"`, `"дат"`, `"вин"`, `"тв"`, `"предл"`), и полные названия (`"именительный"`, `"предложный"` и т. д.). Для нескольких однородных ссылок действуют те же правила: `#vrefs((, ))` даст «Рисунках 1 и 2». При добавлении новой главы не копируйте уже существующую метку. ## Рисунки В примере показаны: - обычное изображение с шириной в процентах; - фиксированная ширина в сантиметрах и выравнивание; - несколько панелей под одной подписью; - одиночные и групповые ссылки. Изображение храните в `assets/images/`. Для фотографий обычно подходит PNG или JPEG, для схем — SVG. ## Таблицы Компонент `corp-table` добавляет фирменную шапку и поддерживает: - равные, относительные и фиксированные ширины столбцов; - отдельные `header` и `body`; - размер текста, интервалы и поля ячеек; - выравнивание по столбцам; - `rowspan` и `colspan`; - повторение шапки и надпись «Продолжение таблицы»; - импорт данных из CSV и TSV. Минимальный вариант: ```typst #figure( corp-table( columns: (2fr, 1fr), header: ([Параметр], [Значение]), body: ([Высота уступа], [15 м], [Угол откоса], [70°]), ), caption: [Исходные параметры], ) ``` Красная строка внутри ячеек и в подписи таблицы отключается автоматически. Это правило действует и для `corp-table`, и для обычной встроенной `table`. Обычные таблицы в отчёте по умолчанию выравниваются по правому краю с вертикальным центрированием (`align: right + horizon`, задаётся в шаблоне). Таблица может переопределить выравнивание локальным параметром `align:`. ## Формулы Встроенная формула пишется внутри строки: `$K >= 1.3$`. Отдельная формула с номером: ```typst #formula( $K = (sum F_("уд"))/(sum F_("сдв"))$, ) ``` Ссылка: `#eqref()`. Пояснения «где …» после формулы оформляются хелпером `где`: без красной строки, с висячим отступом, чтобы обозначения величин выстраивались в столбец: ```typst #formula( $K = (sum F_("уд"))/(sum F_("сдв"))$, ) #где[ где $K$ — коэффициент запаса устойчивости;\ $F_"уд"$ — удерживающие силы; ] ``` ## Настраиваемые списки `numbered-list` настраивает форматирование, но сохраняет встроенный механизм [`enum`](https://typst.app/docs/reference/model/enum/). Поэтому продолжают работать штатные переносы страниц, вложенные и многоабзацные пункты. Правила шаблонов номеров описаны в документации [`numbering`](https://typst.app/docs/reference/model/numbering/). Для обычной схемы ГОСТ достаточно обернуть стандартный список: ```typst #numbered-list[ + Первый уровень + Второй уровень + Третий уровень ] ``` По умолчанию получится `1.` → `а)` → `1)`. Частые готовые схемы: | Схема | Результат по уровням | |-------|----------------------| | `"gost"` | `1.` → `а)` → `1)` | | `"decimal"` | `1.` → `1.1.` → `1.1.1.` | | `"decimal-plain"` | `1` → `1.1` → `1.1.1` | | `"local-mixed"` | `1.` → `а.` → `‣` | | `"full-mixed"` | `1.` → `1.а.` → `1.а.‣` | | `"legal"` | `A)` → `A)1.` | | `"bullets"` | `•` → `∙` → `‣` → `⁃` → `◦` | Тип каждого уровня вложенности задаётся через `levels`. Это именно форматы уровней, а не готовые номера: `levels: ("1", "а", "A")` означает цифровой первый уровень, кириллический второй и латинский третий. Соседние пункты увеличиваются автоматически. Поддерживаются `"1"`, `"01"`, `"I"`, `"i"`, `"A"`, `"a"`, `"А"`, `"а"`, произвольный символ или функция: ```typst #numbered-list( levels: ("1", "а", "A"), full: true, separators: (".", ")"), suffixes: (".", ")", "."), )[ + Первый уровень + Второй уровень + Третий уровень ] ``` Этот пример даёт `1.`, `1.а)` и `1.а)A.`. Параметр `full` включает или скрывает номера родительских уровней. Геометрия списка настраивается независимо: | Параметр | Что изменяет | |----------|--------------| | `outer-indent` | общий отступ всего списка | | `level-indent` | дополнительный отступ каждого вложенного уровня | | `body-indent` | расстояние от номера или маркера до текста | | `line-leading` | расстояние между строками внутри одного пункта | | `item-spacing` | расстояние между соседними пунктами | | `paragraph-spacing` | расстояние между абзацами внутри одного пункта | Чтобы продолжить с нужного номера, первый пункт задают числом, а следующие снова пишут через `+`: ```typst #numbered-list(levels: ("01",), suffixes: ".")[ 8. Восьмой пункт будет показан как 08. + Следующий пункт будет показан как 09. ] ``` Полный компилируемый каталог содержит примеры всех типов счётчиков, разделителей, маркеров и интервалов. ## Где смотреть допустимые варианты | Элемент | Раздел исходника | |---------|------------------| | Обычный рисунок | `РИСУНКИ → Обычное изображение` | | Сетка изображений | `РИСУНКИ → Несколько панелей` | | Простая таблица | `ТАБЛИЦЫ → Простая таблица` | | Настраиваемая таблица | `ТАБЛИЦЫ → Управление шириной` | | Объединённые ячейки | `ТАБЛИЦЫ → Многострочная шапка` | | CSV / TSV | `ТАБЛИЦЫ → Таблица из CSV` | | Формулы | `ФОРМУЛЫ` | | Списки и текст | `СПИСКИ И ТЕКСТ` → все подразделы | Каталог является частью автоматических тестов шаблона: примеры должны продолжать компилироваться после изменений библиотеки.