浏览代码

Print output: added graphics and background color to admonitions, shaded screen.

git-svn-id: http://svn.linuxfromscratch.org/LFS/trunk/BOOK@4025 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689
Manuel Canales Esparcia 21 年之前
父节点
当前提交
a112251b96

+ 3 - 13
stylesheets/lfs-print.xsl

@@ -11,6 +11,8 @@
     <!-- Including our others customized templates -->
     <!-- Including our others customized templates -->
   <xsl:include href="print/lfs-index.xsl"/>
   <xsl:include href="print/lfs-index.xsl"/>
   <xsl:include href="print/lfs-pagesetup.xsl"/>
   <xsl:include href="print/lfs-pagesetup.xsl"/>
+  <xsl:include href="print/lfs-sections.xsl"/>
+  <xsl:include href="print/lfs-mixed.xsl"/>
 
 
     <!-- Paper size required by the publisher -->
     <!-- Paper size required by the publisher -->
   <xsl:param name="paper.type" select="'Customized'"/>
   <xsl:param name="paper.type" select="'Customized'"/>
@@ -35,22 +37,10 @@
   <xsl:param name="generate.section.toc.level" select="-1"></xsl:param>
   <xsl:param name="generate.section.toc.level" select="-1"></xsl:param>
   <xsl:param name="toc.indent.width" select="18"></xsl:param>
   <xsl:param name="toc.indent.width" select="18"></xsl:param>
 
 
-    <!-- Page number in Xref-->
+    <!-- Page number in Xref ?-->
   <xsl:param name="insert.xref.page.number">no</xsl:param>
   <xsl:param name="insert.xref.page.number">no</xsl:param>
-  <xsl:template match="*" mode="page.citation">
-    <xsl:param name="id" select="'???'"/>
-    <fo:inline keep-together.within-line="always">
-      <!--<xsl:text>[p</xsl:text>-->
-      <fo:page-number-citation ref-id="{$id}"/>
-      <!--<xsl:text>]</xsl:text>-->
-    </fo:inline>
-  </xsl:template>
 
 
     <!-- Prevent duplicate e-mails in the Acknowledgments pages-->
     <!-- Prevent duplicate e-mails in the Acknowledgments pages-->
   <xsl:param name="ulink.show" select="0"/>
   <xsl:param name="ulink.show" select="0"/>
 
 
-    <!-- Sections numbering -->
-  <xsl:param name="section.autolabel" select="1"/>
-  <xsl:param name="section.label.includes.component.label" select="1"/>
-
 </xsl:stylesheet>
 </xsl:stylesheet>

+ 10 - 0
stylesheets/print/lfs-index.xsl

@@ -122,4 +122,14 @@
     </xsl:choose>
     </xsl:choose>
   </xsl:template>
   </xsl:template>
 
 
+    <!-- Page number in Index-->
+  <xsl:template match="*" mode="page.citation">
+    <xsl:param name="id" select="'???'"/>
+    <fo:inline keep-together.within-line="always">
+      <!--<xsl:text>[p</xsl:text>-->
+      <fo:page-number-citation ref-id="{$id}"/>
+      <!--<xsl:text>]</xsl:text>-->
+    </fo:inline>
+  </xsl:template>
+
 </xsl:stylesheet>
 </xsl:stylesheet>

+ 131 - 0
stylesheets/print/lfs-mixed.xsl

