]> www.wagner.pp.ru Git - fiction/Kate-the-Empress.git/blobdiff - Tex2fb2
Поправили мажордома
[fiction/Kate-the-Empress.git] / Tex2fb2
diff --git a/Tex2fb2 b/Tex2fb2
index 12f50da94cbca1d0b11758a5f6f08b85455a621d..30988082287d8c4345292a34f511a10b60ca4e66 100755 (executable)
--- a/Tex2fb2
+++ b/Tex2fb2
@@ -1,5 +1,6 @@
 #!/usr/bin/perl -CDS
 use utf8;
+use POSIX qw(strftime);
 # char-level modes
 my $poetry = 0;
 my $verbatim = 0;
@@ -19,6 +20,16 @@ xmlns:l=\"http://www.w3.org/1999/xlink\">\n";
 my $metadata = shift @ARGV;
 open F,"<",$metadata;
 while (<F>) {
+       # Replace empty date with current date
+       if (/<date\s+\/>/ || /<date>\s*<\/date>/) {
+               $_ = "<date value=\"".strftime("%Y-%m-%d",localtime())."\">".
+                       strftime("%d/%m/%Y",localtime())."</date>\n";
+       }
+       # Add current to date as fractional part to version
+       if (/<version>(\d*)(.\d*)?<\/version>/) {
+               my $ver = $1+time()/1E10;
+               $_=tag(sprintf("%g",$ver),"version")."\n";
+       }
        print $_;
 }
 close F;
@@ -66,6 +77,12 @@ if (/\\vspace{/) {
        next LINE;
 }
 next LINE if /\\pagebreak\b/;
+#replace ' and " with entities
+s/&/&amp;/g;
+s/'/&apos;/g;
+s/"/&quot;/g;
+s/</&lt;/g;
+s/>/&gt;/g;
 #normal mode: 
 if (!$verbatim) {
 #strip TeX comments 
@@ -81,21 +98,26 @@ s/\s+$//;
 s/(\s)\s+/$1/g;
 #replace TeX ligatures ~ --- << >> \% with appropriate unicode symbols
 s/~/\xA0/g;
+s/\\-/\xAD/g;
 s/---/—/g;
 s/<</«/g;
 s/>>/»/g;
 s/\\%/%/g;
 s/\\dots/\x{2026}/g;
+s/\\verb(.)(.*)\1/<code>$2<\/code>/;
 }
-#replace ' and " with entities
-s/&/&amp;/g;
-s/'/&apos;/g;
-s/"/&quot;/g;
-s/</&lt;/g;
-s/>/&gt;/g;
 
 if ($poetry) {
        chomp;
+       if ($poetic_buffer) {
+               $_ = $poetic_buffer." ".$_;
+               $poetic_buffer = undef;
+       }
+       if (/{[^}]+$/) {
+               $poetic_buffer=$_;
+               next LINE;
+       }
+       s/\\footnote{(.*)}/push_footnote($1)/e;
        s/\s*\\\\$//;
   $buffer.=tag($_,'v')."\n";
 } elsif ($verbatim) {