![](https://habrastorage.org/getpro/habr/upload_files/53d/87c/913/53d87c913e0245ca2a75d951a7d01355.jpg)
Привет, Хабр! Недавно мы обновили МойОфис до версии 2021.02. Одним из важных улучшений стала возможность добавления формул в текстовом редакторе. Она может быть полезна всем, кто работает с текстами и хочет получить корректное отображение сложных математических выражений в документах, особенно при последующей печати.
Для работы с формулами мы применяем LaTeX. Эта система набора и вёрстки документов считается стандартом «де факто» в научной среде благодаря корректной работе даже с особо сложными математическими формулами. В его основе лежит TeX — язык разметки низкого уровня, созданный Д. Кнутом в 70-х годах прошлого века. В 1984 году Л. Лампорт выпустил пакет расширения (или макронадстройки) для TeX, который включал порядка 600 макрокоманд. На сегодняшний день для LaTeX доступно большое количество различных пакетов-дополнений, позволяющих эффективно работать с разнообразными данными, такими как формулы, графика, ноты и другие. Потенциальные возможности системы не ограничены.
Работа с формулами при использовании LaTeX заметно отличается от привычного многим визуального редактора. Тем не менее, даже в Microsoft Word 2019 реализована возможность ввода формул в формате LaTeX, да и в файлах документов формулы хранятся именно в таком виде.
После изучения основ и базовых тегов языка, ввод и последующее редактирование формул становится простым и понятным процессом. А результат всегда будет выглядеть качественно.
Как вводить формулы
Сейчас мы продемонстрируем, как работать с формулами в МойОфис Текст. В меню "Вставка" необходимо выбрать раздел "Формула" с символом π в кружке.
![](https://habrastorage.org/getpro/habr/upload_files/7da/2e1/078/7da2e1078901cb7887413c89c34c8b0d.png)
По нажатию появляется окно с двумя полями: "Выражение LaTeX" и "Предварительный просмотр".
![](https://habrastorage.org/getpro/habr/upload_files/28a/df8/912/28adf891296f3b6c7e94ef17d47ea7e4.png)
Попробуем ввести какую-нибудь формулу. Большинство математических функций и символов, а также скобки, матрицы и системы уравнений в синтаксисе LaTeX обозначаются тегами, начинающимися с символа \. Например, возьмём классический определённый интеграл функции f(x) на интервале [a, b]. В результате, формула будет выглядеть следующим образом:
\int_a^b f(x) dx
В данном случае a и b являются параметрами тега \int. После вставки формулы в поле предпросмотра мы видим результат.
![](https://habrastorage.org/getpro/habr/upload_files/690/d47/876/690d47876f0f3741f3ba614538927333.png)
Остаётся только нажать "ОК", и готовая формула появляется в указанном месте тестового документа. Работать с формулой можно так же, как и с любым другим объектом: после выделения её можно выровнять по центру, по правой или левой стороне, а также изменить размеры, потянув за одну из четырёх ключевых точек по углам объекта.
![](https://habrastorage.org/getpro/habr/upload_files/98c/31c/d2b/98c31cd2bc7b8729fa62de6d93f493c4.png)
Также при выделении формулы на панели инструментов появляется блок кнопок "Формула" для изменения или удаления объекта. Удалить формулу можно и привычным способом, выделив её и нажав клавиши Backspace или Del — аналогично удалению других объектов.
Теперь давайте добавим более сложные формулы, чтобы продемонстрировать возможности текстового редактора "МойОфис Текст". Например, используем некую абстрактную функцию с четырьмя переменными. Буквы греческого языка и лемниската, символ бесконечности, также вводятся в виде тегов.
f(a,b,\delta, \gamma) = \frac{\sum \limits_{n=0}^{\infty} S_n \tan \left( \frac{104-2\delta \pi}{\mu} \right)+\gamma} {\mathcal{F} {g(a,b)} }
На этом примере уже хорошо прослеживается чёткость структуры. Разобьём формулу по строкам для большей наглядности:
f(a,b,\delta, \gamma) =
\frac{
\sum \limits_{n=0}^{\infty} S_n \tan \left( \frac{104-2\delta \pi}{\mu} \right)+\gamma
}
{
\mathcal{F} {g(a,b)}
}
В результате ввода получаем следующее выражение:
![](https://habrastorage.org/getpro/habr/upload_files/a66/a7a/252/a66a7a252295a9973f6f9977f499f1ec.png)
Видим, что всё отображается хорошо и корректно.
Теперь попробуем добавить ошибку в формулу и посмотрим, как поведет себя редактор. Например, добавим лишний пробел в слове delta (верхняя зеленая стрелка на скриншоте ниже).
Видим, что при наличии ошибки синтаксиса в формуле, в окне результата место с ошибкой будет выделено красным (нижняя зеленая стрелка). Удобно.
Редактор формул поможет найти ошибки, однако всегда стоит дополнительно контролировать результат, так как нередко разделённое случайным пробелом имя функции может случайно совпасть с именем совершенно иной функции, также существующим в LaTeX.
![](https://habrastorage.org/getpro/habr/upload_files/141/fa8/584/141fa858427825119bb3cefdf2aee32b.png)
Если у вас есть длинное выражение, которое занимает более одной строки, стоит использовать разделитель \\. Так, к примеру, для записи такого равенства
1+2+3+4+5+6+7+8+ ... +97+98+99+100+101+102+103+...+146+147+148+149+150 = 11325
потребуется в редакторе формул ввести следующее выражение, в котором горизонтальное многоточие обозначено тегом \dots:
1+2+3+4+5+6+7+8+ \dots + \\ +97+98+99+100+101+102+103+ \dots + \\ +146+147+148+149+150 = 11325
В результате получаются аккуратно перенесённые строки.
![](https://habrastorage.org/getpro/habr/upload_files/538/a2e/2fe/538a2e2fe84f12faac66578125b76433.png)
Еще с помощью LaTeX удобно записывать матрицы и другие сложные выражения в несколько строк. Давайте для начала введём некую матрицу "А" произвольного размера с количеством столбцов и рядов, равным n. Для этого используем такой код:
A = \left(
\begin{array}{cccc}
a_{11} & a_{12} & \ldots & a_{1n}\\
a_{21} & a_{22} & \ldots & a_{2n}\\
\vdots & \vdots & \ddots & \vdots\\
a_{n1} & a_{n2} & \ldots & a_{nn}
\end{array}
\right)
К слову, в этом коде присутствуют уже три варианта многоточия: горизонтальное, обозначенное \ldots, вертикальное \vdots и диагональное \ddots. Даже сама структура тегов языка LaTeX понятна и логична, что порой позволяет интуитивно догадаться о смысле и различиях родственных элементов. В результате ввода получаем следующее:
![](https://habrastorage.org/getpro/habr/upload_files/966/23e/cfa/96623ecfa0c862784f519211d68770aa.png)
Также можно объединять различное количество выражений в систему или использовать структуру для наглядного представления вариантов выбора с последствиями. В качестве примера возьмём систему из трёх уравнений с тригонометрическими функциями.
\begin{cases}
x &= \cos \alpha +2 \sqrt[3]{\cos 2 \alpha+3} + \cos \alpha + 4\\
y &=2 \sin \alpha +3 \sqrt[4]{\sin \alpha - 1} + \sin \alpha \\
z &= 5 \sin \alpha + 4 \cos 2 \alpha
\end{cases}
Количество элементов-строк может быть произвольным, а отделяются они так же, как и обычные строки — с помощью \\. В результате получается такая конструкция:
![](https://habrastorage.org/getpro/habr/upload_files/0b5/3bc/2b3/0b53bc2b3a3a0db599ec166270f8af52.png)
Сравним как формулы отображаются в других редакторах
Теперь проверим, как документ с формулами, созданный в МойОфис, открывается и читается в других популярных текстовых редакторах. Для чистоты эксперимента используем сразу несколько формул из приведённых выше. Тестовый документ выглядит так:
![](https://habrastorage.org/getpro/habr/upload_files/728/93a/b03/72893ab03fd7b130e7c967b4233e68c3.png)
Сохраним его в двух форматах — ODT и DOCX. После чего откроем его в LibreOffice и Microsoft Word 2019 и сравним полученное с исходным.
Как формулы из МойОфис отображаются в LibreOffice
В LibreOffice файл .odt прочитался нормально за исключением некоторых деталей. Так, во второй формуле не отобразился каллиграфический шрифт для обозначения "F", вместо него добавился лишний оператор в знаменателе. В третьей формуле исчезла скобка и добавились красные перевёрнутые знаки вопроса в системе выражений, а также возникла проблема с диагональными точками в матрице.
![](https://habrastorage.org/getpro/habr/upload_files/967/ae2/f05/967ae2f0521aaf9cc082b369350ca95d.png)
При открытии файла .docx в первой формуле дополнительно появилось пустое поле между символом интеграла и функцией. Ещё одно отличие между двумя форматами — выравнивание: .odt выровнен по левому краю, а .docx — по центру.
![](https://habrastorage.org/getpro/habr/upload_files/6a2/d2e/794/6a2d2e794b2a45852f89c2948117ffae.png)
Как формулы из МойОфис отображаются в Microsoft Office
Откроем те же документы в Microsoft Word 2019. В формате .odt формулы читаются, но снова проявилось пустое поле между интегралом и функцией. Также иначе отображаются пределы суммы, есть ошибка в отображении функции в знаменателе второй формулы, отсутствует скобка в системе выражений, а их форматирование внутри формулы сделано по центру.
![](https://habrastorage.org/getpro/habr/upload_files/87a/a5d/654/87aa5d6546203767c31abf573cacb609.png)
В файле .docx ситуация аналогична, только все формулы выровнены по центру.
![](https://habrastorage.org/getpro/habr/upload_files/ece/c79/4ec/ecec794ec34331326bbc7e144b40bc96.png)
Как формулы из Microsoft Office отображаются в МойОфис
Многим пользователям важно и то, насколько успешно МойОфис открывает файлы c формулами, созданными в других редакторах. Для проверки этого создадим два документа в форматах .docx и .odt c полностью аналогичным набором выражений, используя для этого встроенные системы редактирования формул.
Начнём с Microsoft Office. Все формулы, которые мы создали во встроенном WYSIWYG-редакторе Word, без проблем открылись в МойОфис. Корректно отобразились все элементы, включая внутреннее форматирование (да, система из трёх уравнений и там расположена по центру). Разницы между форматами .docx и .odt не выявлено.
![](https://habrastorage.org/getpro/habr/upload_files/b8a/d9b/a86/b8ad9ba86002278f6cd470741adcd3f7.png)
Как формулы из LibreOffice отображаются в МойОфис
А вот у файлов, созданных в LibreOffice, возникла небольшая проблема с изменением размера формул: при открытии в МойОфис все элементы оказались сжатыми по горизонтали. Самый очевидный момент — большая фигурная скобка в системе уравнений отобразилась в виде скобки обычного размера и к тому же располагается выше центра. Таким образом некоторые формулы после открытия в МойОфис, возможно, придётся подкорректировать. Но не более того.
![](https://habrastorage.org/getpro/habr/upload_files/207/1a4/362/2071a43623f61457c714e6fec28939ef.png)
Заключение
В статье мы продемонстрировали лишь малую часть возможностей LaTeX для отображения формул в текстовом редакторе "МойОфис Текст". Если вы захотите изучить систему верстки подробнее, то легко сможете найти инструкции и описания всех тегов в сети.
Наше исследование показало, что при работе с формулами в разных редакторах возможно возникновение небольших погрешностей при отображении математических выражений. В целом, "МойОфис Текст" корректно обрабатывает синтаксис LaTeX, благодаря чему вы можете писать формулы в полном соответствии с требованиями к оформлению инженерной документации. Пользователям доступна полноценная работа как с простыми функциями, так и сложными конструкциями из многих элементов, вы можете в реальном времени контролировать вид будущего выражения в окне предпросмотра и при необходимости сразу вносить изменения в код формулы. При этом критические ошибки в синтаксисе сразу будут заметны благодаря цветовому выделению.
Делитесь в комментариях впечатлениями о работе с формулами в "МойОфис Текст": нашей команде важны ваши пожелания, предложения и замечания!