X-Git-Url: https://git.mdrn.pl/librarian.git/blobdiff_plain/18a72965fc7b90155130e87d4f1a4dd4aa354549..a7133c06fd9738c11a2bf60b4fc09365d15da1d7:/librarian/pdf/wl2tex.xslt?ds=inline diff --git a/librarian/pdf/wl2tex.xslt b/librarian/pdf/wl2tex.xslt old mode 100644 new mode 100755 index c3abdd6..f36172d --- a/librarian/pdf/wl2tex.xslt +++ b/librarian/pdf/wl2tex.xslt @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - + This file is part of Librarian, licensed under GNU Affero GPLv3 or later. Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information. - + --> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:wl="http://wolnelektury.pl/functions" @@ -15,22 +15,24 @@ <xsl:template match="utwor"> <TeXML xmlns="http://getfo.sourceforge.net/texml/ns1"> <TeXML escape="0"> - \documentclass[a4paper, oneside, 11pt]{book} - \usepackage{wl} - </TeXML> + \documentclass[<xsl:value-of select="wl:get('customization_str')"/>]{wl} + \usepackage{style} + <xsl:if test="wl:get('has_cover')"> + \usepackage{makecover} + </xsl:if> <xsl:choose> - <xsl:when test="@morefloats = 'new'"> + <xsl:when test="wl:get('morefloats') = 'new'"> <TeXML escape="0"> \usepackage[maxfloats=64]{morefloats} </TeXML> </xsl:when> - <xsl:when test="@morefloats = 'old'"> + <xsl:when test="wl:get('morefloats') = 'old'"> <TeXML escape="0"> \usepackage{morefloats} </TeXML> </xsl:when> - <xsl:when test="@morefloats = 'none'" /> + <xsl:when test="wl:get('morefloats') = 'none'" /> <xsl:otherwise> <TeXML escape="0"> \IfFileExists{morefloats.sty}{ @@ -44,37 +46,81 @@ <xsl:apply-templates select="powiesc|opowiadanie|liryka_l|liryka_lp|dramat_wierszowany_l|dramat_wierszowany_lp|dramat_wspolczesny" mode='titlepage' /> <env name="document"> + <xsl:if test="wl:get('has_cover')"> + <cmd name="makecover"> + <parm><xsl:value-of select="210 * wl:get('cover', 'width') div wl:get('cover', 'height')" />mm</parm> + <parm>210mm</parm> + </cmd> + </xsl:if> <cmd name="maketitle" /> - <xsl:choose> + <cmd name="tytul"><parm> + <xsl:choose> <xsl:when test="(powiesc|opowiadanie|liryka_l|liryka_lp|dramat_wierszowany_l|dramat_wierszowany_lp|dramat_wspolczesny)/nazwa_utworu"> - <xsl:apply-templates select="(powiesc|opowiadanie|liryka_l|liryka_lp|dramat_wierszowany_l|dramat_wierszowany_lp|dramat_wspolczesny)/autor_utworu" mode="title" /> <!-- title in master --> + <xsl:apply-templates select="(powiesc|opowiadanie|liryka_l|liryka_lp|dramat_wierszowany_l|dramat_wierszowany_lp|dramat_wspolczesny)/autor_utworu" mode="title" /> + <xsl:apply-templates select="(powiesc|opowiadanie|liryka_l|liryka_lp|dramat_wierszowany_l|dramat_wierszowany_lp|dramat_wspolczesny)/dzielo_nadrzedne" mode="title" /> + <xsl:apply-templates select="(powiesc|opowiadanie|liryka_l|liryka_lp|dramat_wierszowany_l|dramat_wierszowany_lp|dramat_wspolczesny)/nazwa_utworu" mode="title" /> + <xsl:apply-templates select="(powiesc|opowiadanie|liryka_l|liryka_lp|dramat_wierszowany_l|dramat_wierszowany_lp|dramat_wspolczesny)/podtytul" mode="title" /> + <!-- dc in master or not --> + <cmd name="translatorsline" /> </xsl:when> <xsl:otherwise> <!-- look for author title in dc --> <xsl:apply-templates select="rdf:RDF" mode="firstdctitle" /> <xsl:apply-templates select="powiesc|opowiadanie|liryka_l|liryka_lp|dramat_wierszowany_l|dramat_wierszowany_lp|dramat_wspolczesny" mode='firstdctitle' /> </xsl:otherwise> - </xsl:choose> + </xsl:choose> + </parm></cmd> <xsl:apply-templates select="powiesc|opowiadanie|liryka_l|liryka_lp|dramat_wierszowany_l|dramat_wierszowany_lp|dramat_wspolczesny" /> <xsl:apply-templates select="utwor" mode="part" /> + + <TeXML escape="0"> + \def\coverby{ + <TeXML escape="1"> + <xsl:if test="wl:get('has_cover') and wl:get('wldoc', 'book_info', 'cover_by')"> + <!-- FIXME: should be stylable --> + OkÅadka na podstawie: + <xsl:choose> + <xsl:when test="wl:get('wldoc', 'book_info', 'cover_source')"> + <cmd name="href"><parm> + <xsl:value-of select="wl:get('wldoc', 'book_info', 'cover_source')" /> + </parm><parm> + <xsl:value-of select="wl:get('wldoc', 'book_info', 'cover_by')" /> + </parm></cmd> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="wl:get('wldoc', 'book_info', 'cover_by')" /> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + </TeXML> + } + \def\editors{<TeXML escape="1"><xsl:call-template name="editors" /></TeXML>} + </TeXML> + + <cmd name="editorialsection" /> + </env> + </TeXML> </TeXML> </xsl:template> <xsl:template match="utwor" mode="part"> - <!-- title for empty dc --> - <xsl:choose> + <cmd name="tytul"><parm> + <xsl:choose> <xsl:when test="(powiesc|opowiadanie|liryka_l|liryka_lp|dramat_wierszowany_l|dramat_wierszowany_lp|dramat_wspolczesny)/nazwa_utworu"> <!-- title in master --> + <xsl:apply-templates select="(powiesc|opowiadanie|liryka_l|liryka_lp|dramat_wierszowany_l|dramat_wierszowany_lp|dramat_wspolczesny)/nazwa_utworu" mode="title" /> + <xsl:apply-templates select="(powiesc|opowiadanie|liryka_l|liryka_lp|dramat_wierszowany_l|dramat_wierszowany_lp|dramat_wspolczesny)/podtytul" mode="title" /> </xsl:when> <xsl:otherwise> <!-- look for title in dc --> <xsl:apply-templates select="rdf:RDF" mode="dctitle" /> <xsl:apply-templates select="powiesc|opowiadanie|liryka_l|liryka_lp|dramat_wierszowany_l|dramat_wierszowany_lp|dramat_wspolczesny" mode='dctitle' /> </xsl:otherwise> - </xsl:choose> + </xsl:choose> + </parm></cmd> <xsl:apply-templates select="powiesc|opowiadanie|liryka_l|liryka_lp|dramat_wierszowany_l|dramat_wierszowany_lp|dramat_wspolczesny" /> <xsl:apply-templates select="utwor" mode="part" /> @@ -90,21 +136,32 @@ </xsl:template> <xsl:template match="rdf:RDF" mode="titlepage"> - <cmd name='title'><parm> - <xsl:apply-templates select=".//dc:title/node()" mode="inline" /> - </parm></cmd> - <cmd name='author'><parm> - <xsl:apply-templates select=".//dc:creator_parsed/node()" mode="inline" /> - </parm></cmd> <TeXML escape="0"> - \def\sourceinfo{<xsl:apply-templates select=".//dc:source" mode="inline" />} - \def\bookurl{<xsl:value-of select=".//dc:identifier.url" />} - \def\rightsinfo{Ten utwór nie jest chroniony prawem autorskim i~znajduje siÄ w~domenie publicznej, - co oznacza, że możesz go swobodnie wykorzystywaÄ, publikowaÄ i~rozpowszechniaÄ.} - <xsl:if test=".//dc:rights.license"> - \def\rightsinfo{Ten utwór jest udostepniony na licencji - \href{<xsl:value-of select=".//dc:rights.license" />}{<xsl:value-of select=".//dc:rights" />}.} - </xsl:if> + \def\authors{<TeXML escape="1"><xsl:call-template name="authors" /></TeXML>} + \author{\authors} + \title{<TeXML escape="1"><xsl:apply-templates select=".//dc:title" mode="inline" /></TeXML>} + \def\translatorsline{<TeXML escape="1"><xsl:call-template name="translators" /></TeXML>} + + \def\bookurl{<TeXML escape="1"><xsl:value-of select=".//dc:identifier.url" /></TeXML>} + + \def\rightsinfo{<TeXML excape="1"> + <cmd name="rightsinfostr"> + <xsl:if test=".//dc:rights.license"> + <opt><xsl:value-of select=".//dc:rights.license" /></opt> + </xsl:if> + <parm><xsl:value-of select=".//dc:rights" /></parm> + </cmd> + </TeXML>} + + <!-- FIXME: should be stylable --> + \def\sourceinfo{<TeXML excape="1"> + <xsl:if test=".//dc:source"> + Tekst opracowany na podstawie: <xsl:apply-templates select=".//dc:source" mode="inline" /> + \vspace{.6em} + </xsl:if> + </TeXML>} + \def\description{<TeXML excape="1"> + <xsl:apply-templates select=".//dc:description" mode="inline" /></TeXML>} </TeXML> </xsl:template> @@ -129,12 +186,11 @@ </xsl:template> <xsl:template match="rdf:RDF" mode="firstdctitle"> - <cmd name="autorutworu"><parm> - <xsl:apply-templates select=".//dc:creator_parsed/node()" mode="inline" /> - </parm></cmd> + <cmd name="autorutworu"><parm><cmd name="authors"/></parm></cmd> <cmd name="nazwautworu"><parm> <xsl:apply-templates select=".//dc:title/node()" mode="inline" /> </parm></cmd> + <cmd name="translatorsline" /> </xsl:template> @@ -147,7 +203,7 @@ <!-- = (can contain other block tags, paragraph tags, standalone tags and special tags) = --> <!-- ==================================================================================== --> -<xsl:template +<xsl:template match="powiesc|opowiadanie|liryka_l|liryka_lp|dramat_wierszowany_l|dramat_wierszowany_lp|dramat_wspolczesny|nota|dedykacja|dlugi_cytat|poezja_cyt|motto"> <cmd> <xsl:attribute name="name"> @@ -177,15 +233,20 @@ <!-- ========================================== --> <!-- only in root --> -<xsl:template match="autor_utworu" mode="title"> - <cmd name="autorutworu"><parm> - <xsl:apply-templates mode="inline" /> - </parm></cmd> +<xsl:template + match="autor_utworu|dzielo_nadrzedne|nazwa_utworu|podtytul" + mode="title"> + <cmd> + <xsl:attribute name="name"> + <xsl:value-of select="wl:texcommand(name())" /> + </xsl:attribute> + <parm><xsl:apply-templates mode="inline"/></parm> + </cmd> </xsl:template> -<xsl:template - match="nazwa_utworu|podtytul|naglowek_akt|naglowek_czesc|srodtytul|naglowek_osoba|naglowek_podrozdzial|naglowek_scena|naglowek_rozdzial|miejsce_czas|didaskalia|lista_osoba|akap|akap_dialog|akap_cd|motto_podpis|naglowek_listy"> +<xsl:template + match="naglowek_akt|naglowek_czesc|srodtytul|naglowek_osoba|naglowek_podrozdzial|naglowek_scena|naglowek_rozdzial|miejsce_czas|didaskalia|lista_osoba|akap|akap_dialog|akap_cd|motto_podpis|naglowek_listy"> <cmd> <xsl:attribute name="name"> <xsl:value-of select="wl:texcommand(name())" /> @@ -305,6 +366,32 @@ </cmd> </xsl:template> +<xsl:template name="authors"> + <xsl:for-each select=".//dc:creator_parsed"> + <xsl:if test="position() != 1">, </xsl:if> + <xsl:apply-templates mode="inline" /> + </xsl:for-each> +</xsl:template> + +<xsl:template name="editors"> + <xsl:if test="@editors"> + <xsl:text>Opracowanie redakcyjne i przypisy: </xsl:text> + <xsl:value-of select="@editors" /> + <xsl:text>.</xsl:text> + </xsl:if> +</xsl:template> + +<xsl:template name="translators"> + <xsl:if test=".//dc:contributor.translator_parsed"> + <cmd name='translator'><parm> + <xsl:for-each select=".//dc:contributor.translator_parsed"> + <xsl:if test="position() != 1">, </xsl:if> + <xsl:apply-templates mode="inline" /> + </xsl:for-each> + </parm></cmd> + </xsl:if> +</xsl:template> + <!-- ============== --> <!-- = ADDED TAGS = --> @@ -351,4 +438,4 @@ </xsl:template> -</xsl:stylesheet> \ No newline at end of file +</xsl:stylesheet>