Files
2026-10-09 01:45:17 +00:00

248 lines
13 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Рисунки, таблицы, формулы и ссылки
Полный компилируемый каталог находится в [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>
```
Ссылка `@calculation-scheme` получает номер автоматически. Функция `vref` добавляет правильное слово. По умолчанию используется предложный падеж — самый частый вариант после слов «в» и «на»:
```typst
на #vref(<calculation-scheme>)
```
Если нужен другой падеж, укажите его второй позицией одной буквой:
```typst
#vref(<calculation-scheme>, "и") // Рисунок 1 — именительный
без #vref(<calculation-scheme>, "р") // без Рисунка 1 — родительный
к #vref(<calculation-scheme>, "д") // к Рисунку 1 — дательный
вижу #vref(<calculation-scheme>, "в") // вижу Рисунок 1 — винительный
перед #vref(<calculation-scheme>, "т") // перед Рисунком 1 — творительный
на #vref(<calculation-scheme>, "п") // на Рисунке 1 — предложный
```
Названия объектов ссылки всегда начинаются с прописной буквы: «Рисунок», «Таблица», «Формула», «Раздел», «Приложение». Если в исключительном месте нужна строчная буква, добавьте `capitalized: false`.
Можно писать и прежние сокращения (`"имен"`, `"род"`, `"дат"`, `"вин"`, `"тв"`, `"предл"`), и полные названия (`"именительный"`, `"предложный"` и т. д.). Для нескольких однородных ссылок действуют те же правила: `#vrefs((<figure-a>, <figure-b>))` даст «Рисунках 1 и 2». При добавлении новой главы не копируйте уже существующую метку.
Для приложения метка ставится на первом заголовке его файла: `= Исходные данные <appendix-source-data>`. Запись `в #vref(<appendix-source-data>)` даст «в Приложении А», а `в #vrefs((<appendix-a>, <appendix-b>))` — «в Приложениях А и Б». Подключение файлов описано в [руководстве по документам](documents.md#приложения-отчёта).
## Информационные плашки
Компонент `info-block` выделяет замечание или важное пояснение большим цветным блоком:
```typst
#info-block(title: [ЗАМЕЧАНИЕ])[
Перед выпуском отчёта нужно согласовать исходные данные расчёта.
]
```
Цвета можно переопределить через `fill`, `accent` и `text-fill`; `title: none` убирает заголовок. В Typst Typewriter готовый блок вставляется кнопкой **Плашка-замечание**.
## Рисунки
В примере показаны:
- обычное изображение с шириной в процентах;
- фиксированная ширина в сантиметрах и выравнивание;
- несколько панелей под одной подписью;
- одиночные и групповые ссылки.
Изображение храните в `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: [Исходные параметры],
) <source-parameters>
```
Красная строка внутри ячеек и в подписи таблицы отключается автоматически. Это правило действует и для `corp-table`, и для обычной встроенной `table`.
### Списки внутри таблицы
По умолчанию списки наследуют обычное оформление документа. Для узкой таблицы достаточно добавить один параметр:
```typst
#corp-table(
list-layout: "compact",
columns: (1fr, 2fr),
header: ([Раздел], [Содержание]),
body: (
[Материалы], [
- исходные данные;
- результаты расчётов.
],
),
)
```
Доступны три явных режима:
| Значение | Результат |
|----------|-----------|
| `"normal"` | обычные отступы основного текста |
| `"compact"` | небольшой отступ для большинства таблиц |
| `"flush"` | маркер или номер начинается у левого поля ячейки |
Если `list-layout` не задан, существующее оформление не изменяется. Точные значения для всей таблицы можно задать параметрами `list-indent` и `list-body-indent`:
```typst
#corp-table(
list-indent: 0.2cm,
list-body-indent: 0.25em,
// остальные параметры таблицы
)
```
Эта настройка действует и на обычные списки `-`, и на нумерованные списки `+`, включая `numbered-list`. Для отдельной ячейки используйте локальные оболочки из раздела ниже. В обычной встроенной `table` параметра `list-layout` нет — применяйте `bullet-list` или `numbered-list` непосредственно внутри нужной ячейки.
## Формулы
Встроенная формула пишется внутри строки: `$K >= 1.3$`.
Отдельная формула с номером:
```typst
#formula(
$K = (sum F_("уд"))/(sum F_("сдв"))$,
) <safety-factor>
```
Ссылка: `#eqref(<safety-factor>)`.
## Настраиваемые списки
`bullet-list` настраивает маркированный список, а `numbered-list` — нумерованный. Обе оболочки сохраняют встроенные механизмы [`list`](https://typst.app/docs/reference/model/list/) и [`enum`](https://typst.app/docs/reference/model/enum/), поэтому продолжают работать штатные переносы страниц, вложенные и многоабзацные пункты. Правила шаблонов номеров описаны в документации [`numbering`](https://typst.app/docs/reference/model/numbering/).
Для маркированного списка можно быстро выбрать геометрию:
```typst
#bullet-list(layout: "compact")[
- Первый пункт.
- Второй пункт.
]
```
Параметр `layout` принимает `"normal"`, `"compact"` или `"flush"`. Без него список наследует настройки документа или окружающей таблицы.
Для обычной схемы ГОСТ достаточно обернуть стандартный список:
```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` | расстояние между абзацами внутри одного пункта |
Эти параметры доступны и в `bullet-list`, и в `numbered-list`. Явно заданное значение конкретного списка имеет приоритет над режимом всей таблицы:
```typst
#bullet-list(level-indent: 0.15cm, body-indent: 0.2em)[
- Точно настроенный пункт.
]
```
Чтобы продолжить с нужного номера, первый пункт задают числом, а следующие снова пишут через `+`:
```typst
#numbered-list(levels: ("01",), suffixes: ".")[
8. Восьмой пункт будет показан как 08.
+ Следующий пункт будет показан как 09.
]
```
Полный компилируемый каталог содержит примеры всех типов счётчиков, разделителей, маркеров и интервалов.
## Где смотреть допустимые варианты
| Элемент | Раздел исходника |
|---------|------------------|
| Обычный рисунок | `РИСУНКИ → Обычное изображение` |
| Сетка изображений | `РИСУНКИ → Несколько панелей` |
| Простая таблица | `ТАБЛИЦЫ → Простая таблица` |
| Настраиваемая таблица | `ТАБЛИЦЫ → Управление шириной` |
| Объединённые ячейки | `ТАБЛИЦЫ → Многострочная шапка` |
| CSV / TSV | `ТАБЛИЦЫ → Таблица из CSV` |
| Формулы | `ФОРМУЛЫ` |
| Списки и текст | `СПИСКИ И ТЕКСТ` → все подразделы |
Каталог является частью автоматических тестов шаблона: примеры должны продолжать компилироваться после изменений библиотеки.