Совмещаем Libre Office и LaTeX

от автора

Предисловие

При написании инженерной документации и научных публикаций обычно используют либо офисные пакеты (MS Office, Open Office, Libre Office), либо различные реализации издательской системы TeX (LaTeX).

Первый вариант — простой и наглядный, позволяет очень быстро разрабатывать документы и имеет минимальный порог вхождения, но имеет сильно ограниченные иллюстративные возможности. Так же часто приходится выбирать именно его потому, что заказчик или публикатор требует предоставления документов строго в формате .doc или .docx. Второй вариант обладает непревзойдёнными возможностями форматирования и иллюстрирования документа, но требует много знаний, внимательности и трудозатрат.

Например, я работаю проектировщиком систем автоматического управления и телемеханики и мне постоянно надо быстро писать технические задания и пояснительные записки (быстро потому, что за них не платят и в сроки исполнения проекта времязатраты на них заказчики обычно не включают) и выдавать их обычно надо в формате .doc (так как мои заказчики — архитекторы, — потом вставляют мои тексты в свои общие техзадания и пояснительные записки). Поэтому я использую Libre Office. Но в создаваемые документы мне часто надо вставлять функциональные и электрические схемы, а рисовать их в Libre Office Draw крайне неудобно, а разрабатывать их, например, в KiCAD, экспортировать в графику и вставлять в документ — очень долго.

В то же время в системе LaTeX имеется замечательный графический пакет Pgf/TikZ, который внутри себя имеет и библиотеки для отрисовки электрических, логических и сетевых схем. Давно хотелось как то соединить возможности Libre Office и LaTeX… и решение было найдено!

А ларчик просто открывался

Несмотря на то, что в состав пакета Libre Office входит замечательная программа для ввода математических формул Math, среди расширений обнаружилось и такое: TexMaths И хотя формально оно предназначено для вставки в документ математических формул, набранных в формате LaTeX, внимательное его изучение показало, что это расширение способно на гораздо большее.

При вводе формулы мы видим вот такой интерфейс:

Основное окно TexMaths

Основное окно TexMaths

Если нажать на кнопку «Preamble…«, то становится очевидным, что каждую формулу TexMaths вводит как полноценный документ в формате LaTeX, но в преамбулу его по умолчанию включает только математические пакеты:

Преамбула формулы TexMaths

Преамбула формулы TexMaths

Но, может быть, можно включать и другие пакеты LaTeX? Можно! Более того, подозреваю, что именно для этого преамбула и сделана редактируемой — хотя в документации к расширению об этом и не говорится.

Итак, добавляем в преамбулу пакет Pgf/TikZ и библиотеки TikZ circuits ee IEC и TikZ circuits logic IEC c европейскими условными графическими обозначениями электрических элементов:

Добавление пакета PGF/TikZ в преамбулу LaTeX

Добавление пакета PGF/TikZ в преамбулу LaTeX

Нажимаем «Save Local» для сохранения новой преамбулы в документе (вместо этого можно нажать «Apply» для применения изменений только к текущему рисунку или «Save Global» для сохранения такой преамбулы и для других документов) и можем рисовать электрическую схему:

Код электрической схемы на LaTeX Pgf/TikZ

Код электрической схемы на LaTeX Pgf/TikZ

Обратите внимание на выделенное желтым цветом — что бы библиотека Pgf/TikZ заработала в TexMaths, её необходимо не только загрузить в преамбуле, но и указать в заголовке окружения

Короткие команды LaTeX вида \tikz\draw (0, 0) to [diode={info={D_1}}] (3, 0) to [resistor={info={R_1}, info'={50\mu\Omega}}] (3, 2); в TexMaths не работают

В результате получим вот такую красивую схему:

Результат выполнения кода в документе Writer

Результат выполнения кода в документе Writer

Аналогично работают и другие окружения LaTeX, например, можно схему поместить в окружение Figure и с помощью команды \caption{} присвоить ей номер и подпись, а с помощью окружения Center разместить схему по центру рисунка:

Использование других окружений LaTeX

Использование других окружений LaTeX
Результат использования окружений Figure и Center

Результат использования окружений Figure и Center

Ну и, конечно, можно использовать все остальные графические и «программистские» возможности мощнейшего пакета Pgf/TikZ и PgfPlot, вставляя в документ Writer красивые схемы и иллюстрации полиграфического качества.

Подводные камни

Ну как же без них 😉

Каждый рисунок TexMaths оформляет как отдельный документ LaTeX — со своими преамбулой и окружением Document, соответственно, при этом сбрасываются все счётчики и все рисунки получают номер 1. Автоматического решения этой проблемы я (пока?) не нашёл и решаю ее «в лоб» — ведя нумерацию рисунков в ручную и вставляя перед командами \caption{} команды явной установки значения счётчика рисунков 🙁

TexMaths вставляет в документ откомпилированный рисунок в виде изображения в формате .svg или .png — поэтому изменить полученный рисунок просто «щёлкнув» по нему, увы, не получится. Редактировать его потом в векторных редакторах, конечно, возможно, но это как-то не комильфо… Однако, решение есть (хотя и не очень изящное — скорее выглядящее как «костыль»). TexMaths все же сохраняет в документе не только преамбулу, но и LaTeX-коды всех рисунков и к ним можно «откатиться», нажимая в окне TexMaths кнопку «<<«. Найдя нужный код, его можно отредактировать и вставить заново вместо неправильного рисунка.

Однако, следует помнить, что сохранение LaTeX-кода работает только в формате .odt — если надо сохранить документ в формате MS Word, то рисунки в нём сохранятся, но вернуться к их редактированию уже не получится. Поэтому я, даже когда заказчик просит дать ему .doc, для себя вначале сохраняю документ в .odt, а потом делаю второй экземпляр в формате .doc для Заказчика.

Выводы

Оказывается, удобные офисные пакеты Open Office / Libre Office и мегакрутая издательская система LaTeX не конкуренты, а друзья — можно быстро и удобно набирать документ в WYSIWYG-редакторе Writer, вставляя в него расчёты с помощью расширения iMath, скрипты на VBA и Python, таблицы Calc, диаграммы Draw, а там, где это целесообразно, использовать LaTeX.


ссылка на оригинал статьи https://habr.com/ru/articles/918522/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *