Как мне конвертировать LaTeX в обычный текст (ASCII)? - PullRequest
63 голосов
/ 10 февраля 2009

Сценарий:
У меня есть документ, который я создал с использованием LaTeX (мое резюме в данном случае), он правильно компилируется в pdflatex и выдает именно то, что мне нужно. Теперь мне нужно, чтобы тот же документ был преобразован в простой старый ASCII.

Пример:
Я видел, как это было сделано (хотя бы один раз) здесь , где у автора есть версия PDF и версия ASCII , которая соответствует версии PDF почти во всех отношениях, включая поля, интервалы и маркеры.

Я понимаю, что этот тип преобразования не может быть точным из-за ограничений в формате ASCII, но очень близкое приближение кажется возможным на основе того, что я нашел до сих пор. Каков процесс для этого?

Ответы [ 14 ]

43 голосов
/ 14 января 2013

Opendetex доступен как для Windows, так и для Linux (также отлично компилируется на Mac). Его можно скачать с https://github.com/pkubowicz/opendetex

Использование:

detex project

открывает project.tex, читает все включенные файлы, используя \ include или \ includeonly команды, выводит полученный текст на стандартный вывод.

detex -n project > out.txt

открывает project.tex, не следует командам \ include или \ includeonly, выводит полученный текст в out.txt

detex --help

показывает полную справку

Распакуйте его в любой каталог по вашему выбору. Допустим, вы распаковали его в свой каталог загрузок.

Создайте еще один каталог с любым именем в нем (это необязательно, но рекомендуется). Допустим, имя каталога «my_paper». Поместите свою статью в каталог «my_paper». Предположим, что ваша статья называется project.tex.

Перейти к пути

    cd ~/Downloads/opendetex

Запустить команду

    detex my_paper/project.tex  > out.txt

универсальная форма

    detex -n full_path_to_tex_file.tex > output_text_file.txt
16 голосов
/ 10 февраля 2009

CatDVI может конвертировать DVI в текст и пытается сохранить форматирование.

14 голосов
/ 10 февраля 2009

Вы можете попробовать некоторые из предложенных здесь программ:

от TeX до ASCII

9 голосов
/ 27 апреля 2013

Вы также можете попробовать Pandoc , он может преобразовать латекс во многие другие форматы. Я предлагаю прочитать его документацию, поскольку могут быть некоторые сложные случаи, когда вам нужно передать некоторые аргументы для обработки.

8 голосов
/ 10 февраля 2009

Другой вариант - использовать htlatex для создания веб-страницы из источников LaTeX, а затем использовать ссылки для преобразования в обычный текст. Я использовал командную строку

links -dump -no-numbering -no-references input.html > output.txt

в прошлом, который дал довольно хороший результат. Это, конечно, скорее будет соответствовать виду визуализированного HTML, чем исходному PDF, поэтому, возможно, не совсем то, что вы хотите.

5 голосов
/ 09 марта 2015

Если вы используете pdflatex, вы, вероятно, не хотите возиться с опциями пакета, чтобы переключиться на latex для генерации DVI.

Вместо этого возьмите ваш PDF-файл и конвертируйте его. Это сработало для моего резюме / резюме, сделанного с пакетом Curve:

pdftotext  -layout MyResume.pdf

Обратите внимание на флаг -layout.

3 голосов
/ 29 октября 2012

Лучшее решение для меня следующее. Предполагая, что у вас есть латексное имя документа (без расширения), сохраненное в ${BASENAME}, вы применяете эти 3 шага:

htlatex ${BASENAME}.tex

iconv -f iso-8859-1 -t utf-8 ${BASENAME}.html > ${BASENAME}-utf8.html

html2markdown ${BASENAME}-utf8.html > ${BASENAME}.txt

Очевидно, вам нужно установить tex4ht и python-html2text.

3 голосов
/ 12 февраля 2012

Когда мне нужно было получить простой текст из моего TEX-файла для индексации и поиска, я обнаружил, что LaTeX2RTF - хорошее решение - у него есть установщик и графический интерфейс для окон , и он создает файл RTF из моей 50 страниц тезиса, который я мог бы открыть в Word.

3 голосов
/ 20 января 2010

Попробуйте выполнить следующие действия: http://zanedp.livejournal.com/201222.html

Вот последовательность, которая преобразует мой файл LaTeX в простой текст:

$ latex file.tex
$ catdvi -e 1 -U file.dvi | sed -re "s/\[U\+2022\]/*/g" | sed -re "s/([^^[:space:]])\s+/\1 /g" > file.txt

Опция -e 1 для catdvi говорит ему выводить ASCII. Если вы используете 0 вместо 1, он выведет Unicode. Юникод будет включать все специальные символы, такие как маркеры, символы и греческие буквы. Он также включает лигатуры для некоторых буквенных комбинаций, таких как «fi» и «fl». Вам может не нравиться это. Итак, используйте -e 1 вместо. Используйте параметр -U, чтобы распечатать значение Юникода для неизвестных символов, чтобы вы могли легко найти и заменить их.

Вторая часть команды находит строку [U + 2022], которая используется для обозначения символов маркера (•), и заменяет их звездочкой (*).

Третья часть съедает все лишние пробелы, добавленные catdvi, чтобы сделать текст полностью выровненным, сохраняя пробелы в начале строк (отступ).

После выполнения этих команд вам будет целесообразно найти в текстовом файле строку [U +, чтобы убедиться, что не осталось символов Unicode, которые нельзя сопоставить с ASCII, и исправить их.

3 голосов
/ 10 февраля 2009

Моя обычная стратегия - использовать hyperlatex , чтобы превратить его в веб-страницу, а затем справиться и вставить из веб-браузера. Я считаю, что это дает лучшее форматирование.

Обычно я должен пройти и вручную исправить перенос строки ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...