Ответ 1
CatDVI может конвертировать DVI в текст и пытается сохранить форматирование.
Сценарий:
У меня есть документ, который я создал с помощью LaTeX (мое резюме в этом случае), он компилируется в pdflatex
правильно и выводит именно то, что мне нужно. Теперь мне нужен тот же документ, который нужно преобразовать в обычный старый ASCII.
Пример:
Я видел это (хотя бы один раз) здесь, где автор имеет PDF версия и версия ASCII, которая практически полностью соответствует версии PDF, включая поля, расстояние и пулю точек.
Я понимаю, что этот тип преобразования не может быть точным из-за ограничений в формате ASCII, но очень близкое приближение кажется возможным на основе того, что я нашел до сих пор. Каков процесс для этого?
CatDVI может конвертировать DVI в текст и пытается сохранить форматирование.
Opendetex доступен как для Windows, так и для Linux (компилируется отлично на Mac также). Его можно загрузить с https://github.com/pkubowicz/opendetex
Использование:
detex project
открывает project.tex, считывает все файлы, включенные с помощью команд \include или\includeonly, выводит итоговый текст на стандартный вывод.
detex -n project > out.txt
открывает project.tex, не выполняет команды \include или\includonly, выводит итоговый текст в 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
Вы можете попробовать некоторые из предлагаемых здесь программ:
Другой вариант - использовать htlatex для создания веб-страницы из источников LaTeX, а затем использовать links для преобразования в обычный текст. Я использовал командную строку
links -dump -no-numbering -no-references input.html > output.txt
в прошлом, что дало довольно хороший результат. Это, конечно, скорее соответствует представлению отображаемого HTML, чем оригинальному PDF, и, возможно, не совсем то, что вы хотите.
Вы также можете попробовать Pandoc, он может преобразовать латекс во многие другие форматы. Я предлагаю прочитать его документацию, так как могут быть некоторые сложные случаи, которые вам нужны, чтобы передать некоторые аргументы.
Если вы используете pdflatex
, вы, вероятно, не хотите путаться со своими опциями пакета, чтобы переключиться на latex
, чтобы создать DVI.
Вместо этого возьмите файл pdf и конвертируйте его. Это сработало для моего CV/резюме, сделанного с помощью пакета Curve:
pdftotext -layout MyResume.pdf
Обратите внимание на флаг -layout
.
Моя обычная стратегия - использовать hyperlatex, чтобы превратить ее в веб-страницу, а затем справиться и вставить из веб-браузера. Я считаю, что это дает лучшее форматирование.
Мне обычно приходится проходить через и вручную исправлять некоторые строки...
Попробуйте следующие шаги: 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. Unicode будет включать в себя все специальные символы, такие как маркеры, emdash и греческие буквы. Он также включает в себя лигатуры для некоторых комбинаций букв, таких как "fi" и "fl". Возможно, вам это не понравится. Итак, используйте -e 1 вместо этого. Используйте опцию -U, чтобы сообщить ей распечатать значение unicode для неизвестных символов, чтобы вы могли легко находить и заменять их.
Вторая часть команды находит строку [U + 2022], которая используется для обозначения символов пули (•) и заменяет их звездочкой (*).
Третья часть съедает все лишние прошивки catdvi, чтобы сделать текст полностью оправданным, сохраняя пробелы в начале строк (отступы).
После выполнения этих команд вам было бы разумно искать файл .txt для строки [U +, чтобы убедиться, что символы Unicode, которые нельзя сопоставить с ASCII, остались позади и исправили их.
Когда мне нужно было получить простой текст из моего файла TEX для индексирования и поиска, я нашел LaTeX2RTF хорошим решением - он имеет установочный и графический интерфейс для Windows, и он создал RTF файл моего 50-страничного тезиса, который я мог открыть в Word.
Решение, которое наилучшим образом подходит для меня, следующее. Предполагая, что у вас есть имя латексного документа (без расширения), хранящееся в ${BASENAME}
, вы применяете эти три шага:
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
.
Я пробовал LyX, и он работает очень хорошо. Единственный нюанс в том, что если у вас есть файл TeX, который включает в себя другие файлы TeX, вам нужно будет экспортировать их все отдельно, если только я что-то не упустил.
Pandoc позволяет конвертировать файлы из одного формата в другой Используйте следующую команду pandoc:
pandoc -s /path/to/foobar.tex -o foobar.txt
Если вы хотите, чтобы ваши строки разбивались на определенный столбец, используйте флаг --column
. Используйте --columns 10000
для неразрывной строки.
Вы можете преобразовать -o foobar.txt
в несколько других форматов, например markdown (.md) и т.д. Если вы не указали -o foobar.txt
, pandoc напечатает html, который вы можете отобразить в любом онлайн-инструменте.
Чтобы установить pandoc, следуйте официальную документацию
вы можете импортировать в лизу и использовать экспорт текста в текстовую функцию.
глупо, если вы не используете ликс, но если у вас уже есть это, очень быстрое и простое решение. Хороший результат для меня, хотя, честно говоря, мои файлы довольно просты. Не знаете, как конвертировать более сложные файлы.
Emacs имеет команды iso-iso2tex
и iso-tex2iso
, которые работают очень хорошо, за исключением того, что он не конвертирует одиночные команды, такие как \OE
в Œ
.