You need to enable JavaScript to run this app. 使用XSL-FO将圣经章节号设置为首字下沉 实现XML转PDF排版
优惠活动
大模型
产品
解决方案
定价
更多

使用XSL-FO将圣经章节号设置为首字下沉 实现XML转PDF排版

XSL-FO 实现圣经章节号首字下沉效果方案

核心实现逻辑

单独提取章节号作为浮动元素,和首段文本形成自然环绕效果,无需修改全局段落排版规则,适配绝大多数FO处理器的PDF导出逻辑。

核心代码实现

你可以在现有的XSLT模板中新增章节号匹配逻辑,示例代码如下:

<!-- 匹配圣经章节根节点 -->
<xsl:template match="chapter">
  <!-- 章节号浮动下沉配置 -->
  <fo:float float="start">
    <fo:block 
      font-size="3em" 
      font-weight="bold"
      line-height="1"
      margin-right="0.25em"
      margin-bottom="0.1em"
      padding-top="0.1em"
    >
      <xsl:value-of select="@chapter-num"/>
    </fo:block>
  </fo:float>
  <!-- 章节首段单独配置,取消首行缩进适配下沉效果 -->
  <fo:block text-indent="0">
    <xsl:apply-templates select="verse[1]/node()"/>
  </fo:block>
  <!-- 剩余经文正常渲染 -->
  <xsl:apply-templates select="verse[position() > 1]"/>
</xsl:template>

注意:代码中的节点名chapter、@chapter-num、verse需要和你实际的XML结构字段对应,替换为你自己的节点名即可生效。

参数调整说明

  • 下沉行数通过font-size控制:3em对应下沉3行,2.2em对应下沉2行,数值需要和你正文的行高参数匹配
  • margin-right控制章节号和右侧经文的间距,避免内容贴边
  • 如果出现下沉号和下方文本重叠的情况,适当增加margin-bottom的数值即可解决

兼容性提示

Apache FOP 2.0及以上版本对fo:float的支持已经完全稳定,不会出现排版错位问题。如果使用其他FO处理器,仅需验证浮动属性的支持情况,核心逻辑无需调整。

内容的提问来源于stack exchange,提问作者Andrej90

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 07:45:10