# Пишите на Typst

Пишите статью, отчёт или резюме на Typst в режиме «Код» или «Визуально» — панель инструментов пишет код Typst за вас.

Выберите шаблон Typst и редактируйте его исходник `.typ` рядом со скомпилированным PDF. Панель инструментов пишет синтаксис Typst за вас, поэтому каждое изменение остаётся в исходнике, где его можно прочитать и отредактировать. Если разметку смотреть не хочется, переключите файл в визуальный режим.

![Пример Typst с панелью форматирования, исходником и скомпилированным отчётом.](https://cdn.oleafly.com/images/screenshots/desktop/docs/typst-writing-dark-window-v2.png)

## Скомпилируйте небольшой отчёт

1. Выберите **Новый проект → Использовать шаблон → Пустой документ Typst**.
2. Назовите его **Записка об измерениях** и откройте `main.typ`.
3. Вставьте пример ниже, затем выберите **Скомпилировать заново** или нажмите **⌘Enter / Ctrl+Enter**.

```typst title="main.typ"
#set document(title: "Measurement note", author: "Alex Chen")
#set page(paper: "a4", margin: 25mm)
#set heading(numbering: "1.")

= Measurement note
A short report on repeated measurements.

== Method <method>
We collect three observations and compare their mean.

$ overline(x) = (1 + 2 + 3) / 3 = 2 $

== Results
See @method for the procedure.

#table(
  columns: 2,
  [Run], [Value],
  [1], [1],
  [2], [2],
  [3], [3],
)
```

В PDF должны появиться нумерованные заголовки, выключная формула, ссылка на метод и таблица из двух колонок.

Чтобы PDF менялся по мере ввода, откройте стрелку рядом с **Скомпилировать заново** и установите для **Автокомпиляции** значение **Включена**. В проекте Typst это и есть живой предпросмотр. См. [Живой предпросмотр с автокомпиляцией](/docs/typst/#live-preview-with-auto-compile).

[Скачать исходник примера](/examples/writing-example.typ)

## Каждый инструмент панели инструментов

Прежде чем пользоваться инструментом форматирования, выделите текст, который нужно обернуть. Без выделения панель инструментов вставляет заполнитель, поверх которого можно печатать. Когда редактор слишком узок для всех кнопок, не поместившиеся переезжают в **Другие параметры форматирования** (`…`). Большинство этих инструментов есть и в контекстном меню редактора.

### Код / Визуально

Переключатель в начале панели инструментов меняет то, как показывается файл. **Код** показывает исходник Typst. **Визуально** рисует заголовки, выделение, списки, математику, изображения, таблицы, ссылки и сноски прямо в тексте и возвращает исходник в строке, где стоит курсор. Файл в обоих режимах один и тот же. Подробности — в разделе [Визуальный режим в Typst](#visual-mode).

### Отменить

Отменяет последнее изменение. ⌘Z / Ctrl+Z. Кнопка становится серой, когда отменять нечего.

### Повторить

Повторяет отменённое изменение. **⌘Shift+Z / Ctrl+Shift+Z**.

### Заголовок → Заголовок

Выделите название и выберите **Заголовок**. `= Title`.

### Заголовок → Раздел

Добавляет раздел внутри документа. `== Section`.

### Заголовок → Подраздел

Добавляет уровень ниже раздела. `=== Subsection`.

### Заголовок → Подподраздел

Добавляет заголовок четвёртого уровня. `==== Subsubsection`.

### Заголовок → Мелкий заголовок

Добавляет заголовок пятого уровня. `===== Minor heading`.

### Заголовок → Заголовок абзаца

Добавляет заголовок шестого уровня. `====== Paragraph heading`.

### Полужирный

Выделите «three observations». `*three observations*`; ⌘B / Ctrl+B.

### Курсив

Выделите термин, на котором нужно сделать акцент. `_term_`; ⌘I / Ctrl+I.

### Подчёркнутый

Выделите фразу. `#underline[phrase]`.

### Зачёркнутый

Пометьте устаревшую фразу. `#strike[phrase]`.

### Код в строке

Выделите имя файла или имя переменной. Окружает его обратными кавычками.

### Вставить ссылку

Замените `url`, затем `text`. `#link("url")[text]`.

### Сослаться из проекта

Выполните поиск по библиографии проекта по ключу, автору или заголовку и выберите запись. Oleafly пишет `@key`. Если в документе ещё нет вызова `#bibliography`, Oleafly добавит его. **Найти и добавить новую цитату…** внизу списка открывает поиск нового источника. См. [Добавьте цитирования](#add-citations).

### Вставить перекрёстную ссылку

Выберите метку из списка проекта, чтобы написать `@label`. В примере выберите `method`, чтобы получить `@method`. **Добавить метку здесь** вместо этого ставит новую метку на элемент у курсора.

### Добавить метку

Поставьте курсор в заголовок, рисунок или формулу и выберите **Добавить метку**. На заголовке Results в примере Oleafly добавляет `<sec:results>`. Если у элемента уже есть метка, кнопка выделяет её.

### Вставить сноску

Поставьте курсор после слова. `#footnote[note text]`.

### Вставить цитату блоком

Поставьте курсор на новую строку. `#quote(block: true)[quote]`.

### Вставить рисунок

Открывает диалог рисунков. Выберите изображение из **Изображения проекта** или пункт **Импортировать с диска…**, затем задайте ширину, подпись, метку, альтернативный текст и размещение. Когда курсор находится внутри существующего `#figure`, та же кнопка открывает **Изменить рисунок**, где можно поменять любой из этих параметров. См. [Добавьте рисунок с подписью](#add-a-captioned-figure).

### Вставить таблицу

Откройте сетку и выберите число строк и столбцов. Oleafly вставляет `#figure` с таблицей `table` со строкой заголовка и линейками сверху, посередине и снизу, а также с `caption: [Caption]` и меткой `<tab:label>`. Замените подпись, метку и пустые ячейки. Чтобы вместо этого построить таблицу из электронной таблицы, см. [Таблицы из файлов данных](#tables-from-data-files).

### Вставить изображение

Импортируйте изображение, затем замените выбранное имя файла на его относительный путь. `#image("image-filename")`. Можно также вставить или перетащить файл изображения в редактор: Oleafly сохранит его в проект и вставит рисунок, который его использует.

### Нарисовать диаграмму

Открывает [конструктор диаграмм](/docs/figures-diagrams/) в режиме Typst. Нарисуйте на холсте или отредактируйте код fletcher, затем выберите **Вставить как Typst**, чтобы поместить диаграмму в позицию курсора. Первый предпросмотр скачивает пакет fletcher из Typst Universe, поэтому для него нужно быть онлайн.

### Изображение в Typst

Выберите снимок экрана с формулой или текстом, и он будет расшифрован в Typst в позиции курсора. Используется модель для инструментов, то есть локальная модель Ollama, если вы не выберете другую. Если вы ничего не выбрали, а Ollama не запущен или в нём нет модели, умеющей читать изображения, используется модель ассистента, и изображение уходит к этому провайдеру. Проверьте результат и скомпилируйте его.

### Список → Маркированный список

Начните список наблюдений. `- Item`.

### Список → Нумерованный список

Начните последовательность шагов. `+ Item`.

### Формула

Выделите `x` и щёлкните значок формулы. `$x$`.

### Выключная формула

Формула в отдельной строке. `$ x $`, с пробелом внутри каждого `$`.

### Нумерованная формула

Выключная формула с меткой, например `$ x $ <eq:label>`. Typst нумерует формулы, только когда в документе есть правило нумерации. Если его нет, заметка предложит **Добавить правило**, которое добавляет `#set math.equation(numbering: "(1)")` ближе к началу файла.

### Выровненные формулы

Несколько формул, выровненных по `&`, с `\` между строками. `$ a &= b \ c &= d $`.

### Дробь

Вставляет `frac(a, b)`, обёрнутое в `$`, если курсор ещё не находится в математической записи. При выделенном тексте выделение становится числителем.

### Символы

Откройте палитру символов, найдите символ и выберите его. Oleafly вставляет символ под его именем в Typst: `arrow.r` внутри математики или `#sym.arrow.r` в обычном тексте.

### Блок кода

Выделите несколько строк кода или замените заполнитель. Блок, окружённый тройными обратными кавычками. Добавьте язык после открывающих кавычек для подсветки синтаксиса.

### Анализ кода → Перейти к определению

Поставьте курсор на метку, переменную или функцию и выберите действие либо нажмите F12. Открывает место определения, даже в другом файле.

### Анализ кода → Найти ссылки

Перечисляет все места, где используется метка, переменная или функция. ⇧F12.

### Анализ кода → Переименовать символ

Переименовывает метку, переменную или функцию по всему проекту. F2. [Анализ кода](/docs/code-intelligence/#typst-files) описывает все три инструмента.

### Пакеты Typst

Значок пакета в правом конце панели ищет в Typst Universe и вставляет строку `#import`. Подробнее — в разделе [Пакеты, настройки и сведения](#packages-settings-and-insights).

### Сведения о документе

Перечисляет заголовки, рисунки, таблицы, формулы, метки, цитирования и заметки TODO документа, каждое со ссылкой на свою строку. См. [Сведения о документе](/docs/document-insights/).

### Настройки документа

Меняет размер страницы, поля, шрифт, язык, выравнивание, межстрочный интервал и нумерацию, редактируя правила `#set` документа. См. [Настройки документа](/docs/document-settings/).

### Сведения о проекте

Показывает количество слов, рисунков и формул в документе и в любом выделении, а также результаты вычитки.

### Найти

Поиск слова в активном файле. ⌘F / Ctrl+F.

### Перейти к PDF

Переходит от курсора к соответствующему месту в скомпилированном PDF. Кнопка появляется в Typst 0.13 и новее. См. [Переход между исходником и PDF](#jump-between-the-source-and-the-pdf).

## Визуальный режим

Переключите на панели инструментов режим **Код** на режим **Визуально** в любом файле `.typ`. Визуальный режим — это тот же редактор, в котором разметка нарисована на месте:

- заголовки, полужирный и выделенный текст, код, ссылки и цветной текст
- маркированные, нумерованные списки и списки терминов со своими маркерами
- строчные и выключные формулы, нарисованные Typst
- изображения и рисунки с подписью в виде обычного текста
- таблицы как сетку, в которую можно вводить текст. Выделите ячейку — и появится небольшая панель для границ, выравнивания, строк и столбцов.
- ссылки и цитирования в виде плашек, а сноски в виде небольшого маркера

Поставьте курсор на строку — и её исходник вернётся, чтобы его можно было отредактировать. Уведите курсор — и вернётся отрисованный вид. Строки `#set`, `#show`, `#import` и `#let` вверху файла сворачиваются в панель **Показать настройки документа**, которую можно щёлкнуть, чтобы открыть их. Всё, что визуальный режим не может нарисовать, остаётся на экране в виде исходника. Каждая кнопка панели инструментов пишет один и тот же Typst в обоих режимах, а номера строк, поиск, орфография и ошибки компиляции продолжают работать.

Новые проекты открываются в режиме «Код», и каждый проект запоминает режим, в котором вы его оставили. [Визуальное редактирование](/docs/editor/#visual-editing) описывает этот переключатель для всех трёх языков.

## Помощь во время набора

У файлов Typst есть те же помощники, что и у файлов LaTeX, написанные под синтаксис Typst:

- Щёлкните по стрелке в полосе слева от номеров строк, чтобы свернуть заголовок до следующего заголовка того же уровня. Блоки кода, блоки содержимого, формулы и длинные списки аргументов тоже сворачиваются. См. [Свёртывание кода](/docs/editor/#code-folding).
- При прокрутке заголовки над курсором остаются закреплёнными вверху редактора. Строка хлебных крошек над файлом называет раздел, в котором вы находитесь, а щелчок по крошке переходит к тому заголовку.
- Ввод `$` добавляет закрывающий `$`, а пробел внутри пустой пары превращает её в выключную формулу. В элементе списка Enter начинает следующий элемент. Остальное перечислено в разделе [Помощники набора в Typst](/docs/editor/#typst-typing-aids).
- Сервер языка Typst дополняет функции, пути к файлам, метки, ключи цитирований, пакеты и стили библиографии. См. [Автодополнение Typst](/docs/autocomplete/#typst-completion).
- Введите `/` в начале строки или после пробела, чтобы открыть фрагменты: заголовки, рисунки, таблицы, формулы, сноски, оглавление, библиографию и другое.
- ⌘/ / Ctrl+/ закомментирует или раскомментирует выделенные строки с помощью `//`.

### Просмотр формул

Когда курсор находится внутри формулы, Typst рисует результат прямо над ней. Меню предпросмотра может скрыть его, пока вы не покинете формулу, или выключить его совсем.

Вставьте математику LaTeX, например `$\frac{a}{b}$`, в файл Typst — и под ней появится кнопка **Вставить как формулу Typst**. Щёлкните её, чтобы заменить вставленное на формулу Typst, или нажмите Esc, чтобы оставить LaTeX. Для математики LaTeX, уже находящейся в файле, выделите её и выберите **Преобразовать формулу LaTeX в Typst** в контекстном меню. Для разовых преобразований инструмент [Из формулы в Typst](/docs/tools/equation-to-typst/) делает то же самое вне проекта.

## Добавьте рисунок с подписью

1. Выберите **Вставить рисунок** на панели инструментов.
2. Найдите `plot.png` в разделе **Изображения проекта** или выберите **Импортировать с диска…**, чтобы скопировать его в проект.
3. Выберите **Три четверти ширины**, затем включите **Добавить подпись** и **Добавить метку**. Введите подпись и метку `fig:measurements`.
4. Добавьте **Альтернативный текст**, описывающий изображение для программ чтения с экрана, и выберите **Размещение**, если рисунок должен перемещаться к верху или низу страницы.
5. Выберите **Вставить рисунок**.

Oleafly записывает рисунок наподобие этого:

```typst
#figure(
  image("figures/plot.png", width: 75%),
  caption: [Measurements across three runs.],
) <fig:measurements>

See @fig:measurements for the comparison.
```

Чтобы позже изменить рисунок, поставьте курсор внутри него и снова выберите **Вставить рисунок**. Диалог откроется как **Изменить рисунок** с текущими значениями.

## Таблицы из файлов данных

Щёлкните в редакторе правой кнопкой мыши и выберите **Таблица из CSV или XLSX…**. Выберите файл CSV, TSV, Excel или JSON, проверьте предпросмотр и при желании добавьте подпись и метку. **Вставить у курсора** пишет таблицу Typst с теми же линейками, что у таблицы с панели инструментов. Текст ячеек, который Typst принял бы за разметку, экранируется.

Включите **Сохранять связь с файлом данных**, чтобы таблица оставалась привязанной к своим данным. Oleafly копирует данные в папку `data` проекта, и таблица читает этот файл при каждой компиляции документа. Измените файл — и таблица изменится при следующей компиляции. [Импортировать таблицу из файла данных](/docs/writing/tables-equations/#import-a-table-from-a-data-file) описывает диалог полностью.

## Добавьте цитирования

Цитируйте с помощью **Сослаться из проекта** или введите `@` и выберите ключ из списка автодополнения. Ключ цитирования и метка документа в Typst оба используют `@`; цель задаёт библиография или сама метка.

Поставьте библиографию туда, где должен появиться список литературы:

```typst
#bibliography("references.bib")
```

Файлом может быть BibTeX (`.bib`) или Hayagriva (`.yml`), и вызов может называть список файлов. Цитирование, добавленное из раздела [Цитирование и библиография](/docs/citations/), попадает в файл, объявленный документом, и преобразуется в Hayagriva, когда этому файлу это нужно. Чтобы изменить стиль ссылок, используйте меню **Стиль цитирования** внизу панели «Источники», которое пишет аргумент `style:` за вас. См. [Выбор стиля цитирования в Typst](/docs/citations/#choose-a-typst-citation-style).

## Пакеты, настройки и сведения

Три кнопки в правом конце панели инструментов работают со всем документом:

- **Пакеты Typst** ищет в Typst Universe и пишет строку `#import`. Когда импорт называет более старый выпуск, редактор предлагает его обновить. Проект может также хранить собственные копии своих пакетов, чтобы компилироваться офлайн. См. [Пакеты](/docs/packages/#typst-packages) и [Пакеты из Typst Universe](/docs/typst/#packages-from-typst-universe).
- **Сведения о документе** перечисляют заголовки, рисунки, таблицы, формулы, метки, цитирования и заметки TODO и копируют название, авторов, ключевые слова и аннотацию для формы подачи. Typst читает документ при открытии диалога, поэтому номера и страницы актуальны. См. [Сведения о документе](/docs/document-insights/).
- **Настройки документа** меняют размер страницы, поля, число колонок, основной шрифт, размер, язык, выравнивание, межстрочный интервал и нумерацию заголовков и формул. Oleafly записывает ваш выбор в правила `#set` главного файла. Здесь же находятся варианты сборки проекта. См. [Настройки документа](/docs/document-settings/).

## Ошибки и проверки

Когда компиляция завершается с ошибкой, каждая ошибка подчёркивается в своём файле, ровно над диапазоном, о котором сообщает Typst. Наведите курсор на подчёркивание, чтобы прочитать сообщение и подсказки Typst. Распространённые ошибки — неизвестное имя, отсутствующий файл или пакет, незакрытая скобка — сопровождаются простым объяснением. См. [Ошибки компиляции в исходнике](/docs/editor/#compile-errors-in-the-source).

[Орфография и грамматика](/docs/spellcheck-grammar/) проверяют текст в файлах Typst, включая подписи, ячейки таблиц и поля шаблонов вроде `abstract:`, и пропускают код. [Предпроверка](/docs/preflight/#typst-projects) проверяет исходники Typst на неразрешённые ссылки и цитирования, отсутствующий альтернативный текст, отсутствующие изображения, метаданные документа и проблемы слепого рецензирования.

## Переход между исходником и PDF

Выберите **Перейти к PDF** на панели инструментов или нажмите ⌘⇧J / Ctrl+Shift+J, чтобы перейти от курсора к странице. В PDF удерживайте ⌘ или Ctrl и щёлкните по слову, чтобы вернуться к его строке, даже в файле, подключённом через `#include`. Для синхронизации нужен Typst 0.13 или новее. См. [Синхронизация исходника и PDF](/docs/synctex/#typst-projects).

## Форматирование файла

**Форматировать документ** приводит в порядок весь файл с помощью typstyle. Нажмите ⇧⌥F / Shift+Alt+F или выберите команду в контекстном меню. **Форматировать выделенное** форматирует только выделенные строки. Чтобы форматировать при каждом нажатии ⌘S / Ctrl+S, включите **Форматировать при сохранении** в разделе **Typst** в **Настройки → Внешний вид → Редактор**. См. [Форматирование файла Typst](/docs/code-intelligence/#format-a-typst-file).

## Версии Typst

Oleafly поставляется с Typst 0.15.1, а **Настройки → Движки → Typst** перечисляет Typst от 0.11 до 0.15 для загрузки. Новый проект закрепляет версию по умолчанию, поэтому его переносы строк и число страниц не меняются, когда Oleafly позже поставляет более новый Typst. Чтобы изменить версию одного проекта, откройте стрелку рядом с **Скомпилировать заново** и выберите нужную в пункте **Версия Typst (этот проект)**. Сервер языка следует за версией проекта. [Версии Typst](/docs/typst/#typst-versions) объясняет закрепление версий, отсутствующие версии и то, как проверить более новый выпуск перед переходом.

## Организация и экспорт

Разбейте длинный отчёт на файлы и подключайте их командой `#include "sections/method.typ"`. Держите рисунки, данные, шрифты и файлы библиографии внутри проекта, чтобы ZIP с исходником включал всё, что нужно документу.

Скомпилируйте, чтобы проверить результат, затем откройте **Экспорт**. Он предлагает **Экспорт в PDF**, **Экспорт исходников (.zip)**, **Экспорт страницы в PNG** и **Изображения и HTML**, который пишет страницы PNG или SVG либо файл HTML силами самого Typst. В Typst 0.13 и новее экспорт в Word, HTML, Markdown, LaTeX и обычный текст идёт через собственный вывод HTML Typst, поэтому формулы и ссылки сохраняются. См. [Экспорт и конвертация проекта](/docs/export/#typst-images-and-html). [Компиляция](/docs/compiling/) объясняет журналы и параметры компиляции, а [файлы и папки](/docs/files/) — организацию проекта.

Чтобы перенести существующий проект LaTeX в Typst, см. [Конвертируйте проект LaTeX в Typst](/docs/typst/#convert-a-latex-project-to-typst).
