#!/usr/bin/env python3 """Общая сборка XHTML для pdf2html.py и epub2html.py. Формат намеренно жёсткий: один блок — одна строка (кроме
, где переносы
значимы). На этом держится мост translate.py — он правит блоки по номеру
строки, а всё, чего не узнал, доносит до результата нетронутым.
"""
import html
CSS = """
body { margin: 0 1em; }
h1 { text-align: center; margin: 2em 0 0.2em; page-break-before: always; }
h1.title { page-break-before: avoid; }
h2 { text-align: center; font-style: italic; font-weight: normal;
font-size: 1.1em; margin: 0.2em 0 1.5em; }
p { text-indent: 1.2em; margin: 0; text-align: justify; }
p.note { text-indent: 0; margin: 1em 2em; font-size: 0.9em;
font-family: sans-serif; }
p.li { text-indent: 0; margin: 0.3em 0 0.3em 1.5em; text-align: left; }
p.row { text-indent: 0; margin: 0.3em 0; text-align: left;
font-size: 0.9em; }
p.figure { text-indent: 0; text-align: center; margin: 1em 0; }
img { max-width: 100%; }
pre { font-family: monospace; font-size: 0.75em; margin: 1em 0;
white-space: pre-wrap; word-wrap: break-word; text-align: left;
text-indent: 0; }
code { font-family: monospace; font-size: 0.9em; }
"""
def document(title, parts):
"""parts: [(tag, cls, inner_html)]; tag 'figure' — псевдотег для картинки."""
buf = ['',
'',
"%s " % html.escape(title),
"" % CSS]
for tag, cls, txt in parts:
if tag == "figure":
buf.append('%s
' % txt)
else:
c = ' class="%s"' % cls if cls else ""
buf.append("<%s%s>%s%s>" % (tag, c, txt, tag))
buf.append("")
return "\n".join(buf)