Міжнародна конференція розробників
і користувачів вільного програмного забезпечення

Преобразование документов LATEX в формат Word/OpenOffice.org с использованием Hevea

Александра Кононова, Алексей Городилов, Москва, г. Зеленоград, Russia

LVEE Winter 2013

LATEX→ OpenDocument(ODF) or .doc conversion is a common problem. There are tools for such conversion, but the resulting document requires substantial manual adjustment. This article proposes set of scripts and macroses for automatisation of tedious work, that is needed to convert LATEX→ html and then → ODF or .doc using Hevea and subsequent adjustment.

Издательская система 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, с её помощью нам удалось реализовать комплекс, требующий минимальной ручной доводки полученного документа.

Комплекс разбит на три компонента:

  1. Заголовочный файл h2o.tex, содержащий комплекс макросов, используемых в коде LATEX.
  2. Скрипт mkh2o, содержащий команды трансляции LATEX→ html, а также исправление «на лету» промежуточных файлов и результирующего html.
  3. Расширение 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.

Последовательность обработки

  1. Преамбула исходного документа LATEX дополняется заголовком h2o и выбором кодировки utf8 для Hevea, в тело документа внедряются окружения toimage и htooeqtoimage и, при необходимости, команды двойной компиляции. В каталог документа помещаются файлы h2o.tex и mkh2o.
  2. Для сборки документа запускается скрипт mkh2o.
  3. Текст полученного 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

Назад