13 KiB
Рисунки, таблицы, формулы и ссылки
Полный компилируемый каталог находится в examples/formatting/main.typ. Его можно открыть рядом с предпросмотром, изменить параметры и скопировать готовый блок в свою главу.
Собрать каталог отдельно:
typst compile --root . docs/examples/formatting/main.typ example.pdf
Или выполните задачу VS Code Scientia: собрать учебный пример и выберите пример оформления.
Метки и автоматическая нумерация
После рисунка, таблицы или формулы ставится уникальная метка:
#figure(
image("../assets/images/scheme.png", width: 80%),
caption: [Расчётная схема],
) <calculation-scheme>
Ссылка @calculation-scheme получает номер автоматически. Функция vref добавляет правильное слово. По умолчанию используется предложный падеж — самый частый вариант после слов «в» и «на»:
на #vref(<calculation-scheme>)
Если нужен другой падеж, укажите его второй позицией одной буквой:
#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>)) — «в Приложениях А и Б». Подключение файлов описано в руководстве по документам.
Информационные плашки
Компонент info-block выделяет замечание или важное пояснение большим цветным блоком:
#info-block(title: [ЗАМЕЧАНИЕ])[
Перед выпуском отчёта нужно согласовать исходные данные расчёта.
]
Цвета можно переопределить через fill, accent и text-fill; title: none убирает заголовок. В Typst Typewriter готовый блок вставляется кнопкой Плашка-замечание.
Рисунки
В примере показаны:
- обычное изображение с шириной в процентах;
- фиксированная ширина в сантиметрах и выравнивание;
- несколько панелей под одной подписью;
- одиночные и групповые ссылки.
Изображение храните в assets/images/. Для фотографий обычно подходит PNG или JPEG, для схем — SVG.
Таблицы
Компонент corp-table добавляет фирменную шапку и поддерживает:
- равные, относительные и фиксированные ширины столбцов;
- отдельные
headerиbody; - размер текста, интервалы и поля ячеек;
- обычные, компактные и нулевые отступы списков;
- выравнивание по столбцам;
rowspanиcolspan;- повторение шапки и надпись «Продолжение таблицы»;
- импорт данных из CSV и TSV.
Минимальный вариант:
#figure(
corp-table(
columns: (2fr, 1fr),
header: ([Параметр], [Значение]),
body: ([Высота уступа], [15 м], [Угол откоса], [70°]),
),
caption: [Исходные параметры],
) <source-parameters>
Красная строка внутри ячеек и в подписи таблицы отключается автоматически. Это правило действует и для corp-table, и для обычной встроенной table.
Списки внутри таблицы
По умолчанию списки наследуют обычное оформление документа. Для узкой таблицы достаточно добавить один параметр:
#corp-table(
list-layout: "compact",
columns: (1fr, 2fr),
header: ([Раздел], [Содержание]),
body: (
[Материалы], [
- исходные данные;
- результаты расчётов.
],
),
)
Доступны три явных режима:
| Значение | Результат |
|---|---|
"normal" |
обычные отступы основного текста |
"compact" |
небольшой отступ для большинства таблиц |
"flush" |
маркер или номер начинается у левого поля ячейки |
Если list-layout не задан, существующее оформление не изменяется. Точные значения для всей таблицы можно задать параметрами list-indent и list-body-indent:
#corp-table(
list-indent: 0.2cm,
list-body-indent: 0.25em,
// остальные параметры таблицы
)
Эта настройка действует и на обычные списки -, и на нумерованные списки +, включая numbered-list. Для отдельной ячейки используйте локальные оболочки из раздела ниже. В обычной встроенной table параметра list-layout нет — применяйте bullet-list или numbered-list непосредственно внутри нужной ячейки.
Формулы
Встроенная формула пишется внутри строки: $K >= 1.3$.
Отдельная формула с номером:
#formula(
$K = (sum F_("уд"))/(sum F_("сдв"))$,
) <safety-factor>
Ссылка: #eqref(<safety-factor>).
Настраиваемые списки
bullet-list настраивает маркированный список, а numbered-list — нумерованный. Обе оболочки сохраняют встроенные механизмы list и enum, поэтому продолжают работать штатные переносы страниц, вложенные и многоабзацные пункты. Правила шаблонов номеров описаны в документации numbering.
Для маркированного списка можно быстро выбрать геометрию:
#bullet-list(layout: "compact")[
- Первый пункт.
- Второй пункт.
]
Параметр layout принимает "normal", "compact" или "flush". Без него список наследует настройки документа или окружающей таблицы.
Для обычной схемы ГОСТ достаточно обернуть стандартный список:
#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", "А", "а", произвольный символ или функция:
#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. Явно заданное значение конкретного списка имеет приоритет над режимом всей таблицы:
#bullet-list(level-indent: 0.15cm, body-indent: 0.2em)[
- Точно настроенный пункт.
]
Чтобы продолжить с нужного номера, первый пункт задают числом, а следующие снова пишут через +:
#numbered-list(levels: ("01",), suffixes: ".")[
8. Восьмой пункт будет показан как 08.
+ Следующий пункт будет показан как 09.
]
Полный компилируемый каталог содержит примеры всех типов счётчиков, разделителей, маркеров и интервалов.
Где смотреть допустимые варианты
| Элемент | Раздел исходника |
|---|---|
| Обычный рисунок | РИСУНКИ → Обычное изображение |
| Сетка изображений | РИСУНКИ → Несколько панелей |
| Простая таблица | ТАБЛИЦЫ → Простая таблица |
| Настраиваемая таблица | ТАБЛИЦЫ → Управление шириной |
| Объединённые ячейки | ТАБЛИЦЫ → Многострочная шапка |
| CSV / TSV | ТАБЛИЦЫ → Таблица из CSV |
| Формулы | ФОРМУЛЫ |
| Списки и текст | СПИСКИ И ТЕКСТ → все подразделы |
Каталог является частью автоматических тестов шаблона: примеры должны продолжать компилироваться после изменений библиотеки.