[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Re: [docbook-apps] Costomizing fo stylesheet?
----- 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
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]