Re: [docbook-apps] adding a footer only to last page

From
robert <>
Date
2012-03-04T14:12:55+00:00
ID
Thread
Re: [docbook-apps] adding a footer only to last page
Thanks Bob for your help.

I'm wondering if there is other way do achive a similar result. I want to have an image and some text at the bottom of each page that ends an article. I though a footer would be an obvious solution, but maybe there is other way to put that content at the bottom of a page. My book is generated dynamically, so for example, I'm able to add that content to each article, if that would allow me to use some other mechanism and simplify the solution.

Robert

On Fri, Mar 2, 2012 at 6:23 PM, Bob Stayton <> wrote:

Hi Robert,

Ah, sorry, this is actually a bit more complicated 
than I remembered.  The DocBook XSL stylesheets  are not set up with 
page-masters for 'last', and so that all has to be set up before the 
$sequence='last' in footer.content will work.  I'll see if I can dig up an 
example of a working version.

 

Bob Stayton
Sagehill Enterprises


 

 

  
----- Original Message ----- 

  
From: 
  robert 

  

To: Bob Stayton 

  
Sent: Friday, March 02, 2012 1:16 
AM

  
Subject: Re: [docbook-apps] adding a 
  footer only to last page

  

  
Hi Bob,

  

  
I can't get this working and have no idea what I'm doing wrong.

  
My customization layer contains the following:

  

  
<xsl:param name="footer.rule" select="0"></xsl:param>

  

  
<xsl:attribute-set name="footer.content.properties">

  
  <xsl:attribute 
  name="background-color">red</xsl:attribute>

  
</xsl:attribute-set>

  

  
<xsl:template name="footer.content">

  
  <xsl:param name="pageclass" select="''"/>

  
  <xsl:param name="sequence" select="''"/>

  
  <xsl:param name="position" select="''"/>

  
  <xsl:param name="gentext-key" select="''"/>

  
  <fo:block>

  
    <xsl:choose>

  
      <xsl:when test="$double.sided = 0 and 
  $position='left' and self::d:article and $sequence = 'last'">

  
        www.foo.com

  
      </xsl:when>

  
      <xsl:otherwise>

  
        <!-- nop -->

  
      </xsl:otherwise>

  
    </xsl:choose>

  
  </fo:block>

  
</xsl:template>

  

  
When I apply this do a book with several articles, i.e.:

  

  
<book xmlns:xi="http://www.w3.org/2001/XInclude"

  
  xmlns:xlink="http://www.w3.org/1999/xlink" 
  xmlns="http://docbook.org/ns/docbook"

  
  version="5.0">

  
  <info>

  
    <title>Media Access Proxy™</title>

  
  </info>

  
  <article xml:id="a1">

  
    ...

  
  </article>

  
  <article xml:id="a2">

  
    ...

  
  </article>

  
</book>

  

  
I would like to see (in a PDF file) the 'www.foo.com' text at the left bottom of the page 
  on the red background twice (i.e. at the end of each article). But I see a box 
  with the red background on all pages and the text never appears.

  

  

  

  
Thanks for your help.

  
Robert

  

  

  

  
On Thu, Mar 1, 2012 at 6:57 PM, Bob Stayton <> wrote:

  
    

    
Hi Robert,

    
The general instructions for customizing 
    headers and footers can be found here:

    
 

    
http://www.sagehill.net/docbookxsl/PrintHeaders.html

    
 

    
The footer.content template is a big xsl:choose 
    statement that sets conditions for which pages have which output.  In 
    your case, each article generates a page-sequence, so that is the context 
    when the template is called. The xsl:when statement might look something 
    like this:

    
 

    
<xsl:when test="self::d:article and ($sequence = 
    'last' or $sequence = 'blank')">

    
 

    
You would need the 'blank' condition if you are doing 
    double-sided output that may generate a blank page as the last page at 
    the end of an article.

    
 

    
Bob Stayton
Sagehill Enterprises


    

    

    
 

    
 

    
      
----- Original Message ----- 

      
From: robert 

      
To:  

      
Sent: Thursday, March 01, 2012 3:21 
      AM

      
Subject: Re: [docbook-apps] adding a 
      footer only to last page

      

To simplify the problem. Let's only consider the case when 
      there is a book with a number of articles, and the footer must only be 
      added to the last page of each article.

      
On Thu, Mar 1, 2012 at 10:57 AM, robert <> wrote:

      Hi All,

I have two somehow 
        similar problems. Both relate to printed output.

1. 
        I have a book with a number of articles and want to have a 
        footer
only on the last page of each article and the 
        last page of the whole
book.
2. 
        Similarly, I have a set of books, and want to have a footer only 
        on
the last page of each book.

Have 
        can I do it?

Thanks,
Robert