Как преобразовать книгу из HTML или CHM в формат TeX?

Модератор: /dev/random

a617308
Сообщения: 6

Как преобразовать книгу из HTML или CHM в формат TeX?

Сообщение a617308 » 30.03.2014 19:37

В книге html куча папок с картинками и html. В страницах html ссылки на другие страицы html. Также вставлены в страницы картинки.
Как преобразовать книгу из HTML или CHM в формат TeX?
Спасибо сказали:

Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: Как преобразовать книгу из HTML или CHM в формат TeX?

Сообщение eddy » 30.03.2014 19:41

Автоматом это практически невозможно. Я обычно пропускал html через sed, а потом долго правил.
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:

a617308
Сообщения: 6

Re: Как преобразовать книгу из HTML или CHM в формат TeX?

Сообщение a617308 » 31.03.2014 08:23

eddy писал(а):
30.03.2014 19:41
Автоматом это практически невозможно. Я обычно пропускал html через sed, а потом долго правил.


Вообще-то там 500 папок со связанными ссылками html и всего около 1500 файлов. Вручную редактировать затруднительно.

Из html нужны только ссылки друг на друга, картинки, заголовки <h1><h2><h3><h4>, жирность <b> и абзацы <p> (также сохранить пустые строки), небольшое количество таблиц. Остальная разметка ненужна.

Можно подробней описать как это сделать?
Спасибо сказали:

Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: Как преобразовать книгу из HTML или CHM в формат TeX?

Сообщение eddy » 31.03.2014 08:52