@@ -0,0 +1,131 @@
+<?xml version='1.0' encoding='ISO-8859-1'?>
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:fo="http://www.w3.org/1999/XSL/Format"
+                version="1.0">
+
+    <!-- Shade screen -->
+  <xsl:param name="shade.verbatim" select="1"/>
+
+    <!-- Graphics in admonitions -->
+  <xsl:param name="admon.graphics" select="1"/>
+  <xsl:param name="admon.graphics.path"
+    select="'/usr/share/xml/docbook/xsl-stylesheets-1.65.1/images/'"/>
+
+    <!-- Admonition block properties -->
+  <xsl:template match="important|warning|caution">
+    <xsl:choose>
+      <xsl:when test="$admon.graphics != 0">
+        <fo:block space-before.minimum="0.4em" space-before.optimum="0.6em"
+              space-before.maximum="0.8em" border-style="solid" border-width="1pt"
+              border-color="#500" background-color="#FFFFE6">
+        <xsl:call-template name="graphical.admonition"/>
+        </fo:block>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:call-template name="nongraphical.admonition"/>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+
+  <xsl:template match="note|tip">
+    <xsl:choose>
+      <xsl:when test="$admon.graphics != 0">
+        <fo:block space-before.minimum="0.4em" space-before.optimum="0.6em"
+              space-before.maximum="0.8em" border-style="solid" border-width="1pt"
+              border-color="#E0E0E0" background-color="#FFFFE6">
+        <xsl:call-template name="graphical.admonition"/>
+        </fo:block>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:call-template name="nongraphical.admonition"/>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+  
+    <!-- Admonitions text properties -->
+  <xsl:attribute-set name="admonition.properties">
+    <xsl:attribute name="margin-right">12pt</xsl:attribute>
+  </xsl:attribute-set>
+
+    <!-- Adding left space to the graphics and color to the titles -->
+  <xsl:template name="graphical.admonition">
+    <xsl:variable name="id">
+      <xsl:call-template name="object.id"/>
+    </xsl:variable>
+    <xsl:variable name="graphic.width">
+      <xsl:call-template name="admon.graphic.width"/>
+    </xsl:variable>
+    <fo:block id="{$id}">
+      <fo:list-block provisional-distance-between-starts="{$graphic.width} + 18pt"
+              provisional-label-separation="18pt" xsl:use-attribute-sets="list.block.spacing">
+        <fo:list-item>
+            <fo:list-item-label end-indent="label-end()">
+              <fo:block margin-left="4pt">
+                <fo:external-graphic width="auto" height="auto"
+                        content-width="{$graphic.width}" >
+                  <xsl:attribute name="src">
+                    <xsl:call-template name="admon.graphic"/>
+                  </xsl:attribute>
+                </fo:external-graphic>
+              </fo:block>
+            </fo:list-item-label>
+            <fo:list-item-body start-indent="body-start()">
+              <xsl:if test="$admon.textlabel != 0 or title">
+                <fo:block xsl:use-attribute-sets="admonition.title.properties">
+                  <xsl:if test="ancestor-or-self::important">
+                    <xsl:attribute name="color">#500</xsl:attribute>
+                  </xsl:if>
+                  <xsl:if test="ancestor-or-self::warning">
+                    <xsl:attribute name="color">#500</xsl:attribute>
+                  </xsl:if>
+                  <xsl:if test="ancestor-or-self::caution">
+                    <xsl:attribute name="color">#500</xsl:attribute>
+                  </xsl:if>
+                  <xsl:apply-templates select="." mode="object.title.markup"/>
+                </fo:block>
+              </xsl:if>
+              <fo:block xsl:use-attribute-sets="admonition.properties">
+                <xsl:apply-templates/>
+              </fo:block>
+            </fo:list-item-body>
+        </fo:list-item>
+      </fo:list-block>
+    </fo:block>
+  </xsl:template>
+
+    <!-- How is rendered by default a variablelist -->
+  <xsl:param name="variablelist.as.blocks" select="1"/>
+
+    <!-- Adding space before segmentedlist -->
+  <xsl:template match="segmentedlist">
+    <!--<xsl:variable name="presentation">
+      <xsl:call-template name="pi-attribute">
+        <xsl:with-param name="pis"
+                        select="processing-instruction('dbfo')"/>
+        <xsl:with-param name="attribute" select="'list-presentation'"/>
+      </xsl:call-template>
+    </xsl:variable>
+    <xsl:choose>
+      <xsl:when test="$presentation = 'table'">
+        <xsl:apply-templates select="." mode="seglist-table"/>
+      </xsl:when>
+      <xsl:when test="$presentation = 'list'">
+        <fo:block space-before.minimum="0.4em" space-before.optimum="0.6em"
+                space-before.maximum="0.8em">
+          <xsl:apply-templates/>
+        </fo:block>
+      </xsl:when>
+      <xsl:when test="$segmentedlist.as.table != 0">
+        <xsl:apply-templates select="." mode="seglist-table"/>
+      </xsl:when>
+      <xsl:otherwise>-->
+        <fo:block space-before.minimum="0.4em" space-before.optimum="0.6em"
+                space-before.maximum="0.8em">
+          <xsl:apply-templates/>
+        </fo:block>
+      <!--</xsl:otherwise>
+    </xsl:choose>-->
+  </xsl:template>
+
+</xsl:stylesheet>

+ 1 - 124
stylesheets/print/lfs-pagesetup.xsl

@@ -4,95 +4,6 @@
                 xmlns:fo="http://www.w3.org/1999/XSL/Format"
                 xmlns:fo="http://www.w3.org/1999/XSL/Format"
                 version="1.0">
                 version="1.0">
 
 
-    <!-- Force section1's onto a new page -->
-  <xsl:attribute-set name="section.level1.properties">
-    <xsl:attribute name="break-after">
-      <xsl:choose>
-        <xsl:when test="not(position()=last())">
-          <xsl:text>page</xsl:text>
-        </xsl:when>
-        <xsl:otherwise>
-          <xsl:text>auto</xsl:text>
-        </xsl:otherwise>
-      </xsl:choose>
-    </xsl:attribute>
-  </xsl:attribute-set>
-
-    <!-- Skip numeraration for sections with empty title -->
-  <xsl:template match="sect2|sect3|sect4|sect5" mode="label.markup">
-    <xsl:if test="string-length(title) > 0">
-      <!-- label the parent -->
-      <xsl:variable name="parent.label">
-        <xsl:apply-templates select=".." mode="label.markup"/>
-      </xsl:variable>
-      <xsl:if test="$parent.label != ''">
-        <xsl:apply-templates select=".." mode="label.markup"/>
-      <xsl:apply-templates select=".." mode="intralabel.punctuation"/>
-      </xsl:if>
-      <xsl:choose>
-        <xsl:when test="@label">
-          <xsl:value-of select="@label"/>
-        </xsl:when>
-        <xsl:when test="$section.autolabel != 0">
-          <xsl:choose>
-            <xsl:when test="local-name(.) = 'sect2'">
-              <xsl:choose>
-                <!-- If the first sect2 isn't numbered, renumber the remainig sections -->
-                <xsl:when test="string-length(../sect2[1]/title) = 0">
-                  <xsl:variable name="totalsect2">
-                    <xsl:number count="sect2"/>
-                  </xsl:variable>
-                  <xsl:number value="$totalsect2 - 1"/>
-                </xsl:when>
-                <xsl:otherwise>
-                  <xsl:number count="sect2"/>
-                </xsl:otherwise>
-              </xsl:choose>
-            </xsl:when>
-            <xsl:when test="local-name(.) = 'sect3'">
-              <xsl:number count="sect3"/>
-            </xsl:when>
-            <xsl:when test="local-name(.) = 'sect4'">
-              <xsl:number count="sect4"/>
-            </xsl:when>
-            <xsl:when test="local-name(.) = 'sect5'">
-              <xsl:number count="sect5"/>
-            </xsl:when>
-            <xsl:otherwise>
-              <xsl:message>label.markup: this can't happen!</xsl:message>
-            </xsl:otherwise>
-          </xsl:choose>
-        </xsl:when>
-      </xsl:choose>
-    </xsl:if>
-  </xsl:template>
-
-  <!-- Drop the trailing punctuation if title is empty -->
-  <xsl:template match="section|sect1|sect2|sect3|sect4|sect5|simplesect
-                      |bridgehead"
-                mode="object.title.template">
-    <xsl:choose>
-      <xsl:when test="$section.autolabel != 0">
-        <xsl:if test="string-length(title) > 0">
-          <xsl:call-template name="gentext.template">
-            <xsl:with-param name="context" select="'title-numbered'"/>
-            <xsl:with-param name="name">
-              <xsl:call-template name="xpath.location"/>
-            </xsl:with-param>
-          </xsl:call-template>
-        </xsl:if>
-      </xsl:when>
-      <xsl:otherwise>
-        <xsl:call-template name="gentext.template">
-          <xsl:with-param name="context" select="'title-unnumbered'"/>
-          <xsl:with-param name="name">
-            <xsl:call-template name="xpath.location"/>
-          </xsl:with-param>
-        </xsl:call-template>
-      </xsl:otherwise>
-    </xsl:choose>
-  </xsl:template>
-
     <!-- Header -->
     <!-- Header -->
   <xsl:template name="header.content">
   <xsl:template name="header.content">
     <xsl:param name="sequence" select="''"/>
     <xsl:param name="sequence" select="''"/>
@@ -138,7 +49,7 @@
   </xsl:template>
   </xsl:template>
 
 
   <xsl:template name="part.titlepage">
   <xsl:template name="part.titlepage">
-    <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
+    <fo:block>
       <fo:block space-before="2.5in">
       <fo:block space-before="2.5in">
         <xsl:call-template name="part.titlepage.before.recto"/>
         <xsl:call-template name="part.titlepage.before.recto"/>
         <xsl:call-template name="part.titlepage.recto"/>
         <xsl:call-template name="part.titlepage.recto"/>
@@ -190,39 +101,5 @@
     <!-- Dropping a blank page -->
     <!-- Dropping a blank page -->
   <xsl:template name="book.titlepage.separator"/>
   <xsl:template name="book.titlepage.separator"/>
 
 
-    <!-- How render a variablelist -->
-  <xsl:param name="variablelist.as.blocks" select="1"/>
-  
-    <!-- Adding space before segmentedlist -->
-  <xsl:template match="segmentedlist">
-    <xsl:variable name="presentation">
-      <xsl:call-template name="pi-attribute">
-        <xsl:with-param name="pis"
-                        select="processing-instruction('dbfo')"/>
-        <xsl:with-param name="attribute" select="'list-presentation'"/>
-      </xsl:call-template>
-    </xsl:variable>
-    <xsl:choose>
-      <xsl:when test="$presentation = 'table'">
-        <xsl:apply-templates select="." mode="seglist-table"/>
-      </xsl:when>
-      <xsl:when test="$presentation = 'list'">
-        <fo:block space-before.minimum="0.4em" space-before.optimum="0.6em"
-                space-before.maximum="0.8em">
-          <xsl:apply-templates/>
-        </fo:block>
-      </xsl:when>
-      <xsl:when test="$segmentedlist.as.table != 0">
-        <xsl:apply-templates select="." mode="seglist-table"/>
-      </xsl:when>
-      <xsl:otherwise>
-        <fo:block space-before.minimum="0.4em" space-before.optimum="0.6em"
-                space-before.maximum="0.8em">
-          <xsl:apply-templates/>
-        </fo:block>
-      </xsl:otherwise>
-    </xsl:choose>
-  </xsl:template>
-
 
 
 </xsl:stylesheet>
 </xsl:stylesheet>

+ 100 - 0
stylesheets/print/lfs-sections.xsl

@@ -0,0 +1,100 @@
+<?xml version='1.0' encoding='ISO-8859-1'?>
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:fo="http://www.w3.org/1999/XSL/Format"
+                version="1.0">
+
+     <!-- Force section1's onto a new page -->
+  <xsl:attribute-set name="section.level1.properties">
+    <xsl:attribute name="break-after">
+      <xsl:choose>
+        <xsl:when test="not(position()=last())">
+          <xsl:text>page</xsl:text>
+        </xsl:when>
+        <xsl:otherwise>
+          <xsl:text>auto</xsl:text>
+        </xsl:otherwise>
+      </xsl:choose>
+    </xsl:attribute>
+  </xsl:attribute-set>
+
+    <!-- Sections numbering -->
+  <xsl:param name="section.autolabel" select="1"/>
+  <xsl:param name="section.label.includes.component.label" select="1"/>
+
+    <!-- Skip numeraration for sections with empty title -->
+  <xsl:template match="sect2|sect3|sect4|sect5" mode="label.markup">
+    <xsl:if test="string-length(title) > 0">
+      <!-- label the parent -->
+      <xsl:variable name="parent.label">
+        <xsl:apply-templates select=".." mode="label.markup"/>
+      </xsl:variable>
+      <xsl:if test="$parent.label != ''">
+        <xsl:apply-templates select=".." mode="label.markup"/>
+      <xsl:apply-templates select=".." mode="intralabel.punctuation"/>
+      </xsl:if>
+      <xsl:choose>
+        <xsl:when test="@label">
+          <xsl:value-of select="@label"/>
+        </xsl:when>
+        <xsl:when test="$section.autolabel != 0">
+          <xsl:choose>
+            <xsl:when test="local-name(.) = 'sect2'">
+              <xsl:choose>
+                <!-- If the first sect2 isn't numbered, renumber the remainig sections -->
+                <xsl:when test="string-length(../sect2[1]/title) = 0">
+                  <xsl:variable name="totalsect2">
+                    <xsl:number count="sect2"/>
+                  </xsl:variable>
+                  <xsl:number value="$totalsect2 - 1"/>
+                </xsl:when>
+                <xsl:otherwise>
+                  <xsl:number count="sect2"/>
+                </xsl:otherwise>
+              </xsl:choose>
+            </xsl:when>
+            <xsl:when test="local-name(.) = 'sect3'">
+              <xsl:number count="sect3"/>
+            </xsl:when>
+            <xsl:when test="local-name(.) = 'sect4'">
+              <xsl:number count="sect4"/>
+            </xsl:when>
+            <xsl:when test="local-name(.) = 'sect5'">
+              <xsl:number count="sect5"/>
+            </xsl:when>
+            <xsl:otherwise>
+              <xsl:message>label.markup: this can't happen!</xsl:message>
+            </xsl:otherwise>
+          </xsl:choose>
+        </xsl:when>
+      </xsl:choose>
+    </xsl:if>
+  </xsl:template>
+
+  <!-- Drop the trailing punctuation if title is empty -->
+  <xsl:template match="section|sect1|sect2|sect3|sect4|sect5|simplesect
+                      |bridgehead"
+                mode="object.title.template">
+    <xsl:choose>
+      <xsl:when test="$section.autolabel != 0">
+        <xsl:if test="string-length(title) > 0">
+          <xsl:call-template name="gentext.template">
+            <xsl:with-param name="context" select="'title-numbered'"/>
+            <xsl:with-param name="name">
+              <xsl:call-template name="xpath.location"/>
+            </xsl:with-param>
+          </xsl:call-template>
+        </xsl:if>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:call-template name="gentext.template">
+          <xsl:with-param name="context" select="'title-unnumbered'"/>
+          <xsl:with-param name="name">
+            <xsl:call-template name="xpath.location"/>
+          </xsl:with-param>
+        </xsl:call-template>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+
+</xsl:stylesheet>