Преобразование документов LATEX в формат Word/OpenOffice.org с использованием Hevea
LVEE Winter 2013
Издательская система LATEX весьма удобна для подготовки научных статей и достаточно популярна в настоящее время. Однако редакции многих журналов требуют представлять статьи в формате «Word for Windows», поэтому часто возникает необходимость иметь один и тот же документ в разных форматах. Предлагается автоматизированный инструмент для быстрой конвертации формата LATEX→ OOo (git://github.com/illinc/h2o.git).
В 1 проведён обзор существующих средств конвертации. В этой статье рассматривается использование транслятора Hevea 2, редактора sed и макросов OOo Basic для преобразования LATEX→ html → OOo, а также создание документов, компилирующихся как в формат PDF, так и (через html) в формат OOo. Несмотря на множество недостатков связки Hevea + sed + OOo Basic, с её помощью нам удалось реализовать комплекс, требующий минимальной ручной доводки полученного документа.
Комплекс разбит на три компонента:
- Заголовочный файл h2o.tex, содержащий комплекс макросов, используемых в коде LATEX.
- Скрипт mkh2o, содержащий команды трансляции LATEX→ html, а также исправление «на лету» промежуточных файлов и результирующего html.
- Расширение OpenOffice.org h2o.oxt, написанное на OOo Basic и содержащее макросы для окончательной доводки документа.
Подготовка исходного кода LATEX
Для того, чтобы документ мог быть собран как компиляторами latex, pdflatex, так и компилятором Hevea, в его преамбулу и исходный код необходимо внести некоторые дополнения.
Различный код для различных компиляторов в такой связке может быть реализован командами условной компиляции Hevea.
Блок, окружённый комментариями %BEGIN LATEX…%END LATEX, игнорируется Hevea. Строка комментария, начинающаяся с %HEVEA, выполняется Hevea, но воспринимается любым другим компилятором как комментарий.
Используя такое свойство этих комментариев, можно создать файл, который можно будет обрабатывать любым из вышеперечисленных компиляторов. Все необходимые для этого команды в кодировке utf8, кроме непосредственно выбора кодировки, помещаются для удобства использования в файл h2o.tex. Тогда этот заголовок можно будет просто вставлять в любой обрабатываемый файл с помощью команды \input{h2o}.
Кодировка
Популярная кодировка utf8x не поддерживается Hevea, поэтому для компиляции в html необходимо указать кодировку utf8:
%BEGIN LATEX
\usepackage[utf8x]{inputenc}
%END LATEX
%HEVEA \usepackage[utf8]{inputenc}
Однобайтовые кодировки воспринимаются компилятором Hevea нормально, но символы, отсутствующие в таблице кодировки (например, греческие буквы из формул), выглядят неадекватно и должны преобразовываться в картинки.
Рисунки и формулы
Рисунки результирующего html-документа генерируются из страниц создаваемого Hevea файла <имя документа>.image.tex.
Рисунки, включаемые командой \includegraphics, помещаются в этот файл автоматически (с растеризацией векторных рисунков и сменой разрешения растровых).
Рисунки, выполненные в системе TikZ/PGF, формулы, которые должны быть преобразованы в рисунки, и т. п. необходимо поместить в окружение toimage. Для перехода на следующую страницу используется команда \imageflush.
Выключные пронумерованные формулы нежелательно помещать в окружение toimage целиком, так как при этом сбивается нумерация и невозможны ссылки на данную формулу. Решением может быть помещение внутрь окружения equation окружения, определённого в файле h2o.tex следующим образом:
\newenvironment{htooeqtoimage}{%
HEVEA \begin{toimage}\begin{equation*}
}{
%HEVEA \end{equation*}\end{toimage}\imageflush
}
не включая в него метку формулы, т. е.:
\begin{equation}
\label{eq:<метка формулы>}
\begin{htooeqtoimage}
<формула>
\end{htooeqtoimage}
\end{equation}
Сборка
Команда hevea <имя документа> формирует html-файл, файл рисунков <имя документа>.image.tex и вспомогательные файлы.
Файлы библиографии формируются утилитой bibtex, но для использования их компилятором Hevea они дорабатываются редактором sed.
После окончательного формирования html-файла многократным запуском hevea происходит корректировка лигатур с помощью sed (всё это выполняет написанный нами скрипт сборки mkh2o, вмешательства пользователя не требуется).
Рисунки
Рисунки результирующего html-документа генерируются утилитой imagen из страниц создаваемого Hevea файла рисунков <имя документа>.image.tex.
Некоторые команды преамбулы не помещаются в файл <имя документа>.image.tex автоматически, поэтому перед запуском imagen преамбула дополняется с помощью sed, echo и других стандартных утилит.
Обработка полученного текста в OpenOffice.org
Для преобразования полученного html-файла в формат OOo нами написано расширение h2o.oxt, содержащее код для внедрения в текст и масштабирования рисунков, сносок, размещения текста на странице и других элементов форматирования, отсутствующих в html.
Последовательность обработки
- Преамбула исходного документа LATEX дополняется заголовком h2o и выбором кодировки utf8 для Hevea, в тело документа внедряются окружения toimage и htooeqtoimage и, при необходимости, команды двойной компиляции. В каталог документа помещаются файлы h2o.tex и mkh2o.
- Для сборки документа запускается скрипт mkh2o.
- Текст полученного html-файла переносится в OOo и запускается головной макрос расширения h2o.oxt — h2oMain.
Литература
1 Конник М. Перевод документов из LaTeX в Word / OpenOffice. http://mydebianblog.blogspot.ru/2007/01/latex-word-openoffice.html. 2007.
2 The HEVEA Home page. http://hevea.inria.fr/. 2013.
Abstract licensed under Creative Commons Attribution-ShareAlike 3.0 license
Назад