Да просто все. sed в помощь!
Внутренности <h1> заменяем на \section{#1}
внутренности <h2> — \subsection{#1}
...
вместо <p> ставим "\n\n"
всякие там <b>, <i> и т.п. заменяем на \textbf{#1}, \textit{#1}...
с таблицами хуже, но тоже можно сначала привести их в более-менее нормальный вид <table>#1</table> заменить на \begin{table}\end{table}, <tr>#1</tr> заменить на #1\\, <td>#1</td> — на #1 &
...

ну и еще кой-какую мелочевку.

По мелочевке у меня скрипт есть:

Код: Выделить всё

#!/bin/sh
# Заменяет обычные кавычки на "лапки"
# Кроме того производит некоторую дополнительную подготовку обычного текстовика для ЛаТеХа
tmp=/tmp/forlatex.$$
for file in $*
do
    if [ "$1" != "./" -a "$1" != "../" ]; then
    cat $1 | sed "s/\(\"\)\([^\ ?\.,:\!;]\)/<<\2/g" | sed "s/\"/>>/g"|\
    sed "s/\.\.\./\\\ldots\ /g" | sed "s/-\ /~---\ /g" | sed "s/&/\\\&/g" |\
    sed "s/\\$/\\\\$/g" | sed "s/\^/\\\^/g" | sed "s/_/\\\_/g" > $tmp
    mv $tmp $1
    fi
shift
done


У себя в арчиковских репах я нашел такое:

Код: Выделить всё

5 community/gnuhtml2latex 0.4-2
    A Perl script that converts html files to latex


Попробуйте, может и не придется вручную все писать.
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:

Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Как преобразовать книгу из HTML или CHM в формат TeX?

Сообщение drBatty » 31.03.2014 10:19

eddy писал(а):
31.03.2014 08:52
cat $1 | sed

ждать не задолбался? Пиши в первой строке

Код: Выделить всё

#/bin/sed -rf

и далее свой sed-script. Извращения с кошками и mv'ами встроены в sed по дефолту(естественно, для sed скриптов они тоже работают)
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 15050
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: Как преобразовать книгу из HTML или CHM в формат TeX?

Сообщение Bizdelnick » 31.03.2014 10:26

https://github.com/threedaymonk/html2tex
Но необходимости ручной работы это не отменяет.
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
команда
новичок
нюанс
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
Hephaestus
Сообщения: 2323
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14,2

Re: Как преобразовать книгу из HTML или CHM в формат TeX?

Сообщение Hephaestus » 31.03.2014 10:35

Ещё в OpenOffice была какая-то приблуда для экспорта. Правда, в LaTeX, а не в TeX.
Из командной строки вполне можно приспособить для пакетной обработки. Только вот код там громоздкий получается - много лишнего.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:

Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: Как преобразовать книгу из HTML или CHM в формат TeX?

Сообщение eddy » 31.03.2014 10:40

drBatty писал(а):
31.03.2014 10:19
eddy писал(а):
31.03.2014 08:52
cat $1 | sed

ждать не задолбался? Пиши в первой строке

Код: Выделить всё

#/bin/sed -rf

и далее свой sed-script. Извращения с кошками и mv'ами встроены в sed по дефолту(естественно, для sed скриптов они тоже работают)

Я этот скрипт черт-те когда писал. Но в любом случае, за то время моих знаний в sed не прибавилось. Каждый раз приходится маны читать, да гуглом пользоваться.

fflatx писал(а):
31.03.2014 10:35
Ещё в OpenOffice была какая-то приблуда для экспорта. Правда, в LaTeX, а не в TeX.
Из командной строки вполне можно приспособить для пакетной обработки. Только вот код там громоздкий получается - много лишнего.

Там не то, что громоздкий, а просто неюзабельный код выходит. Проще вообще вручную все переделать, чем этот ужас причесывать!
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:

Аватара пользователя
Hephaestus
Сообщения: 2323
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14,2

Re: Как преобразовать книгу из HTML или CHM в формат TeX?

Сообщение Hephaestus » 31.03.2014 10:48

eddy писал(а):
31.03.2014 10:40
Там не то, что громоздкий, а просто неюзабельный код выходит.
В каком смысле неюзабельный? Так-то он вполне рабочий. Компилится нормально.
Это если что-то менять там надо, тогда - да, неюзабельный.

Но ТС вроде как не очень настроен на ручную доводку, ибо файлов много.
Попробовать можно, вдруг результат устроит.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:

Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Как преобразовать книгу из HTML или CHM в формат TeX?

Сообщение drBatty » 31.03.2014 10:58

eddy писал(а):
31.03.2014 10:40
Я этот скрипт черт-те когда писал. Но в любом случае, за то время моих знаний в sed не прибавилось. Каждый раз приходится маны читать, да гуглом пользоваться.

в любом случае: твой скрипт кривой и не нужный.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:

Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: Как преобразовать книгу из HTML или CHM в формат TeX?

Сообщение eddy » 31.03.2014 11:15

fflatx писал(а):
31.03.2014 10:48
В каком смысле неюзабельный? Так-то он вполне рабочий. Компилится нормально.

В таком, что править его потом не вариант. И привязан он жестко к исходной разметке (со всеми принудительными \newpage и т.п.).

fflatx писал(а):
31.03.2014 10:48
Но ТС вроде как не очень настроен на ручную доводку, ибо файлов много.

Дык, я выше приводил название скриптика на перловке. Вполне возможно, что это то, что требуется.
В принципе, как я уже говорил, html - очень примитивная система разметки. Можно обычным sed'ом ее в латеховскую переделать.
А можно сделать сложней: на основе какого-нибудь XML-движка делать полный парсинг кода и преобразовывать уже по правилам, включая, в т.ч., и всякие формулы в MathML, графики в SVG и т.п.

drBatty писал(а):
31.03.2014 10:58
в любом случае: твой скрипт кривой и не нужный.

Мне нужный ☺
А насчет кривости, могу поговорку, которую мой отец любит повторять, привести: "криво-косо, лишь бы деньги прямые были"!
В случае выполнения работ для себя, любимого, эта поговорка трансформируется в "а мне все пофиг, лишь бы оно выполняло возложенную задачу".
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:

Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Как преобразовать книгу из HTML или CHM в формат TeX?

Сообщение drBatty » 31.03.2014 11:42

eddy писал(а):
31.03.2014 11:15
В случае выполнения работ для себя, любимого, эта поговорка трансформируется в "а мне все пофиг, лишь бы оно выполняло возложенную задачу".

я о том, что оно плохо свою задачу выполняет. Медленно и глючно. Ну и сопровождение это Адъ и Израиль.

тут надо что-то такое

Код: Выделить всё

#/bin/sed -rif
s/"([^ ?.,:!;])/<<\1/g
s/"/>>/g
s/\.\.\./ldots /g
s/- /~--- /g
s/&/\\\&/g
s/\\$/\\\\$/g
s/\^/\\\^/g
s/_/\\\_/g

как-то так.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:

Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: Как преобразовать книгу из HTML или CHM в формат TeX?

Сообщение eddy » 31.03.2014 16:21

drBatty писал(а):
31.03.2014 11:42
как-то так.

согласен. Так явно шустрей будет. Ну и еще надо уйму всякой фигни добавить по разным тегам. Я даже не знаю, как это делать правильно, чтобы быстро было. Явно надо распознавать теги и преобразовывать их содержимое в соответствии с некоторой заранее составленной таблицей.
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 15050
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: Как преобразовать книгу из HTML или CHM в формат TeX?

Сообщение Bizdelnick » 31.03.2014 16:24

Если по уму, то теги надо обрабатывать рекурсивно, потому что они могут быть вложенными. sed с этим справиться не может by design.
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
команда
новичок
нюанс
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: Как преобразовать книгу из HTML или CHM в формат TeX?

Сообщение eddy » 31.03.2014 18:31

Bizdelnick писал(а):
31.03.2014 16:24
Если по уму, то теги надо обрабатывать рекурсивно, потому что они могут быть вложенными. sed с этим справиться не может by design.

Кстати, можно на жабоскрипте сделать парсер (т.к. на жабоскрипте с DOM проще всего работать). Интересная идея...
Скажем, забульбенить скриптик для greasemonkey, который будет небольшую "кнопочку" на страницу добавлять или на какое-нибудь клавосочетание реагировать. Активировали — он преобразовал текущую веб-страницу и выплюнул результат в save as. Даже картинки так можно будет спокойненько сохранять (достаточно нужные для них теги <img> запихать в конструкцию вроде \if0...\fi).
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:

Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Как преобразовать книгу из HTML или CHM в формат TeX?

Сообщение drBatty » 01.04.2014 07:48

eddy писал(а):
31.03.2014 16:21
Так явно шустрей будет. Ну и еще надо уйму всякой фигни добавить по разным тегам.

но так добавлять значительно проще.
eddy писал(а):
31.03.2014 16:21
Явно надо распознавать теги и преобразовывать их содержимое в соответствии с некоторой заранее составленной таблицей.

sed может и таблицу читать из файла, и её выполнять. Я так делал.

Bizdelnick писал(а):
31.03.2014 16:24
Если по уму, то теги надо обрабатывать рекурсивно, потому что они могут быть вложенными. sed с этим справиться не может by design.

вы просто не умеете её готовить. (конечно нужно и меру знать, когда пора применять что-то более адекватное)
eddy писал(а):
31.03.2014 18:31
Кстати, можно на жабоскрипте сделать парсер (т.к. на жабоскрипте с DOM проще всего работать).

ты можешь и на сишечке не хуже. Поищи библиотеки для DOM, их есть и много. А то сегодняшние HTML'ы ты даже на современном компе JSом не распарсишь. Дорого очень.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 15050
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: Как преобразовать книгу из HTML или CHM в формат TeX?

Сообщение Bizdelnick » 01.04.2014 08:34

drBatty писал(а):
01.04.2014 07:48
вы просто не умеете её готовить

Покажите класс. С интересом посмотрю.
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
команда
новичок
нюанс
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Как преобразовать книгу из HTML или CHM в формат TeX?

Сообщение drBatty » 01.04.2014 10:31

http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 15050
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: Как преобразовать книгу из HTML или CHM в формат TeX?

Сообщение Bizdelnick » 01.04.2014 10:44

drBatty писал(а):
01.04.2014 10:31
Bizdelnick
например http://emulek.github.io/sed/ch04s10.html

Не увидел там обработки вложенных тегов.
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
команда
новичок
нюанс
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Как преобразовать книгу из HTML или CHM в формат TeX?

Сообщение drBatty » 01.04.2014 10:52

Bizdelnick писал(а):
01.04.2014 10:44
Не увидел там обработки вложенных тегов.

да, чуть раньше пример того, как html режется построчно на теги. А вот разбор диапазонов строк уже не жадный.

Но можно и так делать, как у меня по той ссылке, сводить все(одинаковые) теги в одну строку. Очевидно, это можно делать рекурсивно(например так можно преобразовывать рекурсивно bbcode)

Sed ведь умеет циклы.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали: