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

+247
View File
@@ -0,0 +1,247 @@
# Рисунки, таблицы, формулы и ссылки
Полный компилируемый каталог находится в [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` |
| Формулы | `ФОРМУЛЫ` |
| Списки и текст | `СПИСКИ И ТЕКСТ` → все подразделы |
Каталог является частью автоматических тестов шаблона: примеры должны продолжать компилироваться после изменений библиотеки.