X-Git-Url: https://git.mdrn.pl/librarian.git/blobdiff_plain/882cbae7275aed205648b3f6167255fb24eb8786..1fdd33e6b409ee5c034915d121f773f007b95b9f:/librarian/pdf/wl2tex.xslt diff --git a/librarian/pdf/wl2tex.xslt b/librarian/pdf/wl2tex.xslt index d39dea5..58d2d81 100644 --- a/librarian/pdf/wl2tex.xslt +++ b/librarian/pdf/wl2tex.xslt @@ -89,6 +89,16 @@ </xsl:otherwise> </xsl:choose> </parm></cmd> + <xsl:if test="//utwor//utwor or //naglowek_czesc or //naglowek_akt or //srodtytul or //naglowek_scena or //naglowek_rozdzial"> + <cmd name="ifshowtoc" /> + <cmd name="setcounter" > + <parm>tocdepth</parm> + <parm>3</parm> + </cmd> + <cmd name="tableofcontents" /> + <cmd name="clearpage" /> + <cmd name="fi" /> + </xsl:if> <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" /> @@ -141,7 +151,7 @@ <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)/nazwa_utworu" mode="part_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> @@ -182,7 +192,7 @@ \href{http://creativecommons.org/licenses/by-sa/3.0/}{Creative Commons Uznanie Autorstwa â Na Tych Samych Warunkach 3.0 PL}.} <xsl:if test=".//dc:rights.license"> - \def\rightsinfo{Ten utwór jest udostepniony na licencji + \def\rightsinfo{Ten utwór jest udostÄpniony na licencji \href{<xsl:value-of select=".//dc:rights.license" />}{<TeXML escape="1"><xsl:apply-templates select=".//dc:rights" mode="inline" /></TeXML>}.} </xsl:if> @@ -195,7 +205,7 @@ <xsl:if test=".//dc:publisher"> Wydawca: <TeXML escape="1"> - <xsl:for-each select="//dc:publisher/text()"> + <xsl:for-each select=".//dc:publisher/text()"> <xsl:value-of select="."/> <xsl:if test="not(position() = last())">, </xsl:if> </xsl:for-each> @@ -203,6 +213,10 @@ \vspace{.6em} </xsl:if>} \def\description{<TeXML escape="1"><xsl:apply-templates select=".//dc:description" mode="inline" /></TeXML>} + <xsl:if test=".//meta[@id='pdf-id']"> + <xsl:variable name="isbn" select=".//meta[@id='pdf-id']"/> + \def\isbn{ISBN <xsl:value-of select="substring-after($isbn, 'ISBN-')"/>} + </xsl:if> </TeXML> </xsl:template> @@ -217,7 +231,15 @@ </xsl:template> <xsl:template match="rdf:RDF" mode="dctitle"> - <cmd name="nazwapodutworu"><parm> + <xsl:if test="../../rdf:RDF//use_subauthor"> + <cmd name="autorpodutworu"> + <parm><xsl:call-template name="authors" /></parm> + </cmd> + </xsl:if> + <cmd name="nazwanadpodutworu"><parm> + <xsl:apply-templates select=".//dc:title/node()" mode="inline" /> + </parm> + <parm> <xsl:apply-templates select=".//dc:title/node()" mode="inline" /> </parm></cmd> </xsl:template> @@ -245,7 +267,7 @@ <!-- ==================================================================================== --> <xsl:template - match="powiesc|opowiadanie|liryka_l|liryka_lp|dramat_wierszowany_l|dramat_wierszowany_lp|dramat_wspolczesny|nota|dedykacja|dlugi_cytat|poezja_cyt|motto"> + match="powiesc|opowiadanie|liryka_l|liryka_lp|dramat_wierszowany_l|dramat_wierszowany_lp|dramat_wspolczesny|nota|dedykacja|dlugi_cytat|poezja_cyt|motto|ramka"> <cmd> <xsl:attribute name="name"> <xsl:value-of select="wl:texcommand(name())" /> @@ -291,9 +313,21 @@ </cmd> </xsl:template> +<xsl:template match="nazwa_utworu" mode="part_title"> + <xsl:if test="../../rdf:RDF//use_subauthor"> + <cmd name="autorpodutworu"><parm><xsl:call-template name="authors2"/></parm></cmd> + </xsl:if> + <cmd name="nazwapodutworu"> + <parm><xsl:apply-templates mode="inline"/></parm> + <parm> + <xsl:call-template name="strip-for-toc" /> + </parm> + </cmd> +</xsl:template> + <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"> + match="naglowek_osoba|naglowek_podrozdzial|miejsce_czas|didaskalia|lista_osoba|akap|akap_diafrlog|akap_cd|motto_podpis|naglowek_listy|srodtytul"> <cmd> <xsl:attribute name="name"> <xsl:value-of select="wl:texcommand(name())" /> @@ -302,13 +336,33 @@ </cmd> </xsl:template> +<xsl:template match="naglowek_czesc|naglowek_rozdzial|naglowek_akt|naglowek_scena"> + <cmd> + <xsl:attribute name="name"> + <xsl:value-of select="wl:texcommand(name())" /> + </xsl:attribute> + <parm><xsl:apply-templates mode="inline"/></parm> + <parm> + <xsl:call-template name="strip-for-toc" /> + </parm> + </cmd> +</xsl:template> + +<xsl:template match="strofa" mode="inline"> + <env name="minipage"> + <opt>t</opt> + <parm><cmd name="linewidth" /></parm> + <parm><xsl:apply-templates select="." /></parm> + </env> +</xsl:template> + <xsl:template match="strofa"> <cmd name="strofa"><parm> <xsl:choose> <xsl:when test="count(br) > 0"> <xsl:call-template name="verse"> <xsl:with-param name="verse-content" select="br[1]/preceding-sibling::text() | br[1]/preceding-sibling::node()" /> - <xsl:with-param name="verse-type" select="br[1]/preceding-sibling::*[name() = 'wers_wciety' or name() = 'wers_akap' or name() = 'wers_cd'][1]" /> + <xsl:with-param name="verse-type" select="br[1]/preceding-sibling::*[name() = 'wers_wciety' or name() = 'wers_akap' or name() = 'wers_cd' or name() = 'wers_do_prawej'][1]" /> </xsl:call-template> <xsl:for-each select="br"> <TeXML escape="0">\\{}</TeXML> @@ -317,14 +371,14 @@ <xsl:call-template name="verse"> <xsl:with-param name="verse-content" select="following-sibling::text()[count(preceding-sibling::br) = $lnum+1] | following-sibling::node()[count(preceding-sibling::br) = $lnum+1]" /> - <xsl:with-param name="verse-type" select="following-sibling::*[count(preceding-sibling::br) = $lnum+1 and (name() = 'wers_wciety' or name() = 'wers_akap' or name() = 'wers_cd')][1]" /> + <xsl:with-param name="verse-type" select="following-sibling::*[count(preceding-sibling::br) = $lnum+1 and (name() = 'wers_wciety' or name() = 'wers_akap' or name() = 'wers_cd' or name() = 'wers_do_prawej')][1]" /> </xsl:call-template> </xsl:for-each> </xsl:when> <xsl:otherwise> <xsl:call-template name="verse"> <xsl:with-param name="verse-content" select="text() | node()" /> - <xsl:with-param name="verse-type" select="wers_wciety|wers_akap|wers_cd[1]" /> + <xsl:with-param name="verse-type" select="wers_wciety|wers_akap|wers_cd|wers_do_prawej[1]" /> </xsl:call-template> </xsl:otherwise> </xsl:choose> @@ -358,7 +412,7 @@ <!-- ================================================ --> <xsl:template mode="inline" - match="pa|pe|pr|pt|mat|didask_tekst|slowo_obce|wyroznienie|osoba"> + match="pa|pe|pr|pt|mat|didask_tekst|slowo_obce|wyroznienie|osoba|indeks_dolny|wieksze_odstepy"> <cmd> <xsl:attribute name="name"> <xsl:value-of select="wl:texcommand(name())" /> @@ -420,6 +474,13 @@ </xsl:for-each> </xsl:template> +<xsl:template name="authors2"> + <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> @@ -439,6 +500,28 @@ </xsl:if> </xsl:template> +<xsl:template name="strip-for-toc"> + <xsl:for-each select="./text() | nbsp | dywiz | alien | slowo_obce"> + <xsl:choose> + <xsl:when test="name() = 'nbsp'"> + <xsl:text> </xsl:text> + </xsl:when> + <xsl:when test="name() = 'dywiz'"> + <xsl:text>-</xsl:text> + </xsl:when> + <xsl:when test="name() = 'alien'"> + <xsl:apply-templates mode="inline" /> + </xsl:when> + <xsl:when test="name() = 'slowo_obce'"> + <xsl:call-template name="strip-for-toc" /> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="."/> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> +</xsl:template> + <xsl:template match="data-sponsor" mode="sponsor"> <cmd name="par"><parm> <xsl:choose> @@ -472,7 +555,13 @@ <cmd name="par" /> <cmd name="vspace"><parm>1em</parm></cmd> <group><cmd name="raggedright" /> - <env name="longtabu"> to <TeXML escape="0">\textwidth </TeXML> + <xsl:element name="env"> + <xsl:attribute name="name"> + <xsl:choose> + <xsl:when test="name(.)='tabela'">longtabu</xsl:when> + <xsl:otherwise>tabu</xsl:otherwise> + </xsl:choose> + </xsl:attribute> to <TeXML escape="0">\textwidth </TeXML> <!--parm><cmd name="textwidth"/></parm--> <parm><TeXML escape="0"><xsl:value-of select="@_format" /></TeXML></parm> <xsl:choose> @@ -484,7 +573,7 @@ <xsl:apply-templates/> </xsl:otherwise> </xsl:choose> - </env> + </xsl:element> </group> <cmd name="vspace"><parm>1em</parm></cmd> </xsl:template>