From: Victor Wagner Date: Wed, 13 Nov 2013 08:51:33 +0000 (+0400) Subject: work on fb2 formatting X-Git-Url: http://wagner.pp.ru/gitweb/?a=commitdiff_plain;h=416f4f9bd47860f06c2dfe92269dbc8a49f5887d;p=fiction%2FKate-the-Empress.git work on fb2 formatting --- diff --git a/Tex2fb2 b/Tex2fb2 old mode 100644 new mode 100755 index 2fe0580..2d644df --- a/Tex2fb2 +++ b/Tex2fb2 @@ -1,4 +1,5 @@ -#!/usr/bin/perl +#!/usr/bin/perl -CDS +use utf8; # char-level modes my $poetry = 0; my $verbatim = 0; @@ -21,6 +22,7 @@ while () { close F; my $header =1; +LINE: while (<>) { $environ = undef; if (/\\(begin|end){(\w+)}/) { @@ -40,25 +42,41 @@ if (/\\(begin|end){(\w+)}/) { } } next LINE if $header; -if (/^$/ && $environ && $buffer) { +if ((/^$/ || $environ) && $buffer) { #output on empty line (p or stanza) depending on poetry mode add_to_section(tag($buffer,$poetry?"stanza":"p")); $buffer=""; } next LINE if $environ; # Section headings -if (/\\(part|chapter|section|subsection|subsubsection){(.*)}/) { +if (/\\(part|chapter|section|subsection|subsubsection)\*?{(.*)}/) { + if ($buffer) { + add_to_section(tag($buffer,$poetry?"stanza":"p")); + $buffer=""; + } pushsection($1,$2); + next LINE; +} +if (/\\vspace{/) { + add_to_section(""); + next LINE; } #normal mode: if (!$verbatim) { #strip TeX comments s/([^\\])%.*$/$1/; +s/^%.*$//; +# strip \sloppy +s/\\sloppy\s+//g; +s/\\sloppy{}//g; +s/\\sloppy([^\w])/$1/g; #replace TeX ligatures ~ --- << >> \% with appropriate unicode symbols s/~/\xA0/g; s/---/-/g; s/<>/»/g; +s/\\%/%/g; +s/\\dots/\x{2026}/g; } #replace ' and " with entities s/&/&/g; @@ -78,6 +96,7 @@ if ($poetry) { } if ($buffer) { add_to_section(tag($buffer,"p")); + $buffer=""; } while (@sections) { @@ -128,5 +147,6 @@ sub pushsection { sub tag { my ($content,$name) = @_; + return "" if ($content eq "\n"); return "<$name>$content"; } diff --git a/book.tex b/book.tex index f39082b..4b77e63 100644 --- a/book.tex +++ b/book.tex @@ -56,9 +56,9 @@ \stars \input abordage.tex \chapter{Пушки Рамета тал Фипса} -\input{reward.tex} +\input reward.tex \stars -\input{empie.tex} +\input empie.tex \stars \input no-duel.tex \stars diff --git a/fb2meta.xml b/fb2meta.xml new file mode 100644 index 0000000..5755035 --- /dev/null +++ b/fb2meta.xml @@ -0,0 +1,2 @@ + +