Как преобразовать книгу из HTML или CHM в формат TeX?
Модератор: /dev/random
Как преобразовать книгу из HTML или CHM в формат TeX?
В книге html куча папок с картинками и html. В страницах html ссылки на другие страицы html. Также вставлены в страницы картинки.
Как преобразовать книгу из HTML или CHM в формат TeX?
Как преобразовать книгу из HTML или CHM в формат TeX?
Re: Как преобразовать книгу из HTML или CHM в формат TeX?
Автоматом это практически невозможно. Я обычно пропускал html через sed, а потом долго правил.
RTFM
-------
KOI8-R - патриотичная кодировка
-------
KOI8-R - патриотичная кодировка
Re: Как преобразовать книгу из HTML или CHM в формат TeX?
Вообще-то там 500 папок со связанными ссылками html и всего около 1500 файлов. Вручную редактировать затруднительно.
Из html нужны только ссылки друг на друга, картинки, заголовки <h1><h2><h3><h4>, жирность <b> и абзацы <p> (также сохранить пустые строки), небольшое количество таблиц. Остальная разметка ненужна.
Можно подробней описать как это сделать?
Re: Как преобразовать книгу из HTML или CHM в формат TeX?
Да просто все. 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 &
...
ну и еще кой-какую мелочевку.
По мелочевке у меня скрипт есть:
У себя в арчиковских репах я нашел такое:
Попробуйте, может и не придется вручную все писать.
Внутренности <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 - патриотичная кодировка
-------
KOI8-R - патриотичная кодировка
- drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
- Контактная информация:
Re: Как преобразовать книгу из HTML или CHM в формат TeX?
ждать не задолбался? Пиши в первой строке
Код: Выделить всё
#/bin/sed -rf
и далее свой sed-script. Извращения с кошками и mv'ами встроены в sed по дефолту(естественно, для sed скриптов они тоже работают)
- Bizdelnick
- Модератор
- Сообщения: 20793
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Как преобразовать книгу из HTML или CHM в формат TeX?
https://github.com/threedaymonk/html2tex
Но необходимости ручной работы это не отменяет.
Но необходимости ручной работы это не отменяет.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
- Hephaestus
- Сообщения: 3729
- Статус: Многоуважаемый джинн...
- ОС: Slackware64-14.1/14.2
- Контактная информация:
Re: Как преобразовать книгу из HTML или CHM в формат TeX?
Ещё в OpenOffice была какая-то приблуда для экспорта. Правда, в LaTeX, а не в TeX.
Из командной строки вполне можно приспособить для пакетной обработки. Только вот код там громоздкий получается - много лишнего.
Из командной строки вполне можно приспособить для пакетной обработки. Только вот код там громоздкий получается - много лишнего.
Re: Как преобразовать книгу из HTML или CHM в формат TeX?
drBatty писал(а): ↑31.03.2014 10:19
ждать не задолбался? Пиши в первой строке
Код: Выделить всё
#/bin/sed -rf
и далее свой sed-script. Извращения с кошками и mv'ами встроены в sed по дефолту(естественно, для sed скриптов они тоже работают)
Я этот скрипт черт-те когда писал. Но в любом случае, за то время моих знаний в sed не прибавилось. Каждый раз приходится маны читать, да гуглом пользоваться.
Там не то, что громоздкий, а просто неюзабельный код выходит. Проще вообще вручную все переделать, чем этот ужас причесывать!
RTFM
-------
KOI8-R - патриотичная кодировка
-------
KOI8-R - патриотичная кодировка
- Hephaestus
- Сообщения: 3729
- Статус: Многоуважаемый джинн...
- ОС: Slackware64-14.1/14.2
- Контактная информация:
Re: Как преобразовать книгу из HTML или CHM в формат TeX?
В каком смысле неюзабельный? Так-то он вполне рабочий. Компилится нормально.
Это если что-то менять там надо, тогда - да, неюзабельный.
Но ТС вроде как не очень настроен на ручную доводку, ибо файлов много.
Попробовать можно, вдруг результат устроит.
- drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
- Контактная информация:
Re: Как преобразовать книгу из HTML или CHM в формат TeX?
в любом случае: твой скрипт кривой и не нужный.
Re: Как преобразовать книгу из HTML или CHM в формат TeX?
В таком, что править его потом не вариант. И привязан он жестко к исходной разметке (со всеми принудительными \newpage и т.п.).
Дык, я выше приводил название скриптика на перловке. Вполне возможно, что это то, что требуется.
В принципе, как я уже говорил, html - очень примитивная система разметки. Можно обычным sed'ом ее в латеховскую переделать.
А можно сделать сложней: на основе какого-нибудь XML-движка делать полный парсинг кода и преобразовывать уже по правилам, включая, в т.ч., и всякие формулы в MathML, графики в SVG и т.п.
Мне нужный ☺
А насчет кривости, могу поговорку, которую мой отец любит повторять, привести: "криво-косо, лишь бы деньги прямые были"!
В случае выполнения работ для себя, любимого, эта поговорка трансформируется в "а мне все пофиг, лишь бы оно выполняло возложенную задачу".
RTFM
-------
KOI8-R - патриотичная кодировка
-------
KOI8-R - патриотичная кодировка
- drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
- Контактная информация:
Re: Как преобразовать книгу из HTML или CHM в формат TeX?
я о том, что оно плохо свою задачу выполняет. Медленно и глючно. Ну и сопровождение это Адъ и Израиль.
тут надо что-то такое
Код: Выделить всё
#/bin/sed -rif
s/"([^ ?.,:!;])/<<\1/g
s/"/>>/g
s/\.\.\./ldots /g
s/- /~--- /g
s/&/\\\&/g
s/\\$/\\\\$/g
s/\^/\\\^/g
s/_/\\\_/g
как-то так.
Re: Как преобразовать книгу из HTML или CHM в формат TeX?
согласен. Так явно шустрей будет. Ну и еще надо уйму всякой фигни добавить по разным тегам. Я даже не знаю, как это делать правильно, чтобы быстро было. Явно надо распознавать теги и преобразовывать их содержимое в соответствии с некоторой заранее составленной таблицей.
RTFM
-------
KOI8-R - патриотичная кодировка
-------
KOI8-R - патриотичная кодировка
- Bizdelnick
- Модератор
- Сообщения: 20793
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Как преобразовать книгу из HTML или CHM в формат TeX?
Если по уму, то теги надо обрабатывать рекурсивно, потому что они могут быть вложенными. sed с этим справиться не может by design.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: Как преобразовать книгу из HTML или CHM в формат TeX?
Bizdelnick писал(а): ↑31.03.2014 16:24Если по уму, то теги надо обрабатывать рекурсивно, потому что они могут быть вложенными. sed с этим справиться не может by design.
Кстати, можно на жабоскрипте сделать парсер (т.к. на жабоскрипте с DOM проще всего работать). Интересная идея...
Скажем, забульбенить скриптик для greasemonkey, который будет небольшую "кнопочку" на страницу добавлять или на какое-нибудь клавосочетание реагировать. Активировали — он преобразовал текущую веб-страницу и выплюнул результат в save as. Даже картинки так можно будет спокойненько сохранять (достаточно нужные для них теги <img> запихать в конструкцию вроде \if0...\fi).
RTFM
-------
KOI8-R - патриотичная кодировка
-------
KOI8-R - патриотичная кодировка
- drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
- Контактная информация:
Re: Как преобразовать книгу из HTML или CHM в формат TeX?
но так добавлять значительно проще.
sed может и таблицу читать из файла, и её выполнять. Я так делал.
Bizdelnick писал(а): ↑31.03.2014 16:24Если по уму, то теги надо обрабатывать рекурсивно, потому что они могут быть вложенными. sed с этим справиться не может by design.
вы просто не умеете её готовить. (конечно нужно и меру знать, когда пора применять что-то более адекватное)
ты можешь и на сишечке не хуже. Поищи библиотеки для DOM, их есть и много. А то сегодняшние HTML'ы ты даже на современном компе JSом не распарсишь. Дорого очень.
- Bizdelnick
- Модератор
- Сообщения: 20793
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Как преобразовать книгу из HTML или CHM в формат TeX?
Покажите класс. С интересом посмотрю.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
- Bizdelnick
- Модератор
- Сообщения: 20793
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Как преобразовать книгу из HTML или CHM в формат TeX?
Не увидел там обработки вложенных тегов.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
- drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
- Контактная информация:
Re: Как преобразовать книгу из HTML или CHM в формат TeX?
да, чуть раньше пример того, как html режется построчно на теги. А вот разбор диапазонов строк уже не жадный.
Но можно и так делать, как у меня по той ссылке, сводить все(одинаковые) теги в одну строку. Очевидно, это можно делать рекурсивно(например так можно преобразовывать рекурсивно bbcode)
Sed ведь умеет циклы.