我想创建一个pdf base don a dita / xml map,其中一个主题的格式是报纸样式的两列输出。
我在layout-masters-attr样式表中找到了要使用的属性:<xsl:attribute name="column-count">2</xsl:attribute>
这会为整个文档创建一个两列输出。所以我在区域主体属性集中添加了@outputclass
参数。这样做不会给我正确的结果。有人知道如何在ditamap中为单个主题创建两列输出吗?
我的样式表定义:
<xsl:attribute-set name="region-body" use-attribute-sets="region-body.odd"/>
<xsl:attribute-set name="region-body.odd">
<xsl:attribute name="margin-top">
<xsl:value-of select="$body-margin"/>
</xsl:attribute>
<xsl:attribute name="margin-bottom">
<xsl:value-of select="$body-margin"/>
</xsl:attribute>
<xsl:attribute name="{if ($writing-mode = 'lr') then 'margin-left' else 'margin-right'}">
<xsl:value-of select="$page-margin-inside"/>
</xsl:attribute>
<xsl:attribute name="{if ($writing-mode = 'lr') then 'margin-right' else 'margin-left'}">
<xsl:value-of select="$page-margin-outside"/>
</xsl:attribute>
<xsl:attribute name="column-count">
<xsl:choose>
<xsl:when test="@outputclass = 'twocol'">2</xsl:when>
<xsl:otherwise>1</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
</xsl:attribute-set>
我的主题定义:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE topic PUBLIC "-//OASIS//DTD DITA Topic//EN" "topic.dtd">
<topic id="topic_hbq_pxv_yy">
<title>test</title>
<prolog/>
<body outputclass="twocol">
答案 0 :(得分:0)
问题是页面序列必须具有正确的列计数属性以及PDF2插件的工作方式,这是针对文档,TOC,索引,正文等的特定区域设置的。您可以不仅仅是
要实现您想要的目标,您只需获取主题的内容并将其放入2列表中即可。虽然不是最好的解决方案,但它是目前实施方案中最好的解决方案。
答案 1 :(得分:0)
如果您有机会使用Antenna House Formatter进行PDF生成,您可以通过指定fo:block-container / column-count =“2”轻松生成两个列布局。
column-count / CSS(-ah-)列数
http://www.antenna.co.jp/AHF/help/v64e/ahf-ext.html#columns
样式表非常简单如下:
<xsl:template match="*[contains(@class,' topic/body ')][string(@outputclass) eq 'twocol']" priority="2">
<fo:block-container column-count="2">
<xsl:next-match/>
</fo:block-container>
</xsl:template>