-all: Kate-the-Empress.pdf Kate-the-Empress.html Kate-the-Empress.epub
+all: Kate-the-Empress.pdf Kate-the-Empress.html Kate-the-Empress.epub Kate-the-Empress.fb2.zip
Kate-the-Empress.pdf: $(wildcard *.tex)
pdflatex book
Kate-the-Empress.epub: onefile.tex
pandoc -t epub --standalone -o $@ $+
+Kate-the-Empress.fb2.zip: onefile.zip
+ ./Tex2fb2 fb2meta.xml onefile.tex >Kate-the-Empress.fb2
+ zip Kate-the-Empress.fb2.zip Kate-the-Empress.fb2
+ rm Kate-the-Empress.fb2
+
onefile.tex: joinfiles.awk $(wildcard *.tex)
awk -f joinfiles.awk book.tex > $@
my $verbatim = 0;
my @sections;
my $buffer;
+my $idseq = 0; # sequentual number of footnotes
+my $footnotes="";
#
# TODO italic paragaphs
# footnotes
# epigraphs
#
# print fictionbook header
-print "<?xml version=\"1.0\" encoding=\"UTF-8\">\n";
+print "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
print "<FictionBook xmlns=\"http://www.gribuser.ru/xml/fictionbook/2.0\"
xmlns:l=\"http://www.w3.org/1999/xlink\">\n";
my $metadata = shift @ARGV;
print $_;
}
close F;
-
+print "<body>\n";
my $header =1;
LINE:
while (<>) {
next LINE if $header;
if ((/^$/ || $environ) && $buffer) {
#output on empty line (p or stanza) depending on poetry mode
- add_to_section(tag($buffer,$poetry?"stanza":"p")."\n");
+ add_to_section(tag(flushbuffer($buffer),$poetry?"stanza":"p")."\n");
$buffer="";
}
next LINE if $environ;
# Section headings
if (/\\(part|chapter|section|subsection|subsubsection)\*?{(.*)}/) {
if ($buffer) {
- add_to_section(tag($buffer,$poetry?"stanza":"p"));
+ add_to_section(tag(flushbuffer($buffer),$poetry?"stanza":"p"));
$buffer="";
}
- pushsection($1,$2);
+ pushsection($1,tag($2,"p"));
next LINE;
}
if (/\\vspace{/) {
}
}
if ($buffer) {
- add_to_section(tag($buffer,"p"));
+ add_to_section(tag(flushbuffer($buffer),"p"));
$buffer="";
}
flushsection();
}
print "</body>\n";
-## FIXME print footnotes
+## print footnotes
+print "<body id=\"notes\">\n$footnotes\n</body>" if $footnotes;
print "</FictionBook>";
sub add_to_section {
return "" if $content =~ /^\s*$/s;
return "<$name>$content</$name>";
}
+
+sub flushbuffer {
+ local $_ = shift;
+ s/{\\(em|it|bf)(?:\s+|{})([^{}]+)}/<emphasis>$2<\/emphasis>/g;
+ s/\\(emph|textit|textbf){([^{}]+)}/<emphasis>$2<\/emphasis>/g;
+ s/\\footnote{(.*)}/push_footnote($1)/e;
+ s/[{}]//g;
+ return $_;
+}
+
+
+sub push_footnote {
+ my $id = "note_".(++$idseq);
+ $footnotes.="<section id=\"$id\">".tag(shift,'p')."</section>\n";
+ return "<a l:href=\"#$id\" type=\"note\">$idseq</a>";
+}
<description>
-</descrition>
+<title-info>
+<genre>sf_fantasy</genre>
+<genre>sf_space</genre>
+<author><first-name>Виктор</first-name><last-name>Вагнер</last-name></author>
+<author><first-name>Ирина</first-name><last-name>Емельянова</last-name></author>
+<book-title>Императрица Кэт</book-title>
+<annotation>
+<p>Вдова трагически погибшего герцога, обвиненная в колдовстве, вынуждена
+бежать из Империи в земли Совета Магов. Через двадцать лет её сын
+возвращается в Империю чтобы шпагой завоевать себе достойное место в
+стране отцов. По дороге он встречается с девушкой-планетологом с Земли,
+изучающей эту низкоразвитую цивилизацию.</p><p> В дальнейшем герою предстоят
+морские сражения, дворцовые интриги и борьба со шпионами, женитьба на
+принцессе и опекунство наследника престола. Но внезапно планета
+оказывается полем битвы космической войны между Федерацией в которую
+входят и земляне, и другой сверхцивилизацией. С первым выстрелом войны
+герой лишается всего - жены, регенства, положения при дворе.</p><p>Потом
+партизанская война, рабство у негуманоидной сверхцивилизации,
+освобождение. И внезапно оказывается что судьба всей планеты зависит от
+него одного.</p>
+</annotation>
+<date value="2014-01-01">1994-2014</date>
+<coverpage />
+<lang>ru</lang>
+</title-info>
+<document-info>
+<program-used>Perl</program-used>
+<src-url>http://www.wagner.pp.ru/~vitus/fiction</src-url>
+</document-info>
+</description>
и он смерил Кеалора внимательным взглядом.
\begin{quote}
-{\sloppy \em «Арвид, обратите внимание на этого юношу. Он буквально в первый же день
+{\sloppy {\em «Арвид, обратите внимание на этого юношу. Он буквально в первый же день
своего появления в пределах Империи сумел оказать нашему Дому настолько
значительные услуги, что мы сочли возможным открыть ему небольшой кредит,
который позволит ему в течение нескольких месяцев (по истечении которых он,
несомненно, заслужит достаточную в финансовом смысле благосклонность Его
-Величества), вести жизнь, достойную имперского офицера.
+Величества), вести жизнь, достойную имперского офицера.}
}
\begin{flushright}