XSL:FO 流畅的行内引语
XSL:FO flowing inline quotations
我正在使用 XSL:FO (XEP) 将 XML 文档输出为 PDF。除了引入引号外,一切都很好。出于某种原因,带引号的短语不会 'flow'。这在图片中得到了最好的证明:
来源 xml 如下所示:
<seg>Item. Dixit quod P[etrus] Gauta loqutus est
publice Bernardo, domino del Mas, contra
ipsum testis in hunc modum <quote>Bernarde del Mas,
est ne bonum quod aliquis qui detexerit nos eat vivus
super terram?</quote> Et propter illa verba, ipse testis cum
familia sua exivit de Manso.</seg>
<seg>Item. Dixit quod Iordanus de Quiders
dixit <quote>Nuper ipsi testis modo apparebit quis
expeditus erit citius vos qui provenistis alios in
confessione</quote>. Et abiuravit heresim et
iuravit et cetera. Testes: Arnaldus, prior Sancti
Saturnini; et magister P[etrus] de Caramag;
et frater B[ernardus], inquisitor.</seg>
XSL:FO 很简单。 <quote>
元素替换为 "
<xsl:template match="quote">
<fo:inline><xsl:text>"</xsl:text><xsl:apply-templates/><xsl:text>"</xsl:text></fo:inline>
</xsl:template>
用一个简单的fo:flow
就可以激活(剩下的文字流有零流量问题):
<!-- content flow -->
<fo:flow flow-name="xsl-region-body" font-family="Times" font-weight="normal" font-size="10pt">
<xsl:apply-templates/>
</fo:flow>
是否有处理内联引号的特殊方法?
---- 已添加 ----
这是处理 <seg>
元素的模板,强制每个元素进入一个新段落。
<xsl:template match="seg">
<xsl:for-each select=".">
<fo:block
font-family="Times" font-weight="normal" line-height="12pt" line-stacking-strategy="font-height" keep-together="always"
font-size="10pt" space-before="10pt" space-after="10pt" text-align="justify" end-indent="120pt">
<xsl:apply-templates/>
</fo:block>
</xsl:for-each>
</xsl:template>
提前致谢。
将 keep-together
更改为 keep-together.within-page
。目前,您强制 fo:inline
保持在一行内。参见 https://www.w3.org/TR/xsl11/#keep-together。
严格来说,您甚至不需要 fo:inline
,因为您没有使用 fo:inline
添加或更改任何属性。您可能还想使用 'curly quotes'(“
和 ”
)来改善文本的外观。
我正在使用 XSL:FO (XEP) 将 XML 文档输出为 PDF。除了引入引号外,一切都很好。出于某种原因,带引号的短语不会 'flow'。这在图片中得到了最好的证明:
来源 xml 如下所示:
<seg>Item. Dixit quod P[etrus] Gauta loqutus est
publice Bernardo, domino del Mas, contra
ipsum testis in hunc modum <quote>Bernarde del Mas,
est ne bonum quod aliquis qui detexerit nos eat vivus
super terram?</quote> Et propter illa verba, ipse testis cum
familia sua exivit de Manso.</seg>
<seg>Item. Dixit quod Iordanus de Quiders
dixit <quote>Nuper ipsi testis modo apparebit quis
expeditus erit citius vos qui provenistis alios in
confessione</quote>. Et abiuravit heresim et
iuravit et cetera. Testes: Arnaldus, prior Sancti
Saturnini; et magister P[etrus] de Caramag;
et frater B[ernardus], inquisitor.</seg>
XSL:FO 很简单。 <quote>
元素替换为 "
<xsl:template match="quote">
<fo:inline><xsl:text>"</xsl:text><xsl:apply-templates/><xsl:text>"</xsl:text></fo:inline>
</xsl:template>
用一个简单的fo:flow
就可以激活(剩下的文字流有零流量问题):
<!-- content flow -->
<fo:flow flow-name="xsl-region-body" font-family="Times" font-weight="normal" font-size="10pt">
<xsl:apply-templates/>
</fo:flow>
是否有处理内联引号的特殊方法?
---- 已添加 ----
这是处理 <seg>
元素的模板,强制每个元素进入一个新段落。
<xsl:template match="seg">
<xsl:for-each select=".">
<fo:block
font-family="Times" font-weight="normal" line-height="12pt" line-stacking-strategy="font-height" keep-together="always"
font-size="10pt" space-before="10pt" space-after="10pt" text-align="justify" end-indent="120pt">
<xsl:apply-templates/>
</fo:block>
</xsl:for-each>
</xsl:template>
提前致谢。
将 keep-together
更改为 keep-together.within-page
。目前,您强制 fo:inline
保持在一行内。参见 https://www.w3.org/TR/xsl11/#keep-together。
严格来说,您甚至不需要 fo:inline
,因为您没有使用 fo:inline
添加或更改任何属性。您可能还想使用 'curly quotes'(“
和 ”
)来改善文本的外观。