添加 fo:marker marker-class-name="section.head.marker" 到特定部分
add fo:marker marker-class-name="section.head.marker" to specific sections
我一直在想办法手动或自动将 fo:marker section.head.marker 添加到特定部分。
我正在使用 FOP 将我的 xml 文件转换为 pdf。
我的格式是这样的
Article
section A1 -
section A2 -
section A3
section B1 -
section B2 -
section B3
我可以使用
<xsl:param name="marker.section.level">3</xsl:param>
为所有部分生成 header,但是我不希望为 A3 生成 header,但我确实希望为 B3 生成它。
我曾尝试将 A3 切换为单节,但该级别的单节仍然生成了 header。
我也试过手动添加 fo:marker 这样的:
<section id="B3">
<fo:marker marker-class-name="section.head.marker">
B3
</fo:marker>
<title id="B3.title">B3</title>
...
但在我的 pdf 输出中我得到:
<fo:marker> sensors </fo:marker>
我是否缺少手动将 fo:marker 添加到我的 xml 文件的内容,或者是否有办法防止通过 xsl 在 simplesect 中生成 fo:markers ?
看起来这可能会以与
类似的方式解决
<xsl:template match="processing-instruction('hard-pagebreak')">
<fo:block break-after='page'/>
</xsl:template>
我没有将 hard-pagebreak 命令添加到 xml,而是添加了一个 header 命令,它获取当前部分标题并创建 fo:header
处理 运行 header 代的 xsl 部分是:
<xsl:param name="marker.section.level">2</xsl:param>
<xsl:template name="header.content">
<xsl:param name="position" select="''"/>
<xsl:param name="sequence" select="''"/>
<fo:block>
<!-- position can be left, center, right -->
<xsl:choose>
<xsl:when test="$sequence = 'first'">
<!-- off -->
</xsl:when>
<xsl:when test="$position = 'left'">
<xsl:call-template name="draft.text"/>
</xsl:when>
<xsl:when test="$position = 'center'">
<fo:retrieve-marker
retrieve-class-name="section.head.marker"
retrieve-position="first-including-carryover"
retrieve-boundary="page-sequence"/>
</xsl:when>
</xsl:choose>
</fo:block>
</xsl:template>
我的 xsl 文件句柄的其余部分:
imports <xsl:import href="./docbook-xsl/fo/docbook.xsl"/> first
moving TOC to new page
allowing hard page breaks
Adding footer ( title, page# )
verbatim segment properties
shading/word wrap
formatting revision history
disable hyphenation
disable showing URLs of links
Color links
我能够使用以下 xsl 代码生成手册 section.head.marker:
<xsl:template match="processing-instruction('running-header')">
<fo:block>
<fo:marker marker-class-name="section.head.marker">
<xsl:value-of select="../title"/>
</fo:marker>
</fo:block>
</xsl:template>
然后我只包含了 运行 header processing-instruction.
<section id="B3"
xmlns:fo="http://www.w3.org/1999/XSL/Format"
>
<?running-header?>
<title id="B3.title">B3</title>
这使我可以手动添加 section.head.marker 和当前部分标题。
我一直在想办法手动或自动将 fo:marker section.head.marker 添加到特定部分。
我正在使用 FOP 将我的 xml 文件转换为 pdf。
我的格式是这样的
Article
section A1 -
section A2 -
section A3
section B1 -
section B2 -
section B3
我可以使用
<xsl:param name="marker.section.level">3</xsl:param>
为所有部分生成 header,但是我不希望为 A3 生成 header,但我确实希望为 B3 生成它。
我曾尝试将 A3 切换为单节,但该级别的单节仍然生成了 header。
我也试过手动添加 fo:marker 这样的:
<section id="B3">
<fo:marker marker-class-name="section.head.marker">
B3
</fo:marker>
<title id="B3.title">B3</title>
...
但在我的 pdf 输出中我得到:
<fo:marker> sensors </fo:marker>
我是否缺少手动将 fo:marker 添加到我的 xml 文件的内容,或者是否有办法防止通过 xsl 在 simplesect 中生成 fo:markers ?
看起来这可能会以与
类似的方式解决<xsl:template match="processing-instruction('hard-pagebreak')">
<fo:block break-after='page'/>
</xsl:template>
我没有将 hard-pagebreak 命令添加到 xml,而是添加了一个 header 命令,它获取当前部分标题并创建 fo:header
处理 运行 header 代的 xsl 部分是:
<xsl:param name="marker.section.level">2</xsl:param>
<xsl:template name="header.content">
<xsl:param name="position" select="''"/>
<xsl:param name="sequence" select="''"/>
<fo:block>
<!-- position can be left, center, right -->
<xsl:choose>
<xsl:when test="$sequence = 'first'">
<!-- off -->
</xsl:when>
<xsl:when test="$position = 'left'">
<xsl:call-template name="draft.text"/>
</xsl:when>
<xsl:when test="$position = 'center'">
<fo:retrieve-marker
retrieve-class-name="section.head.marker"
retrieve-position="first-including-carryover"
retrieve-boundary="page-sequence"/>
</xsl:when>
</xsl:choose>
</fo:block>
</xsl:template>
我的 xsl 文件句柄的其余部分:
imports <xsl:import href="./docbook-xsl/fo/docbook.xsl"/> first
moving TOC to new page
allowing hard page breaks
Adding footer ( title, page# )
verbatim segment properties
shading/word wrap
formatting revision history
disable hyphenation
disable showing URLs of links
Color links
我能够使用以下 xsl 代码生成手册 section.head.marker:
<xsl:template match="processing-instruction('running-header')">
<fo:block>
<fo:marker marker-class-name="section.head.marker">
<xsl:value-of select="../title"/>
</fo:marker>
</fo:block>
</xsl:template>
然后我只包含了 运行 header processing-instruction.
<section id="B3"
xmlns:fo="http://www.w3.org/1999/XSL/Format"
>
<?running-header?>
<title id="B3.title">B3</title>
这使我可以手动添加 section.head.marker 和当前部分标题。