Fixes #3952.
[librarian.git] / librarian / pdf / wl2tex.xslt
index 85375a2..8a1eb08 100644 (file)
                 </xsl:otherwise>
               </xsl:choose>
             </parm></cmd>
                 </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" />
 
             <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" />
 
       <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: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>
             <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>
 </xsl:template>
 
 <xsl:template match="rdf:RDF" mode="dctitle">
 </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>
         <xsl:apply-templates select=".//dc:title/node()" mode="inline" />
     </parm></cmd>
 </xsl:template>
 <!-- ==================================================================================== -->
 
 <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">
+    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())" />
     <cmd>
         <xsl:attribute name="name">
             <xsl:value-of select="wl:texcommand(name())" />
     </cmd>
 </xsl:template>
 
     </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
 
 <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_dialog|akap_cd|motto_podpis|naglowek_listy|srodtytul">
+    <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="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>
     <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">
     </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>
         <parm><cmd name="linewidth" /></parm>
         <parm><xsl:apply-templates select="." /></parm>
     </env>
     </xsl:for-each>
 </xsl:template>
 
     </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>
 <xsl:template name="editors">
     <xsl:if test="@editors">
         <xsl:text>Opracowanie redakcyjne i przypisy: </xsl:text>
     </xsl:if>
 </xsl:template>
 
     </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>
 <xsl:template match="data-sponsor" mode="sponsor">
     <cmd name="par"><parm>
     <xsl:choose>