various pdf fixes
authorRadek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>
Tue, 19 Feb 2013 10:14:45 +0000 (11:14 +0100)
committerRadek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>
Tue, 19 Feb 2013 10:14:45 +0000 (11:14 +0100)
librarian/pdf/wl.cls
librarian/pyhtml.py
librarian/pypdf.py
librarian/res/styles/edumed/pdf/edumed.sty

index f0280eb..c04a8c8 100755 (executable)
@@ -295,7 +295,7 @@ Letters={Uppercase}
 \subsubsection*{\typosubsubsection{#1}}%
 }
 \newcommand{\naglowekrozdzial}[1]{%
-\subsubsection*{\typosubsubsection{#1}}%
+{\raggedright\subsubsection*{\typosubsubsection{#1}}}%
 }
 
 \newcommand{\naglowekosoba}[1]{%
index 6d1e914..6bfbf8a 100644 (file)
@@ -151,6 +151,11 @@ u"""%(wskazowki)s
     # Lists
     def handle_lista(self, element, attrs={}):
         ltype = element.attrib.get('typ', 'punkt')
+        if not element.findall("punkt"):
+            if ltype == 'czytelnia':
+                return '<p>W przygotowaniu.</p>'
+            else:
+                return None
         if ltype == 'slowniczek':
             surl = element.attrib.get('src', None)
             if surl is None:
@@ -173,7 +178,10 @@ u"""%(wskazowki)s
         attrs_s = ' '.join(['%s="%s"' % kv for kv in attrs.items()])
         if attrs_s: attrs_s = ' ' + attrs_s
 
-        return '<%s class="lista %s %s"%s>' % (listtag, ltype, classes, attrs_s), '</%s>' % listtag
+        pre, post = '<%s class="lista %s %s"%s>' % (listtag, ltype, classes, attrs_s), '</%s>' % listtag
+        if ltype == 'slowniczek':
+            post += '<p class="see-more"><a href="%s">Zobacz cały słowniczek.</a></p>' % surl
+        return pre, post
 
     def handle_punkt(self, element):
         if self.options['slowniczek']:
index 2bcd8d0..d89d4af 100644 (file)
@@ -9,30 +9,20 @@ Creates one big XML from the book and its children, converts it to LaTeX
 with TeXML, then runs it by XeLaTeX.
 
 """
-from __future__ import with_statement
 from copy import deepcopy
-import os
 import os.path
 import shutil
-from StringIO import StringIO
-from tempfile import mkdtemp, NamedTemporaryFile
 import re
 import random
-from copy import deepcopy
-from subprocess import call, PIPE
 from urllib2 import urlopen
 
-from Texml.processor import process
 from lxml import etree
-from lxml.etree import XMLSyntaxError, XSLTApplyError
 
 from xmlutils import Xmill, tag, tagged, ifoption, tag_open_close
 from librarian.dcparser import Person
-from librarian.parser import WLDocument
-from librarian import ParseError, DCNS, get_resource, IOFile, Format
+from librarian import DCNS, get_resource, IOFile
 from librarian import functions
-from pdf import PDFFormat
-
+from pdf import PDFFormat, substitute_hyphens, fix_hanging
 
 
 def escape(really):
@@ -85,9 +75,9 @@ class EduModule(Xmill):
             if self.options['strofa']:
                 txt = txt.replace("/\n", '<ctrl ch="\\"/>')
             return txt
+        self.register_text_filter(swap_endlines)
         self.register_text_filter(functions.substitute_entities)
         self.register_text_filter(mark_alien_characters)
-        self.register_text_filter(swap_endlines)
 
     def get_dc(self, element, dc_field, single=False):
         values = map(lambda t: t.text, element.xpath("//dc:%s" % dc_field, namespaces={'dc': DCNS.uri}))
@@ -204,6 +194,7 @@ class EduModule(Xmill):
     handle_srodtytul = \
     handle_tytul_dziela = \
     handle_wyroznienie = \
+    handle_dywiz = \
     handle_texcommand
 
     def handle_uwaga(self, _e):
@@ -211,6 +202,9 @@ class EduModule(Xmill):
     def handle_extra(self, _e):
         return None
 
+    def handle_nbsp(self, _e):
+        return '<spec cat="tilde" />'
+
     _handle_strofa = cmd("strofa")
 
     def handle_strofa(self, element):
@@ -272,14 +266,17 @@ class EduModule(Xmill):
         return
 
     def handle_lista(self, element, attrs={}):
-        if not element.findall("punkt"):
-            return None
         ltype = element.attrib.get('typ', 'punkt')
+        if not element.findall("punkt"):
+            if ltype == 'czytelnia':
+                return 'W przygotowaniu.'
+            else:
+                return None
         if ltype == 'slowniczek':
             surl = element.attrib.get('src', None)
             if surl is None:
                 # print '** missing src on <slowniczek>, setting default'
-                surl = 'http://edukacjamedialna.edu.pl/slowniczek'
+                surl = 'http://edukacjamedialna.edu.pl/lekcje/slowniczek/'
             sxml = None
             if surl:
                 sxml = etree.fromstring(self.options['wldoc'].provider.by_uri(surl).get_string())
@@ -599,6 +596,9 @@ class EduModulePDFFormat(PDFFormat):
     style = get_resource('res/styles/edumed/pdf/edumed.sty')
 
     def get_texml(self):
+        substitute_hyphens(self.wldoc.edoc)
+        fix_hanging(self.wldoc.edoc)
+
         self.attachments = {}
         edumod = EduModule({
             "wldoc": self.wldoc,
index a936ef7..b25a99d 100755 (executable)
@@ -1,3 +1,4 @@
+\usepackage[MeX]{polski}
 
 \newcommand{\activitycounter}[1]{\vspace{1em}\par{\huge{#1}}}
 
     \color{theme}
     \noindent \rule{\linewidth}{0.4pt}
 
-    \rightsinfo
-    \vspace{.6em}
-
-
 Tekst: \authorstextbook, scenariusz: \authorsscenario, konsultacja merytoryczna: \authorsexpert.
 Materiał pochodzi z serwisu \href{http://edukacjamedialna.edu.pl}{edukacjamedialna.edu.pl} prowadzonego przez 
 \href{http://nowoczesnapolska.org.pl}{Fundację Nowoczesna Polska}.