[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Re: [docbook-apps] Separating Numbers and Titles
Hi, On Tuesday 10 May 2005 23:36, Bob Stayton wrote: > [...] > > You can do this in a customization of the template named > 'section.heading' in fo/sections.xsl. Don't use the $title parameter > that is provided to that template, because it contains the result of > processing in > mode="object.title.markup", which combines the label and the title in > one string. You could compute the indent width as some multiple of the > section level, which is available in the $level parameter passed to the > template. Thanks Bob, I figured it out already. I modified the "section.heading" template as you recommended. One problem was, where to introduce the "section.title.level*.properties" attribute sets. I checked the $level parameter for this and saved some objects (like title, label and a list fragment) into temporary variables which I use later. Here is my solution which can probably improved: ------------------------------------------------------- <xsl:template name="section.heading"> <xsl:param name="level" select="1"/> <xsl:param name="marker" select="1"/> <xsl:param name="title"/> <xsl:param name="titleabbrev"/> <xsl:variable name="_label"> <xsl:apply-templates select="parent::*[1]" mode="label.markup"/> </xsl:variable> <xsl:variable name="_title"> <xsl:apply-templates select="." mode="title.markup"/> </xsl:variable> <xsl:variable name="_list"> <fo:list-item> <fo:list-item-label end-indent="label-end()"> <fo:block><xsl:copy-of select="$_label"/></fo:block> </fo:list-item-label> <fo:list-item-body start-indent="body-start()"> <fo:block><xsl:copy-of select="$_title"/></fo:block> </fo:list-item-body> </fo:list-item> </xsl:variable> <!-- <xsl:message> name = <xsl:value-of select="name()"/> test = "<xsl:value-of select="$_label=''"/>" level = "<xsl:value-of select="$level"/>" label = "<xsl:value-of select="$_label"/>" title = "<xsl:value-of select="$_title"/>" </xsl:message> --> <xsl:choose> <xsl:when test="$_label=''"> <xsl:apply-imports/><!-- Use original template --> </xsl:when> <xsl:otherwise> <xsl:choose> <xsl:when test="$level=1"> <fo:block xsl:use-attribute-sets="section.title.properties section.title.level1.properties"> <fo:list-block provisional-distance-between-starts="2.5em" provisional-label-separation="1em"> <xsl:copy-of select="$_list"/> </fo:list-block> </fo:block> </xsl:when> <xsl:when test="$level=2"> <fo:block xsl:use-attribute-sets="section.title.properties section.title.level2.properties"> <fo:list-block provisional-distance-between-starts="3em" provisional-label-separation="1em"> <xsl:copy-of select="$_list"/> </fo:list-block> </fo:block> </xsl:when> <xsl:when test="$level=3"> <fo:block xsl:use-attribute-sets="section.title.properties section.title.level3.properties"> <fo:list-block provisional-label-separation="1em"> <xsl:copy-of select="$_list"/> </fo:list-block> </fo:block> </xsl:when> <xsl:when test="$level=4"> <fo:block xsl:use-attribute-sets="section.title.properties section.title.level4.properties"> <fo:list-block provisional-label-separation="1em"> <xsl:copy-of select="$_list"/> </fo:list-block> </fo:block> </xsl:when> <xsl:when test="$level=5"> <fo:block xsl:use-attribute-sets="section.title.properties section.title.level5.properties"> <fo:list-block provisional-label-separation="1em"> <xsl:copy-of select="$_list"/> </fo:list-block> </fo:block> </xsl:when> <xsl:otherwise> <fo:block xsl:use-attribute-sets="section.title.properties section.title.level6.properties"> <fo:list-block provisional-label-separation="1em"> <xsl:copy-of select="$_list"/> </fo:list-block> </fo:block> </xsl:otherwise> </xsl:choose> </xsl:otherwise> </xsl:choose> </xsl:template> ------------------------------------------------------- As far as I know, there is no better solution of inserting attribute sets that depends of the $level parameter, right? One deficiency is the absense of the $marker parameter and the layout of the list could be improved. I would like to have a distance between label and title of 1em without worrying about label width. So I inserted the provisional-* attributes, but I am not sure. It's sometimes a bit difficult with all the possible attributes to get a good looking list. :) Thanks, Tom -- Thomas Schraitle
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]