option handling in book2pdf, ilustrations, <latex> verbatim tag
authorMarcin Koziej <marcinkoziej@nowoczesnapolska.org.pl>
Wed, 14 Aug 2013 15:10:10 +0000 (17:10 +0200)
committerMarcin Koziej <marcinkoziej@nowoczesnapolska.org.pl>
Wed, 14 Aug 2013 15:10:32 +0000 (17:10 +0200)
librarian/pdf.py
librarian/pdf/wl2tex.xslt
librarian/pdf/wlpub.cls
scripts/book2pdf

index 9fb92b1..20daec8 100644 (file)
@@ -13,6 +13,7 @@ from __future__ import with_statement
 import os
 import os.path
 import shutil
+from distutils.dir_util import copy_tree # shutil.copytree is so uncapable.
 from StringIO import StringIO
 from tempfile import mkdtemp, NamedTemporaryFile
 import re
@@ -183,17 +184,20 @@ def package_available(package, args='', verbose=False):
     return p == 0
 
 
-def transform(wldoc, verbose=False, save_tex=None, morefloats=None,
-              cover=None, flags=None, customizations=None):
+def transform(wldoc, verbose=False, save_tex=None, save_texml=None, morefloats=None,
+              cover=None, flags=None, customizations=None, documentclass='wl', resources=None):
     """ produces a PDF file with XeLaTeX
 
     wldoc: a WLDocument
     verbose: prints all output from LaTeX
     save_tex: path to save the intermediary LaTeX file to
+    save_texml: path to save the intermediary TeXML file to
     morefloats (old/new/none): force specific morefloats
     cover: a cover.Cover factory or True for default
     flags: less-advertising,
     customizations: user requested customizations regarding various formatting parameters (passed to wl LaTeX class)
+    documentclass: LaTeX document class, defaults to wl
+    resources: a directory with resources, copied to place where LaTeX compilation is made
     """
 
     # Parse XSLT
@@ -228,6 +232,8 @@ def transform(wldoc, verbose=False, save_tex=None, morefloats=None,
         if customizations is not None:
             root.set('customizations', u','.join(customizations))
 
+        root.set('documentclass', documentclass)
+
         # add editors info
         root.set('editors', u', '.join(sorted(
             editor.readable() for editor in document.editors())))
@@ -245,6 +251,9 @@ def transform(wldoc, verbose=False, save_tex=None, morefloats=None,
 
         texml = document.transform(style)
 
+        if save_texml:
+            texml.write(save_texml)
+
         # TeXML -> LaTeX
         temp = mkdtemp('-wl2pdf')
 
@@ -265,7 +274,10 @@ def transform(wldoc, verbose=False, save_tex=None, morefloats=None,
 
         # LaTeX -> PDF
         shutil.copy(get_resource('pdf/wl.cls'), temp)
+        shutil.copy(get_resource('pdf/wlpub.cls'), temp)
         shutil.copy(get_resource('res/wl-logo.png'), temp)
+        if resources:
+            copy_tree(resources, temp)
 
         try:
             cwd = os.getcwd()
index 58bb68d..9663bf5 100644 (file)
@@ -15,7 +15,7 @@
 <xsl:template match="utwor">
     <TeXML xmlns="http://getfo.sourceforge.net/texml/ns1">
         <TeXML escape="0">
-        \documentclass[<xsl:value-of select="@customizations"/>]{wl}
+        \documentclass[<xsl:value-of select="@customizations"/>]{<xsl:value-of select="@documentclass"/>}
 
         <!-- flags and values set on root -->
 
     </cmd>
 </xsl:template>
 
+<xsl:strip-space elements="ilustr"/>
 <xsl:template match="ilustr">
     <cmd>
         <xsl:attribute name="name">
             <xsl:value-of select="wl:texcommand(name())" />
         </xsl:attribute>
-               <parm><xsl:value-of select="@src" /></parm>
+       <parm><TeXML escape="0"><xsl:value-of select="normalize-space(@src)" /></TeXML></parm>
         <parm><xsl:apply-templates mode="inline" /></parm>
     </cmd>
 </xsl:template>
   </math>
 </xsl:template>
 
+<xsl:template match="latex" mode="inline">
+  <TeXML escape="0">
+    <xsl:apply-templates select="@*|node()" mode="identity"/>
+  </TeXML>
+</xsl:template>
+
 <xsl:template match="tablewrap">
   <cmd name="begin"><parm>table</parm><opt>h!</opt></cmd>
   <xsl:apply-templates select="table"/>
index 05f2aba..d5154e1 100644 (file)
@@ -94,6 +94,7 @@
 \usepackage{fontspec}
 \usepackage{xunicode}
 \usepackage{xltxtra}
+\usepackage{trimspaces}
 
 \usepackage[overload]{textcase}
 \usepackage{scalefnt}
@@ -190,6 +191,8 @@ Mapping=tex-text
   \parindent 1em\noindent \hb@xt@ 1.8em{\hss \@makefnmark \enskip}#1.
 }
 
+\def\trimspace#1{\trim@spaces{#1}}
+
 \makeatother
 
 
@@ -635,6 +638,15 @@ Mapping=tex-text
 \vspace{10pt}%
 }
 
+\newcommand{\ilustr}[2]{
+  \vspace{1em}%
+  \begin{center}%
+    \par{\includegraphics[width=\textwidth]{\trimspace{#1}}\\#2}%
+  \end{center}%
+  \vspace{1em}%
+}
+
+
 \newcommand{\motyw}[2][0]{%
 \ifshowthemes
 \mbox{}%
index 11c5c04..b4559b4 100755 (executable)
@@ -14,11 +14,17 @@ class Book2Pdf(Book2Anything):
     ext = "pdf"
     uses_cover = True
     uses_provider = True
-    transform_args = [
+    transform_options = [
         Option('-t', '--save-tex', dest='save_tex', metavar='FILE',
                 help='path to save the intermediary LaTeX file to'),
+        Option('-x', '--save-texml', dest='save_texml', metavar='FILE',
+                help='path to save the intermediary TeXML file to'),
         Option('-m', '--morefloats', dest='morefloats', metavar='old/new/none',
-                help='force morefloats in old (<1.0c), new (>=1.0c) or none')
+                help='force morefloats in old (<1.0c), new (>=1.0c) or none'),
+        Option('-R', '--resources', dest='resources', metavar='DIR',
+                help='a directory with additional resources'),
+        Option('-D', '--documentclass', dest='documentclass', 
+               help='LaTeX document class, defaults to "wl"')
     ]