[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Re: [docbook-apps] customized header and footer
Hi, I tried for FO and it works correctly. I just change height footer with the region.after.extent parameter to add another image size. It's very pleasant to customize footer. Thanks again :) Isa Simon Kennedy wrote: > Isabelle DENGHIEN - IFR49 wrote: > >> >> Thanks a lot, but it is not exactly that I'm looking for. >> In fact, I would like to customize header and footer with image, >> personal content ..... >> Do you know a way to do this ? >> >> Isa > > > > Isabelle, > > The xsl template I'm using for HTML is the following > > ---------------------- Cut Here --------------------------------- > > <!-- This template creates the header of a page for chunked output > Original definition in : chunk-common.xsl > --> > <xsl:template name="header.navigation"> > <xsl:param name="prev" select="/foo"/> > <xsl:param name="next" select="/foo"/> > <xsl:param name="nav.context"/> > > <xsl:variable name="home" select="/*[1]"/> > <xsl:variable name="up" select="parent::*"/> > <xsl:variable name="prt" select="ancestor::part"/> > <xsl:variable name="index" select="/descendant::index[1]"/> > > <xsl:variable name="itext"> > <xsl:call-template name="gentext"> > <xsl:with-param name="key" select="'index'"/> > </xsl:call-template> > </xsl:variable> > > <xsl:if test="$suppress.navigation = '0' and > $suppress.header.navigation = '0'"> > <div class="navheader"> > <table width="100%" summary="Navigation header" cellpadding="0" > cellspacing="0"> > <tr> > <td width="15%" align="left"> > <xsl:if test="count($prev) > 0"> > <a accesskey="p"> > <xsl:attribute name="href"> > <xsl:call-template name="href.target"> > <xsl:with-param name="object" select="$prev"/> > </xsl:call-template> > </xsl:attribute> > <xsl:call-template name="navig.content"> > <xsl:with-param name="direction" select="'prev'"/> > </xsl:call-template> > </a> > <xsl:text>  </xsl:text> > </xsl:if> > > <xsl:if test="count($up) > 0 and $home != ."> > <a accesskey="u"> > <xsl:attribute name="href"> > <xsl:call-template name="href.target"> > <xsl:with-param name="object" select="$up"/> > </xsl:call-template> > </xsl:attribute> > <xsl:call-template name="navig.content"> > <xsl:with-param name="direction" select="'up'"/> > </xsl:call-template> > </a> > > <xsl:text>  </xsl:text> > </xsl:if> > > <xsl:if test="count($next)>0"> > <a accesskey="n"> > <xsl:attribute name="href"> > <xsl:call-template name="href.target"> > <xsl:with-param name="object" select="$next"/> > </xsl:call-template> > </xsl:attribute> > > <xsl:call-template name="navig.content"> > <xsl:with-param name="direction" select="'next'"/> > </xsl:call-template> > </a> > </xsl:if> > </td> > > <th width="70%" align="center"> > <xsl:apply-templates select="/*" mode="title.markup"/> > > <xsl:if test="count($prt) > 0 and generate-id($up) != > generate-id($prt)"> > <xsl:text> - </xsl:text> > <xsl:apply-templates select="$prt" mode="title.markup"/> > </xsl:if> > > <xsl:if test="count($up) > 0 and generate-id($up) != > generate-id($home) and $navig.showtitles != 0"> > <xsl:text> - </xsl:text> > <xsl:apply-templates select="$up" mode="title.markup"/> > </xsl:if> > </th> > > <td rowspan="2" width="15%" align="right"> > <table cellpadding="0" cellspacing="0"> > <tr> > <td align="center"> > <div class="boxed" id="llink"> > <xsl:choose> > <xsl:when test="$haiku = 1"> > <a accesskey="l" href="../index.html"> > <xsl:value-of > select="$l10n.gentext.default.language"/> > </a> > </xsl:when> > > <xsl:otherwise> > <xsl:value-of > select="$l10n.gentext.default.language"/> > </xsl:otherwise> > </xsl:choose> > </div> > </td> > > <!-- Add a link to the index if it exists --> > <xsl:if test="count($index) > 0 and $index != ."> > <td align="center"> > <div class="boxed" id="ilink"> > <a accesskey="i"> > <xsl:attribute name="href"> > <xsl:call-template name="href.target"> > <xsl:with-param name="object" > select="$index"/> > </xsl:call-template> > </xsl:attribute> > <xsl:value-of select="substring($itext,1,1)"/> > </a> > </div> > </td> > </xsl:if> > > <xsl:if test="$home != ."> > <td align="center"> > <a accesskey="h"> > <xsl:attribute name="href"> > <xsl:call-template name="href.target"> > <xsl:with-param name="object" select="$home"/> > </xsl:call-template> > </xsl:attribute> > <xsl:call-template name="navig.content"> > <xsl:with-param name="direction" select="'home'"/> > </xsl:call-template> > </a> > </td> > </xsl:if> > </tr> > > <tr> > <td> </td> > <xsl:if test="count($index) > 0 and $index != ."> > <td align="center"> > <a> > <xsl:attribute name="href"> > <xsl:call-template name="href.target"> > <xsl:with-param name="object" select="$index"/> > </xsl:call-template> > </xsl:attribute> > <xsl:value-of select="$itext"/> > </a> > </td> > </xsl:if> > > <xsl:if test="$home != ."> > <td align="center"> > <a accesskey="h"> > <xsl:attribute name="href"> > <xsl:call-template name="href.target"> > <xsl:with-param name="object" select="$home"/> > </xsl:call-template> > </xsl:attribute> > <xsl:call-template name="gentext"> > <xsl:with-param name="key" select="'nav-home'"/> > </xsl:call-template> > </a> > </td> > </xsl:if> > </tr> > </table> > </td> > </tr> > > <tr> > <td colspan="2"> > <xsl:if test="count($prev) > 0"> > <xsl:call-template name="gentext"> > <xsl:with-param name="key" select="'nav-prev'"/> > </xsl:call-template> > > <xsl:text>: </xsl:text> > > <a> > <xsl:attribute name="href"> > <xsl:call-template name="href.target"> > <xsl:with-param name="object" select="$prev"/> > </xsl:call-template> > </xsl:attribute> > > <xsl:apply-templates select="$prev" mode="title.markup"/> > </a> > > <xsl:text>  </xsl:text> > </xsl:if> > > <xsl:if test="(count($up) > 0) and ($home != .)"> > <xsl:call-template name="gentext"> > <xsl:with-param name="key" select="'nav-up'"/> > </xsl:call-template> > > <xsl:text>: </xsl:text> > > <a> > <xsl:attribute name="href"> > <xsl:call-template name="href.target"> > <xsl:with-param name="object" select="$up"/> > </xsl:call-template> > </xsl:attribute> > > <xsl:apply-templates select="$up" mode="title.markup"/> > </a> > > <xsl:text>  </xsl:text> > </xsl:if> > > <xsl:if test="count($next) > 0"> > <xsl:call-template name="gentext"> > <xsl:with-param name="key" select="'nav-next'"/> > </xsl:call-template> > > <xsl:text>: </xsl:text> > > <a> > <xsl:attribute name="href"> > <xsl:call-template name="href.target"> > <xsl:with-param name="object" select="$next"/> > </xsl:call-template> > </xsl:attribute> > > <xsl:apply-templates select="$next" mode="title.markup"/> > </a> > </xsl:if> > </td> > </tr> > </table> > > <xsl:if test="$header.rule != 0"> > <hr/> > </xsl:if> > </div> > </xsl:if> > </xsl:template> > > ---------------------- Cut Here --------------------------------- > > With the output looking like HeaderExample.jpg > > And for XSL-FO. For FO you also need to set the margins to allow for > the extra logo space. > > ---------------------- Cut Here --------------------------------- > > <!-- Change footer to show > IssueNum, Date, Copyright Page Number BeOS Logo > > Original in fo/pagesetup.xsl > --> > <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> > <!-- pageclass can be front, body, back --> > <!-- sequence can be odd, even, first, blank --> > <!-- position can be left, center, right --> > <xsl:choose> > <xsl:when test="$pageclass = 'titlepage'"> > <!-- nop; no footer on title pages --> > </xsl:when> > > <xsl:when test="$double.sided != 0 and $sequence = 'even' > and $position='left'"> > <fo:page-number/> > </xsl:when> > > <xsl:when test="$double.sided != 0 and ($sequence = 'odd' or > $sequence = 'first') > and $position='right'"> > <fo:page-number/> > </xsl:when> > > <xsl:when test="$double.sided = 0 and $position='left'"> > <fo:block> > <xsl:text>Issue </xsl:text> > <xsl:value-of select="/article/info/issuenum"/> > <xsl:text>, </xsl:text> > <xsl:value-of select="/article/info/date"/> > </fo:block> > <fo:block> > © 1995-2001 Be Inc. > </fo:block> > </xsl:when> > > <xsl:when test="$double.sided = 0 and $position='center'"> > <xsl:text>Page </xsl:text> > <fo:page-number/> > <xsl:text> of </xsl:text> > <fo:page-number-citation ref-id="lastpage"/> > </xsl:when> > > <xsl:when test="$double.sided = 0 and $position='right'"> > <fo:external-graphic width="100%" scaling="uniform"> > <xsl:attribute name="src"> > <xsl:call-template name="fo-external-image"> > <xsl:with-param > name="filename">../../images/be_logo.png</xsl:with-param> > </xsl:call-template> > </xsl:attribute> > </fo:external-graphic> > </xsl:when> > > <xsl:when test="$sequence='blank'"> > <xsl:choose> > <xsl:when test="$double.sided != 0 and $position = 'left'"> > <fo:page-number/> > </xsl:when> > <xsl:when test="$double.sided = 0 and $position = 'center'"> > <fo:page-number/> > </xsl:when> > <xsl:otherwise> > <!-- nop --> > </xsl:otherwise> > </xsl:choose> > </xsl:when> > > > <xsl:otherwise> > <!-- nop --> > </xsl:otherwise> > </xsl:choose> > </fo:block> > </xsl:template> > > <!-- Change footer cells to use 'display-align: center'. > This sets the vertical alignment. > --> > <xsl:template name="footer.table"> > <xsl:param name="pageclass" select="''"/> > <xsl:param name="sequence" select="''"/> > <xsl:param name="gentext-key" select="''"/> > > <!-- default is a single table style for all footers --> > <!-- Customize it for different page classes or sequence location --> > > <xsl:choose> > <xsl:when test="$pageclass = 'index'"> > <xsl:attribute name="margin-left">0pt</xsl:attribute> > </xsl:when> > </xsl:choose> > > <xsl:variable name="column1"> > <xsl:choose> > <xsl:when test="$double.sided = 0">1</xsl:when> > <xsl:when test="$sequence = 'first' or $sequence = > 'odd'">1</xsl:when> > <xsl:otherwise>3</xsl:otherwise> > </xsl:choose> > </xsl:variable> > > <xsl:variable name="column3"> > <xsl:choose> > <xsl:when test="$double.sided = 0">3</xsl:when> > <xsl:when test="$sequence = 'first' or $sequence = > 'odd'">3</xsl:when> > <xsl:otherwise>1</xsl:otherwise> > </xsl:choose> > </xsl:variable> > > <xsl:variable name="candidate"> > <fo:table table-layout="fixed" width="100%"> > <xsl:call-template name="foot.sep.rule"> > <xsl:with-param name="pageclass" select="$pageclass"/> > <xsl:with-param name="sequence" select="$sequence"/> > <xsl:with-param name="gentext-key" select="$gentext-key"/> > </xsl:call-template> > <fo:table-column column-number="1"> > <xsl:attribute name="column-width"> > <xsl:text>proportional-column-width(</xsl:text> > <xsl:call-template name="header.footer.width"> > <xsl:with-param name="location">footer</xsl:with-param> > <xsl:with-param name="position" select="$column1"/> > </xsl:call-template> > <xsl:text>)</xsl:text> > </xsl:attribute> > </fo:table-column> > <fo:table-column column-number="2"> > <xsl:attribute name="column-width"> > <xsl:text>proportional-column-width(</xsl:text> > <xsl:call-template name="header.footer.width"> > <xsl:with-param name="location">footer</xsl:with-param> > <xsl:with-param name="position" select="2"/> > </xsl:call-template> > <xsl:text>)</xsl:text> > </xsl:attribute> > </fo:table-column> > <fo:table-column column-number="3"> > <xsl:attribute name="column-width"> > <xsl:text>proportional-column-width(</xsl:text> > <xsl:call-template name="header.footer.width"> > <xsl:with-param name="location">footer</xsl:with-param> > <xsl:with-param name="position" select="$column3"/> > </xsl:call-template> > <xsl:text>)</xsl:text> > </xsl:attribute> > </fo:table-column> > > <fo:table-body> > <fo:table-row height="14pt"> > <fo:table-cell text-align="left" > display-align="center"> > <xsl:if test="$fop.extensions = 0"> > <xsl:attribute > name="relative-align">baseline</xsl:attribute> > </xsl:if> > <fo:block> > <xsl:call-template name="footer.content"> > <xsl:with-param name="pageclass" select="$pageclass"/> > <xsl:with-param name="sequence" select="$sequence"/> > <xsl:with-param name="position" select="'left'"/> > <xsl:with-param name="gentext-key" select="$gentext-key"/> > </xsl:call-template> > </fo:block> > </fo:table-cell> > <fo:table-cell text-align="center" > display-align="center"> > <xsl:if test="$fop.extensions = 0"> > <xsl:attribute > name="relative-align">baseline</xsl:attribute> > </xsl:if> > <fo:block> > <xsl:call-template name="footer.content"> > <xsl:with-param name="pageclass" select="$pageclass"/> > <xsl:with-param name="sequence" select="$sequence"/> > <xsl:with-param name="position" select="'center'"/> > <xsl:with-param name="gentext-key" select="$gentext-key"/> > </xsl:call-template> > </fo:block> > </fo:table-cell> > <fo:table-cell text-align="right" > display-align="center"> > <xsl:if test="$fop.extensions = 0"> > <xsl:attribute > name="relative-align">baseline</xsl:attribute> > </xsl:if> > <fo:block> > <xsl:call-template name="footer.content"> > <xsl:with-param name="pageclass" select="$pageclass"/> > <xsl:with-param name="sequence" select="$sequence"/> > <xsl:with-param name="position" select="'right'"/> > <xsl:with-param name="gentext-key" select="$gentext-key"/> > </xsl:call-template> > </fo:block> > </fo:table-cell> > </fo:table-row> > </fo:table-body> > </fo:table> > </xsl:variable> > > <!-- Really output a footer? --> > <xsl:choose> > <xsl:when test="$pageclass='titlepage' and $gentext-key='book' > and $sequence='first'"> > <!-- no, book titlepages have no footers at all --> > </xsl:when> > <xsl:when test="$sequence = 'blank' and $footers.on.blank.pages = 0"> > <!-- no output --> > </xsl:when> > <xsl:otherwise> > <xsl:copy-of select="$candidate"/> > </xsl:otherwise> > </xsl:choose> > </xsl:template> > > ---------------------- Cut Here --------------------------------- > > Which produces something like FooterExample.jpg > > Experimentation is the key. Don't be afraid to break the formatting. > > Regards > Simon Kennedy > > > > ------------------------------------------------------------------------ > > > ------------------------------------------------------------------------ > >------------------------------------------------------------------------ > >--------------------------------------------------------------------- >To unsubscribe, e-mail: docbook-apps-unsubscribe@lists.oasis-open.org >For additional commands, e-mail: docbook-apps-help@lists.oasis-open.org > -- ************************ Isabelle DENGHIEN SHFJ-IFR49 4 place du General Leclerc 91401 Orsay Cedex France http://www.ifr49.org Tel +33 (0) 1 69 86 77 81 Fax +33 (0) 1 69 86 78 16 Mail:denghien@shfj.cea.fr
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]