PDF 输出问题(使用 xsl-fo 和 xml 创建圣经)
Problem with PDF Output (creating bible with xsl-fo and xml)
美好的一天,
first:我是初学者关于我想问的问题:
我已经尝试 XSL-FO 一段时间了,但通常会达到我的极限。
我正在编写一本圣经,同时也在使用 XML。但是现在有设计问题,所以从PDF.
我希望 PDF 具有以下输出:
http://www.freie-bibel.de/official/projekt/hag2latex8.png
它当然是乳胶,但输出应该是相似的。
特别是经文应该在外面。
脚注掉了。
然而,我并不太成功。
要编辑文件,您可以在此处查看:
https://xsltfiddle.liberty-development.net/nb9PtDi/95
有没有人有什么想法可以帮助我?
非常感谢!
如果您使用的是 AH Formatter,您可以将节号放在 fo:change-bar-begin
中(参见 https://www.antenna.co.jp/AHF/help/en/ahf-ext.html#fo.change-bar-begin) and specify change-bar-placement="alternate"
to get the correct positions (see https://www.w3.org/TR/xsl11/#change-bar-placement)。
我不知道 John 11:35 (https://en.wikipedia.org/wiki/Jesus_wept) 的德语是否也这么短,但是如果一行中有两个节号,这种技术会有问题。 LaTeX 版本如何处理?
(使用 AH Formatter,您也可以删除章节编号(参见 https://www.antenna.co.jp/AHF/help/en/ahf-ext.html#DropCapitals),但如果它只是一个数字而不是单词的首字母,您也可以使用fo:float
.)
这里是使用 AH Formatter fo:float
扩展的例子。前缀 axf:
表示 AH Formatter 扩展。 ( xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions"
)
<xsl:template match="VERSE">
<xsl:apply-templates/>
<xsl:text> </xsl:text>
</xsl:template>
<xsl:template match="VERSE/text()">
<xsl:if test="not(preceding-sibling::node()) and not(parent::*/@vnumber = 1)">
<fo:float axf:float-x="column-outside" axf:float-offset-x="-2em">
<fo:block-container width="2em" top="-1lh">
<fo:block line-height.conditionality="discard" text-align="center" text-align-last="center" padding-top="-1lh">
<fo:inline font-weight="bold" font-size="0.9em">
<xsl:value-of select="parent::*/@vnumber"/>
</fo:inline>
</fo:block>
</fo:block-container>
</fo:float>
</xsl:if>
<fo:inline font-style="{$Schriftschnitt}">
<xsl:value-of select="."/>
</fo:inline>
</xsl:template>
屏幕截图:
美好的一天, first:我是初学者关于我想问的问题:
我已经尝试 XSL-FO 一段时间了,但通常会达到我的极限。 我正在编写一本圣经,同时也在使用 XML。但是现在有设计问题,所以从PDF.
我希望 PDF 具有以下输出: http://www.freie-bibel.de/official/projekt/hag2latex8.png 它当然是乳胶,但输出应该是相似的。 特别是经文应该在外面。 脚注掉了。
然而,我并不太成功。 要编辑文件,您可以在此处查看: https://xsltfiddle.liberty-development.net/nb9PtDi/95
有没有人有什么想法可以帮助我? 非常感谢!
如果您使用的是 AH Formatter,您可以将节号放在 fo:change-bar-begin
中(参见 https://www.antenna.co.jp/AHF/help/en/ahf-ext.html#fo.change-bar-begin) and specify change-bar-placement="alternate"
to get the correct positions (see https://www.w3.org/TR/xsl11/#change-bar-placement)。
我不知道 John 11:35 (https://en.wikipedia.org/wiki/Jesus_wept) 的德语是否也这么短,但是如果一行中有两个节号,这种技术会有问题。 LaTeX 版本如何处理?
(使用 AH Formatter,您也可以删除章节编号(参见 https://www.antenna.co.jp/AHF/help/en/ahf-ext.html#DropCapitals),但如果它只是一个数字而不是单词的首字母,您也可以使用fo:float
.)
这里是使用 AH Formatter fo:float
扩展的例子。前缀 axf:
表示 AH Formatter 扩展。 ( xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions"
)
<xsl:template match="VERSE">
<xsl:apply-templates/>
<xsl:text> </xsl:text>
</xsl:template>
<xsl:template match="VERSE/text()">
<xsl:if test="not(preceding-sibling::node()) and not(parent::*/@vnumber = 1)">
<fo:float axf:float-x="column-outside" axf:float-offset-x="-2em">
<fo:block-container width="2em" top="-1lh">
<fo:block line-height.conditionality="discard" text-align="center" text-align-last="center" padding-top="-1lh">
<fo:inline font-weight="bold" font-size="0.9em">
<xsl:value-of select="parent::*/@vnumber"/>
</fo:inline>
</fo:block>
</fo:block-container>
</fo:float>
</xsl:if>
<fo:inline font-style="{$Schriftschnitt}">
<xsl:value-of select="."/>
</fo:inline>
</xsl:template>
屏幕截图: