]> granicus.if.org Git - docbook-dsssl/commitdiff
Patch #510996: add support for two-colum indexes
authorNorman Walsh <ndw@nwalsh.com>
Mon, 11 Feb 2002 12:23:08 +0000 (12:23 +0000)
committerNorman Walsh <ndw@nwalsh.com>
Mon, 11 Feb 2002 12:23:08 +0000 (12:23 +0000)
xsl/fo/component.xsl
xsl/fo/index.xsl
xsl/fo/pagesetup.xsl
xsl/fo/param.ent
xsl/fo/param.xweb
xsl/fo/titlepage.templates.xml
xsl/params/column.count.of.index.xml [new file with mode: 0644]

index d4f7f458da58de172336cb7b5e881f8400b0deab..2814150169995603f7c423c8a7c8cc9a66876990 100644 (file)
@@ -17,6 +17,7 @@
 
 <xsl:template name="component.title">
   <xsl:param name="node" select="."/>
+  <xsl:param name="pagewide" select="0"/>
   <xsl:variable name="id">
     <xsl:call-template name="object.id">
       <xsl:with-param name="object" select="$node"/>
@@ -38,6 +39,9 @@
 
   <fo:block keep-with-next.within-column="always"
             hyphenate="false">
+    <xsl:if test="$pagewide != 0">
+      <xsl:attribute name="span">all</xsl:attribute>
+    </xsl:if>
     <xsl:copy-of select="$title"/>
   </fo:block>
 </xsl:template>
index 7e50e2e34e02fa5b48ba4a0ddcdff3c044ff1fad..c2ca705e9786e4cac6716277cb6cfbda2861ef91 100644 (file)
     <xsl:call-template name="object.id"/>
   </xsl:variable>
   <xsl:variable name="master-reference">
-    <xsl:call-template name="select.pagemaster"/>
+    <xsl:call-template name="select.pagemaster">
+      <xsl:with-param name="column.count"
+                      select="$column.count.of.index"/>
+    </xsl:call-template>
   </xsl:variable>
 
   <fo:page-sequence id="{$id}"
index aea9c2445d4abfd894484c83f00c7ddb4cc407c0..1db99007d4fd7e23ba73995c5d152f26a8aa57c1 100644 (file)
                            margin-bottom="{$page.margin.bottom}"
                            margin-left="{$page.margin.inner}"
                            margin-right="{$page.margin.outer}">
-      <fo:region-body
-                      column-count="{$column.count}"
-                      margin-bottom="{$body.margin.bottom}"
-                      margin-top="{$body.margin.top}"/>
+      <fo:region-body margin-bottom="{$body.margin.bottom}"
+                      margin-top="{$body.margin.top}">
+        <xsl:attribute name="column-count">
+          <!-- FIXME: how bad is this hack? If the overall column.count is 1,
+               use 2 here. Otherwise, use whatever is specified. This allows
+               some pages to be 2 column and others to be 1 column. Perhaps
+               this should always be 2 and if you want a 3 column page, you should
+               make a new pagemaster? Or maybe if you want to mix single and multi-
+               column pages, you should write another pagemaster for the ones
+               you want to be two column... -->
+          <xsl:choose>
+            <xsl:when test="$column.count &lt; 2">2</xsl:when>
+            <xsl:otherwise>
+              <xsl:value-of select="$column.count"/>
+            </xsl:otherwise>
+          </xsl:choose>
+        </xsl:attribute>
+      </fo:region-body>
+
       <fo:region-before extent="{$region.before.extent}"
                         display-align="after"/>
       <fo:region-after extent="{$region.after.extent}"
 
 <xsl:template name="select.pagemaster">
   <xsl:param name="element" select="local-name(.)"/>
+  <!-- column.count is a param so it can be selected dynamically; see index.xsl -->
+  <xsl:param name="column.count" select="$column.count"/>
+
   <xsl:choose>
     <xsl:when test="$double.sided != 0">
       <xsl:choose>
index f4afff3c0eda58a85e0f307d9562ab7f972627bd..c19a766fbe272bbe320eab91c6159b600dff05f3 100644 (file)
@@ -28,6 +28,7 @@
 <!ENTITY callouts.extension SYSTEM "../params/callouts.extension.xml">
 <!ENTITY chapter.autolabel SYSTEM "../params/chapter.autolabel.xml">
 <!ENTITY column.count SYSTEM "../params/column.count.xml">
+<!ENTITY column.count.of.index SYSTEM "../params/column.count.of.index.xml">
 <!ENTITY component.title.properties SYSTEM "../params/component.title.properties.xml">
 <!ENTITY default.table.width SYSTEM "../params/default.table.width.xml">
 <!ENTITY default.units SYSTEM "../params/default.units.xml">
index 3489b8bdb944391c52dd019875239b0eaf6681af..b792b52dc3702a36768383dd109052a3c483df0a 100644 (file)
@@ -282,6 +282,7 @@ zero by default, so this is simply the page-master region-left.
 &hyphenate;
 &line-height;
 &column.count;
+&column.count.of.index;
 &region.after.extent;
 &region.before.extent;
 &default.units;
@@ -377,6 +378,7 @@ around all these parameters.</para>
 <src:fragref linkend="callouts.extension.frag"/>
 <src:fragref linkend="chapter.autolabel.frag"/>
 <src:fragref linkend="column.count.frag"/>
+<src:fragref linkend="column.count.of.index.frag"/>
 <src:fragref linkend="component.title.properties.frag"/>
 <src:fragref linkend="default.table.width.frag"/>
 <src:fragref linkend="default.units.frag"/>
index 35dac9efebe40e54266304b4f2ce06ddeb1ccef7..3bc5de4238187489ecf2db97b5a71bfac7e6494c 100644 (file)
             force="1"
             named-template="component.title"
             param:node="ancestor-or-self::index[1]"
+             param:pagewide="1"
             fo:margin-left="{$title.margin.left}"
             fo:font-size="&hsize3;"
             fo:font-family="{$title.font.family}"
diff --git a/xsl/params/column.count.of.index.xml b/xsl/params/column.count.of.index.xml
new file mode 100644 (file)
index 0000000..a8048db
--- /dev/null
@@ -0,0 +1,23 @@
+<refentry id="column.count.of.index">
+<refmeta>
+<refentrytitle>column.count.of.index</refentrytitle>
+<refmiscinfo role="type">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>column.count.of.index</refname>
+<refpurpose>Number of columns in the index</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment id='column.count.of.index.frag'>
+<xsl:param name="column.count.of.index" select="$column.count"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>This parameter specifies the number of columns on pages in the index.
+The default is the same as the <parameter>column.count</parameter>.</para>
+
+</refsect1>
+</refentry>