You need to enable JavaScript to run this app. 如何在XSLT中引用TEI XML的lg元素n属性生成带reledmac的LaTeX输出
优惠活动
大模型
产品
解决方案
定价
更多

如何在XSLT中引用TEI XML的lg元素n属性生成带reledmac的LaTeX输出

解决方案

1. 打印诗节编号

你提供的XSLT模板中,<xsl:text>\stanza[ ] </xsl:text>一行负责输出LaTeX的\stanza命令,方括号内的内容就是诗节的前置标注,修改这部分代码即可读取lg标签的n属性输出§格式的编号:
找到原代码中的对应片段:

<xsl:text>                     
\stanza[ ] </xsl:text>

替换为:

<xsl:text>                     
\stanza[§</xsl:text>
<xsl:value-of select="@n"/>
<xsl:text>] </xsl:text>

XSLT中用@n即可直接获取当前节点的n属性值,上述代码会生成形如\stanza[§1]的LaTeX代码,PDF输出时就会在对应诗节前显示§1的编号。

2. 打印行号

如果需要输出l标签的n属性作为行号,找到样式表中匹配tei:l的模板,在输出行内容的代码前添加行号输出逻辑即可,示例代码如下:

<xsl:template match="tei:l">
  <!-- 输出行号,可根据需要调整格式,比如加缩进、括号等 -->
  <xsl:value-of select="@n"/>
  <xsl:text>\quad</xsl:text>
  <!-- 保留原有输出行内容的逻辑 -->
  <xsl:apply-templates/>
  <!-- 换行 -->
  <xsl:text>\\</xsl:text>
</xsl:template>

如果你需要同步TEI的行号和reledmac的自动计数,可在上述模板开头添加:

<xsl:text>\setcounter{linenumber}{</xsl:text>
<xsl:value-of select="@n"/>
<xsl:text>}</xsl:text>

原模板逻辑说明

你提供的tei:lg匹配模板核心作用是处理TEI和LaTeX的语法差异:TEI允许诗节标签<lg>嵌套在段落标签<p>中,但LaTeX的stanza环境不能放在段落内,所以模板检测到<lg>在<p>内时会先输出\pend关闭当前段落,再输出\stanza命令生成诗节。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 09:39:04