This is the mail archive of the
docbook-apps@lists.oasis-open.org
mailing list .
Re: [docbook-apps] Costomizing fo stylesheet?
- From: "Bob Stayton" <bobs at sagehill dot net>
- To: Øyvind Hvamstad <oyvind at hvamstad dot net>, <docbook-apps at lists dot oasis-open dot org>
- Date: Sun, 13 Jul 2003 11:02:57 -0700
- Subject: Re: [docbook-apps] Costomizing fo stylesheet?
- References: <1058094843.781.22.camel@kenobi.digdix.com>
----- Original Message -----
From: "Øyvind Hvamstad" <oyvind@hvamstad.net>
To: <docbook-apps@lists.oasis-open.org>
Sent: Sunday, July 13, 2003 4:14 AM
Subject: [docbook-apps] Costomizing fo stylesheet?
> Hi, I'm trying to customize the chapter of a book and also make the
> section titles indent to the same position as the text. I want the
> chapter layout to look something like this:
> ___________________________________
> | |
> | Chapter 7 |
> |__________________________________|
> | Chapter title |
> |__________________________________|
> | |
> | Section 1 |
> | text in the section |
> | .................. |
> |__________________________________|
>
> I started reading the stylesheets that come with the distribution on
> debian, but I find that the flow is hard to follow. Could anyone give me
> a clue about what templates to override, and also how I can align the
> section titles with the section text?
The chapter titles are handled by the titlepage mechanism and some
attribute-sets.
The following attribute set customization will center everything on the
chapter
"titlepage", which is just the top of the chapter's first page. If you had
a
chapter author, for example, it would be centered as well.
<xsl:attribute-set name="chapter.titlepage.recto.style">
<xsl:attribute name="text-align">center</xsl:attribute>
</xsl:attribute-set>
But the default chapter title style is "Chapter 7. Chapter title" on one
line.
You want separate blocks. For that, you will need to customize
a template. If you check the titlepage specifications that are
declared in fo/titlepage.templates.xml, you will see that the chapter
title is handled by a named template:
<t:titlepage t:element="chapter" t:wrapper="fo:block"
font-family="{$title.font.family}">
<t:titlepage-content t:side="recto" margin-left="{$title.margin.left}">
<title t:named-template="component.title"
You could customize the 'component.title' template, found in
fo/component.xsl. It is used for chapters, appendixes, preface,
etc, so you need to make it conditional for only chapters, or
create a new custom template just for chapters and change
the spec file (and regenerate the titlepage stylesheet file from it).
The customization would be inside the existing fo:block, creating
two new blocks. Start an fo:block,
call the 'gentext' template (found in common/l10n.xsl) to generate the
word "Chapter", apply-templates on the context element
in 'label.markup' mode to generate the number, close the fo:block
and start a new one, then apply-templates in 'title.markup' mode
to generate the title. This is roughly it:
<fo:block>
<xsl:call-template name="gentext" >
<xsl:with-param name="key" select="'Chapter'"/>
</xsl:call-template>
<xsl:text> </xsl:text>
<xsl:apply-templates select="$node" mode="label.markup"/>
</fo:block>
<fo:block>
<xsl:apply-templates select="$node" mode="title.markup"/>
</fo:block>
The section title indent is controlled by setting this parameter:
<xsl:param name="title.margin.left">0</xsl:param>
Bob Stayton
Sagehill Enterprises
bobs@sagehill.net
---------------------------------------------------------------------
To unsubscribe, e-mail: docbook-apps-unsubscribe@lists.oasis-open.org
For additional commands, e-mail: docbook-apps-help@lists.oasis-open.org