Решение: есть несколько свободных утилит, позволяющих это делать.
Введение
Обычно теме перевода научных документов из неправильных форматов в ЛаТеХ уделяют не так много внимания - дескать, кто вкусил ЛаТеХа и пользуется им, у того нет неправильных документов. Но что делать, если вы решили переходить к использованию ЛаТеХа и не хочется снова перенабирать формулы? Есть несколько утилит для перевода документов в ЛаТеХ, в том числе и открытых. Ниже приводятся примеры конвертации документа с формулами и рисунками:
OpenOffice.org -> SXW -> writer2latex + Java = LaTeX
Вот такая хитрая цепочка, дающая очень приличный результат. Да, скрипты writer2latex встроены в ОпенОфис, начиная с версии 2.0.4, но работают они там пока как-то странно. Посему проще всего просто скачать эти утилиты, распаковать в домашнем каталоге (чтобы не править конфиг внутри скрипта) и дать права на исполнение.
Реализация
Для конвертации нужна Java (у меня работает с java 1.4), которую можно установить из репозитория. После этого открываем вордовый документ, сохраняем его в формат SXW в каталог writer2latex04. Теперь осталось зайти в этот каталог и набрать:
~/writer2latex04$ ./w2l имя_документаНа что вам ответят:
This is Writer2LaTeX, Version 0.4 (2005-07-01)Всё, в каталоге появится такой же файл с расширением имя_документа.tex - его можно открыть, например, в Kile и скомпилировать.
Starting conversion...
Done!
Результат
Формулы набираются почти без нареканий, оформление передаётся прекрасно, и на рисунки вставляются ссылки. Проблему кодировок создатели этих скриптов обошли просто: кириллические символы набираются тэгами:
{\centering\selectlanguage{russian}\bfseriesВыглядит жутко, но при компиляции документа всё смотрится хорошо, что видно на рисунке:
{\textquotedbl}{\CYRC}{\cyri}{\cyrf}{\cyrr}{\cyro}{\cyrv}{\cyro}{\cyre}
{\cyrv}{\cyro}{\cyrs}{\cyrs}{\cyrt}{\cyra}{\cyrn}{\cyro}{\cyrv}{\cyrl}{\cyre}{\cyrn}{\cyri}{\cyre}
{\cyri}{\cyrz}{\cyro}{\cyrb}{\cyrr}{\cyra}{\cyrzh}{\cyre}{\cyrn}{\cyri}{\cyrishrt},
{\cyrz}{\cyra}{\cyrk}{\cyro}{\cyrd}{\cyri}{\cyrr}{\cyro}{\cyrv}{\cyra}{\cyrn}{\cyrn}{\cyrery}{\cyrh}
{\cyro}{\cyrp}{\cyrt}{\cyri}{\cyrch}{\cyre}{\cyrs}{\cyrk}{\cyri}{\cyrm}
{\cyrm}{\cyre}{\cyrt}{\cyro}{\cyrd}{\cyro}{\cyrm}{\textquotedbl}
\par}
В принципе, никто не мешает создать (или погуглить, наверняка кто-то уже написал) скрипт, который заменит тэги кириллицы на буквы в текущей кодировке. Во всяком случае, главное - формулы, сохранены и набраны очень хорошо.
Плюсы:
+ Прекрасный перевод формул, набранных в ЗлоВорде или ОпенОфисе в ЛаТеХ.
+ Отличное сохранение форматирования, таблиц, точных размеров (важно для титульных листов)
+ Одно из лучших свободных средств конвертирования в ЛаТеХ, наравне с лучшими проприетарными аналогами.
Минусы:
- Кириллица в тэгах, для редактирования текста придётся переконвертировать в текст текущей кодировки.
OpenOffice.org -> HTML -> gnuhtml2latex = LaTeX
Вариант проще и с несколько иной "заточкой", предназначенный прежде всего для перевода в ЛаТеХ форматированного текста. Утилита gnuhtml2latex входит в дистрибутив Дебиан и представляет собой перловый скрипт, который переводит форматирование HTML в ЛаТеХ 2е.
Реализация
Для работы этого скрипта Java не нужна, но нужен Perl - который должен быть в системе любого линуксоида. Скрипт имеет мало параметров
$ gnuhtml2latex имя_документаВ текущем каталоге появится теховский файл. Но качество перевода математических документов, конечно, ниже среднего: текст есть, не в тэгах, но формулы не набраны (даже рисунками), часть текста может быть в другой кодировке, код ужасен и требует напильника крупного калибра. Всё-таки, справедливости ради, скрипт писался не для того: прежде всего, целью программы был перевод форматированных документов в ЛаТеХ. С текстами типа блоггерских записей он справляется прекрасно, но математика, конечно, выше его сил.
Результат
Говоря кратко, для перевода математических документов gnuhtml2latex просто непригоден. Только форматированный текст, и то после этого код нуждается в напильнике.
Вот что осталось от математики: одни обломки.
Плюсы:
+ Хорошее сохранение форматирования, пригоден для текстов несложного оформления.
Минусы:
- Математические тексты не переводит, часть текста может запросто оказаться в другой кодировке.
- Выдаваемый код довольно жуткий, потребуется крупный напильник.
AbiWord -> LaTeX
Чуть не забыли старика-Абиворда, и очень зря. В былые годы это был чуть ли не единственный текстовый процессор, способный читать и конвертировать много форматов, в том числе ЗлоВорд. AbiWord имеет свои конвертеры для многих форматов, в том числе для злоВорда, ЛаТеХа и ОпенОфиса (в версии 2.2.7, что в Сарже) формата SXW. Так что при совсем безысходных случаях можно и АбиВорд использовать.
Реализация
Это графическое приложение, так что как тыкать по кнопкам, думаю, объяснять не надо. Просто открываем документ (SXW, HTML или даже вордовый), ищем в перечне типов файлов latex и сохраняем.
Результат
Мягко говоря, результат страшноват, но лучше того, что сделал с математикой gnuhtml2latex. AbiWord даже набрал греческие символы, но длинные формулы всё-таки запорол: во всяком случае, индексы он набирает отступами и точным позиционированием текста.
Результат не впечатляет, и по коду после этого придётся елозить напильником.
Плюсы:
+ Графическое приложение, кнопочки.
+ Вменяемо сохраняет форматирование и греческие буквы.
Минусы:
- Код страшен и "в лоб" не скомпилируется, требует применения напильника, паяльника и мощной кувалды.
catdoc -> LaTeX
Эта небольшая, но очень полезная утилита способна читать и декодировать форматы ЗлоВорда, вплоть до ЗлоВорда2000. Очень маленькая, но позволяет сохранять файл ворда либо в простом тексте, либо (с небольшими добавками) формат ЛаТеХ.
Реализация
После установки приложения apt-get install catdoc можно выполнять команду конвертации:
catdoc -t PredDiplomPractice.doc > PredDiplomPracticeCAT.texУтилита имеет несколько параметров, но всё-таки больше пригодна не для перевода в ЛаТеХ документов (так как математика в этом случае почти в полном объёме уходит лесом), а для включения в скрипты и анализа документов.
Результат
Только текст с некоторыми примесями тэгов ЛаТеХа. Почти нет форматирования, не говоря уже о формулах и рисунках. Только в крайнем случае при очень простых текстах.
Результат - только текст с небольшими вкраплениями формул.
Плюсы:
+ Маленькая и быстрая утилита.
Минусы:
- Всё остальное: нет формул, картинок, сносок и прочего. Только слегка отформатированный текст.
wv -> LaTeX
Группа утилит, которые по мере своих скромных сил справляются с засильем документов ЗлоВорда: с 6 до 200 версии включительно. Входит в Дебиан, тянет за собой tetex-base и ImageMagick. Утилит много
wvAbw wvDVI wvPDF wvText
wvCleanLatex wvHtml wvPS wvVersion
wvConvert wvLatex wvRTF wvWare
wvDocBook wvMime wvSummary wvWml
Реализация
После установки apt-get install wv выполняем команду конвертации:
wvLatex PredDiplomPractice.doc PredDiplomPracticeWV.texУтилита имеет несколько параметров, но всё-таки больше пригодна не для перевода в ЛаТеХ документов (так как математика в этом случае почти
в полном объёме уходит лесом), а для включения в скрипты и анализа
документов.
Результат
Только текст с некоторыми примесями тэгов ЛаТеХа. Почти нет форматирования, не говоря уже о формулах и рисунках. Только в крайнем случае при очень простых текстах.
Результат - только текст с небольшими вкраплениями формул.
Плюсы:
+ Маленькая и быстрая утилита.
Минусы:
- Всё остальное: мало формул, картинок, сносок и прочего. Только слегка отформатированный текст.
Заключение
При том количестве свободных утилит, которые способны переводить документы из закрытого, проприетарного и патентованного формата ЗлоВорд в формат LaTeX, конвертация осуществима и практически без потерь форматирования, формул и денег.
Как всегда, четко, ясно и актуально :) Но, в начале, по-моему, опечатка. Формат OpenOffice.org - не SWX, а SXW.
ОтветитьУдалить2 Anatoly said...
ОтветитьУдалитьКак всегда, четко, ясно и актуально :)
Спасибо :-)
Но, в начале, по-моему, опечатка. Формат OpenOffice.org - не SWX, а SXW.
Точно - спасибо, исправил. А комментаторы, как всегда, точны и соколиным взором отыскивают мои огрехи :-) За что огромное спасибо!
Design Science TeXaide™ от производителя MathType (чья урезанная версия называется MS Equation Editor), совершенно бесплатный продукт:
ОтветитьУдалитьhttp://www.dessci.com/en/products/TeXaide/default.asp
Поскольку перевод формул и был самой большой проблемой, справился исключительно хорошо.
Ну вот, а я в свое время столкнулся с совершенно обратной проблемой — сверстал диплов в TeX'е, а потом завкафедрой не хотел его принимать, ему, видите ли нужен был "нормальный" документ, который можно читать и исправлять. Пришлось в зловордь конвертировать. Ох и намучался я тогда, особенно с формулами!
ОтветитьУдалить2 jankkhvej
ОтветитьУдалитьDesign Science TeXaide™ от производителя MathType
Вообще-то оно под винду :-) Но всё равно спасибо, попробую.
2 Alexander
Ну вот, а я в свое время столкнулся с совершенно обратной проблемой — сверстал диплов в TeX'е, а потом завкафедрой не хотел его принимать, ему, видите ли нужен был "нормальный" документ, который можно читать и исправлять.
У меня была такая же проблема, только внутри лаборатории: мне сказали - верстай, в чём хочешь, но версия в ворде должна быть. Хоть умри. Ладно, говорю, без проблем: latex2rtf, подправил рисунки и поля. ВСЁ, сказал я: тест в вёрде есть? Править можете? Формулы видно? Хотите секса с вордом? Получайте :-) А я верстаю в ЛаТеХе до сих пор....
Если у кого есть ещё мысли - буду чрезвычайно благодарен!
Вообще-то оно под винду :-)
ОтветитьУдалитьну так и документы ж ворда тоже не в вакууме создавались? ;-)
в описании wv -> LaTeX написано:
ОтветитьУдалитьПосле установки apt-get install catdoc ...
2 jankkhvej
ОтветитьУдалитьну так и документы ж ворда тоже не в вакууме создавались? ;-)
Согласен. Спасибо за ссылку - посмотрю.
2 Sandinist
в описании wv -> LaTeX написано:
После установки apt-get install catdoc
Ой, описка - большое спасибо, устранил. Мелкие стилистические баги пофиксены :-)
По поводу кодировок в writer2latex.
ОтветитьУдалитьДля проги есть файл конфигурации, где можно много чего настроить.
Описание есть на сайте автора http://www.hj-gym.dk/%7Ehj/writer2latex/doc/user-manual-screen.pdf
У меня получилось создать файл, в котором можно спокойно редактировать русский и украинский текст.
На сайте
ОтветитьУдалитьhttp://peooc.donntu.edu.ua/aladin/
в категории "Квалификационная работа (КР)"
можно преобразовать в нормальную кириллицу
то, что получилось в tex-файле после write2latex.
2 Анонимный пишет...
ОтветитьУдалитьПо поводу кодировок в writer2latex.
Большое спасибо вам за мануал! Буду его читать :-)
2 don_alessandro пишет...
На сайте в категории "Квалификационная работа (КР)"
Ну вы и загнули, благородный дон Алессандро! :-) А нет ли такого же, но с перламутровыми пуговица^W в виде локального скрипта? А то каждый раз на ваш сайт заходить...
Будет. Дайте срок.
ОтветитьУдалитьЕщё одна идея: в ворде с PDFCreator или в опенофисе встроенными средствами конвертируем в PDF, PDF режется на страницы (pdftk или pypdf) и страницы вставляются как изображения в документ LaTeX. Таким образом хотя изменять вордовый текст и нельзя, зато можно воспроизвести его фотографически достоверно, включая «особенности» вордовой вёрстки.
ОтветитьУдалитьЕсть прекрасный способ перевода word документов используя гугловый переводчик
ОтветитьУдалитьС кодировкой вопрос решается проще некуда:
ОтветитьУдалитьw2l -inputencoding=cp1251 infile.odt
:)
За текст спасибо - сэкономил мне кучу времени.
Привет. Я скачала утилитку вот отсюда
ОтветитьУдалитьhttp://extensions.services.openoffice.org/project/writer2latex
Распаковала, но там нет скрипта w2l.
Ну, и соответсвенно, ничего не получилось.
Поставила из пакета, есть теперь такая утилита w2l. Но конвертация все равно не работает. Правда изначально мой файл создавался в ворде, он с формулами. Возможно из-за этого.
ОтветитьУдалитьГоворит:
This is Writer2LaTeX, Version 1.0 (2008-09-21)
Starting conversion...
Converting model.sxw
Exception in thread "main" java.lang.NullPointerException
at writer2latex.util.Misc.getChildByTagName(Misc.java:260)
at writer2latex.latex.MathmlConverter.convert(MathmlConverter.java:74)
at writer2latex.latex.DrawConverter.handleDrawObject(DrawConverter.java:157)
at writer2latex.latex.DrawConverter.handleDrawElement(DrawConverter.java:115)
at writer2latex.latex.InlineConverter.traverseOrdinaryInlineText(InlineConverter.java:240)
at writer2latex.latex.InlineConverter.traverseInlineText(InlineConverter.java:183)
at writer2latex.latex.ParConverter.handleParagraph(ParConverter.java:162)
at writer2latex.latex.BlockConverter.traverseBlockText(BlockConverter.java:138)
at writer2latex.latex.ConverterPalette.convertInner(ConverterPalette.java:205)
at writer2latex.base.ConverterBase.convert(ConverterBase.java:97)
at writer2latex.base.ConverterBase.convert(ConverterBase.java:81)
at writer2latex.Application.doConversion(Application.java:230)
at writer2latex.Application.main(Application.java:86)
@jetxee комментирует...
ОтветитьУдалитьв ворде с PDFCreator или в опенофисе встроенными средствами конвертируем в PDF, PDF режется на страницы (pdftk или pypdf) и страницы вставляются как изображения в документ LaTeX
Вот это не лучшая идея, надо сказать. Надо, чтобы текст был с оформлением.
@rvnikita комментирует...
Есть прекрасный способ перевода word документов используя гугловый переводчик
Если бы всё было так просто, Никита, поста бы не было :-)
@Сергей комментирует...
С кодировкой вопрос решается проще некуда:
Я про w2l не в курсе. Буду рад, если кто добавит инструкцию - опубликую в посте.
@Елена комментирует...
Привет. Я скачала утилитку вот отсюда
То есть это расширение ОпенОфиса?
Поставила из пакета, есть теперь такая утилита w2l. Но конвертация все равно не работает. Правда изначально мой файл создавался в ворде, он с формулами. Возможно из-за этого.
Я помню как-то ковырял нечто подобное от уныния и отчаяния. Оно не взлетело. В моём варианте не работала кириллица и вывод был страшен, как ядерная война.
Exception in thread "main" java.lang.NullPointerException
Хех, джава! :-)
Елена, а вы можете запостить сюда ключи, которыми вы пользовались при вызове скрипта? Может кто поможет...
writer2latex очень даже расширение
ОтветитьУдалитьв ОО по дефолту встроена старая его версия, а на http://extensions.services.openoffice.org/project/writer2latex лежит более новая
конвертация - через меню Файл/Экспорт
кстати, русский оно теперь понимает нормально
сама утилита валяется вместе с Writer2BibTeX, Writer2xhtml и Calc2xhtml тут writer2latex.sourceforge.net