From c94e9f2cf72a205d6081ae2e706d854b35faf5f0 Mon Sep 17 00:00:00 2001 From: Victor Wagner Date: Wed, 13 Nov 2013 18:21:31 +0400 Subject: [PATCH] More or less finished fb2 generation --- Makefile | 7 ++++++- Tex2fb2 | 33 ++++++++++++++++++++++++++------- fb2meta.xml | 31 ++++++++++++++++++++++++++++++- general.tex | 4 ++-- 4 files changed, 64 insertions(+), 11 deletions(-) diff --git a/Makefile b/Makefile index e8fe561..c6aa90e 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -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 @@ -12,6 +12,11 @@ Kate-the-Empress.html: onefile.tex 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 > $@ diff --git a/Tex2fb2 b/Tex2fb2 index 693149f..929e957 100755 --- a/Tex2fb2 +++ b/Tex2fb2 @@ -5,13 +5,15 @@ my $poetry = 0; 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 "\n"; +print "\n"; print "\n"; my $metadata = shift @ARGV; @@ -20,7 +22,7 @@ while () { print $_; } close F; - +print "\n"; my $header =1; LINE: while (<>) { @@ -46,17 +48,17 @@ if (/\\(begin|end){(\w+)}/) { 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{/) { @@ -103,7 +105,7 @@ if ($poetry) { } } if ($buffer) { - add_to_section(tag($buffer,"p")); + add_to_section(tag(flushbuffer($buffer),"p")); $buffer=""; } @@ -111,7 +113,8 @@ while (@sections) { flushsection(); } print "\n"; -## FIXME print footnotes +## print footnotes +print "\n$footnotes\n" if $footnotes; print ""; sub add_to_section { @@ -158,3 +161,19 @@ sub tag { return "" if $content =~ /^\s*$/s; return "<$name>$content"; } + +sub flushbuffer { + local $_ = shift; + s/{\\(em|it|bf)(?:\s+|{})([^{}]+)}/$2<\/emphasis>/g; + s/\\(emph|textit|textbf){([^{}]+)}/$2<\/emphasis>/g; + s/\\footnote{(.*)}/push_footnote($1)/e; + s/[{}]//g; + return $_; +} + + +sub push_footnote { + my $id = "note_".(++$idseq); + $footnotes.="
".tag(shift,'p')."
\n"; + return "$idseq"; +} diff --git a/fb2meta.xml b/fb2meta.xml index 5755035..613c30b 100644 --- a/fb2meta.xml +++ b/fb2meta.xml @@ -1,2 +1,31 @@ - + +sf_fantasy +sf_space +ВикторВагнер +ИринаЕмельянова +Императрица Кэт + +

Вдова трагически погибшего герцога, обвиненная в колдовстве, вынуждена +бежать из Империи в земли Совета Магов. Через двадцать лет её сын +возвращается в Империю чтобы шпагой завоевать себе достойное место в +стране отцов. По дороге он встречается с девушкой-планетологом с Земли, +изучающей эту низкоразвитую цивилизацию.

В дальнейшем герою предстоят +морские сражения, дворцовые интриги и борьба со шпионами, женитьба на +принцессе и опекунство наследника престола. Но внезапно планета +оказывается полем битвы космической войны между Федерацией в которую +входят и земляне, и другой сверхцивилизацией. С первым выстрелом войны +герой лишается всего - жены, регенства, положения при дворе.

Потом +партизанская война, рабство у негуманоидной сверхцивилизации, +освобождение. И внезапно оказывается что судьба всей планеты зависит от +него одного.

+
+1994-2014 + +ru +
+ +Perl +http://www.wagner.pp.ru/~vitus/fiction + +
diff --git a/general.tex b/general.tex index 1acabd6..ce3836f 100644 --- a/general.tex +++ b/general.tex @@ -21,12 +21,12 @@ и он смерил Кеалора внимательным взглядом. \begin{quote} -{\sloppy \em «Арвид, обратите внимание на этого юношу. Он буквально в первый же день +{\sloppy {\em «Арвид, обратите внимание на этого юношу. Он буквально в первый же день своего появления в пределах Империи сумел оказать нашему Дому настолько значительные услуги, что мы сочли возможным открыть ему небольшой кредит, который позволит ему в течение нескольких месяцев (по истечении которых он, несомненно, заслужит достаточную в финансовом смысле благосклонность Его -Величества), вести жизнь, достойную имперского офицера. +Величества), вести жизнь, достойную имперского офицера.} } \begin{flushright} -- 2.39.5