📄 bz-fo.xsl.svn-base
字号:
<?xml version="1.0" encoding="UTF-8"?> <!-- -*- sgml -*- --><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" version="1.0"><xsl:import href="http://docbook.sourceforge.net/release/xsl/current/fo/docbook.xsl"/><xsl:import href="bz-common.xsl"/><!-- set indent = yes while debugging, then change to NO --><xsl:output method="xml" indent="yes"/><!-- ensure only passivetex extensions are on --><xsl:param name="stylesheet.result.type" select="'fo'"/><!-- fo extensions: PDF bookmarks and index terms --><xsl:param name="use.extensions" select="'1'"/><xsl:param name="xep.extensions" select="0"/> <xsl:param name="fop.extensions" select="0"/> <xsl:param name="saxon.extensions" select="0"/> <xsl:param name="passivetex.extensions" select="1"/><xsl:param name="tablecolumns.extension" select="'1'"/><!-- ensure we are using single sided --><xsl:param name="double.sided" select="'0'"/> <!-- insert cross references to page numbers --><xsl:param name="insert.xref.page.number" select="1"/><!-- <?custom-pagebreak?> inserts a page break at this point --><xsl:template match="processing-instruction('custom-pagebreak')"> <fo:block break-before='page'/></xsl:template><!-- show links in color --><xsl:attribute-set name="xref.properties"> <xsl:attribute name="color">blue</xsl:attribute></xsl:attribute-set><!-- make pre listings indented a bit + a bg colour --><xsl:template match="programlisting | screen"> <fo:block start-indent="0.25in" wrap-option="no-wrap" white-space-collapse="false" text-align="start" font-family="monospace" background-color="#f2f2f9" linefeed-treatment="preserve" xsl:use-attribute-sets="normal.para.spacing"> <xsl:apply-templates/> </fo:block></xsl:template><!-- make verbatim output prettier --><xsl:template match="literallayout"> <fo:block start-indent="0.25in" wrap-option="no-wrap" white-space-collapse="false" text-align="start" font-family="monospace" background-color="#edf7f4" linefeed-treatment="preserve" space-before="0em" space-after="0em"> <xsl:apply-templates/> </fo:block></xsl:template><!-- workaround bug in passivetex fo output for itemizedlist --><xsl:template match="itemizedlist/listitem"> <xsl:variable name="id"> <xsl:call-template name="object.id"/></xsl:variable> <xsl:variable name="itemsymbol"> <xsl:call-template name="list.itemsymbol"> <xsl:with-param name="node" select="parent::itemizedlist"/> </xsl:call-template> </xsl:variable> <xsl:variable name="item.contents"> <fo:list-item-label end-indent="label-end()"> <fo:block> <xsl:choose> <xsl:when test="$itemsymbol='disc'">•</xsl:when> <xsl:when test="$itemsymbol='bullet'">•</xsl:when> <xsl:otherwise>•</xsl:otherwise> </xsl:choose> </fo:block> </fo:list-item-label> <fo:list-item-body start-indent="body-start()"> <xsl:apply-templates/> <!-- removed extra block wrapper --> </fo:list-item-body> </xsl:variable> <xsl:choose> <xsl:when test="parent::*/@spacing = 'compact'"> <fo:list-item id="{$id}" xsl:use-attribute-sets="compact.list.item.spacing"> <xsl:copy-of select="$item.contents"/> </fo:list-item> </xsl:when> <xsl:otherwise> <fo:list-item id="{$id}" xsl:use-attribute-sets="list.item.spacing"> <xsl:copy-of select="$item.contents"/> </fo:list-item> </xsl:otherwise> </xsl:choose></xsl:template><!-- workaround bug in passivetex fo output for orderedlist --><xsl:template match="orderedlist/listitem"> <xsl:variable name="id"> <xsl:call-template name="object.id"/></xsl:variable> <xsl:variable name="item.contents"> <fo:list-item-label end-indent="label-end()"> <fo:block> <xsl:apply-templates select="." mode="item-number"/> </fo:block> </fo:list-item-label> <fo:list-item-body start-indent="body-start()"> <xsl:apply-templates/> <!-- removed extra block wrapper --> </fo:list-item-body> </xsl:variable> <xsl:choose> <xsl:when test="parent::*/@spacing = 'compact'"> <fo:list-item id="{$id}" xsl:use-attribute-sets="compact.list.item.spacing"> <xsl:copy-of select="$item.contents"/> </fo:list-item> </xsl:when> <xsl:otherwise> <fo:list-item id="{$id}" xsl:use-attribute-sets="list.item.spacing"> <xsl:copy-of select="$item.contents"/> </fo:list-item> </xsl:otherwise> </xsl:choose></xsl:template><!-- workaround bug in passivetex fo output for variablelist --><xsl:param name="variablelist.as.blocks" select="1"/><xsl:template match="varlistentry" mode="vl.as.blocks"> <xsl:variable name="id"> <xsl:call-template name="object.id"/></xsl:variable> <fo:block id="{$id}" xsl:use-attribute-sets="list.item.spacing" keep-together.within-column="always" keep-with-next.within-column="always"> <xsl:apply-templates select="term"/> </fo:block> <fo:block start-indent="0.5in" end-indent="0in" space-after.minimum="0.2em" space-after.optimum="0.4em" space-after.maximum="0.6em"> <fo:block> <xsl:apply-templates select="listitem"/> </fo:block> </fo:block></xsl:template><!-- workaround bug in footers: force right-align w/two 80|30 cols --><xsl:template name="footer.table"> <xsl:param name="pageclass" select="''"/> <xsl:param name="sequence" select="''"/> <xsl:param name="gentext-key" select="''"/> <xsl:choose> <xsl:when test="$pageclass = 'index'"> <xsl:attribute name="margin-left">0pt</xsl:attribute> </xsl:when> </xsl:choose> <xsl:variable name="candidate"> <fo:table table-layout="fixed" width="100%"> <fo:table-column column-number="1" column-width="80%"/> <fo:table-column column-number="2" column-width="20%"/> <fo:table-body> <fo:table-row height="14pt"> <fo:table-cell text-align="left" display-align="after"> <xsl:attribute name="relative-align">baseline</xsl:attribute> <fo:block> <fo:block> </fo:block><!-- empty cell --> </fo:block> </fo:table-cell> <fo:table-cell text-align="center" display-align="after"> <xsl:attribute name="relative-align">baseline</xsl:attribute> <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-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><!-- fix bug in headers: force right-align w/two 40|60 cols --><xsl:template name="header.table"> <xsl:param name="pageclass" select="''"/> <xsl:param name="sequence" select="''"/> <xsl:param name="gentext-key" select="''"/> <xsl:choose> <xsl:when test="$pageclass = 'index'"> <xsl:attribute name="margin-left">0pt</xsl:attribute> </xsl:when> </xsl:choose> <xsl:variable name="candidate"> <fo:table table-layout="fixed" width="100%"> <xsl:call-template name="head.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" column-width="40%"/> <fo:table-column column-number="2" column-width="60%"/> <fo:table-body> <fo:table-row height="14pt"> <fo:table-cell text-align="left" display-align="before"> <xsl:attribute name="relative-align">baseline</xsl:attribute> <fo:block> <fo:block> </fo:block><!-- empty cell --> </fo:block> </fo:table-cell> <fo:table-cell text-align="center" display-align="before"> <xsl:attribute name="relative-align">baseline</xsl:attribute> <fo:block> <xsl:call-template name="header.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-row> </fo:table-body> </fo:table> </xsl:variable> <!-- Really output a header? --> <xsl:choose> <xsl:when test="$pageclass = 'titlepage' and $gentext-key = 'book' and $sequence='first'"> <!-- no, book titlepages have no headers at all --> </xsl:when> <xsl:when test="$sequence = 'blank' and $headers.on.blank.pages = 0"> <!-- no output --> </xsl:when> <xsl:otherwise> <xsl:copy-of select="$candidate"/> </xsl:otherwise> </xsl:choose></xsl:template></xsl:stylesheet>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -