1

到目前为止,我希望你们都度过了愉快的假期!

我目前正在研究从 DocBook 到 apache fo(然后再到 PDF)的 XSLT 转换,但我在一张桌子上苦苦挣扎。

这是我的样式表的相关部分。

<fo:block>
  <fo:table border-style="none" border-width="0pt">    
    <fo:table-column column-width="20%"/>
    <fo:table-column column-width="80%"/>                  
     <fo:table-body>                                               
       <fo:table-row>                                             
         <fo:table-cell border-style="solid" border-width="1pt" text-align="start" padding-left="0cm"> 
           <fo:block font-weight="bold">First Column <xsl:text> </xsl:text> <xsl:number level="multiple" count="d:appnote" format="1"/>
            </fo:block>                         
         </fo:table-cell>                         
         <fo:table-cell  border-style="solid" border-width="1pt" text-align="start"> 
           <fo:block><xsl:value-of select="d:description" /></fo:block>
         </fo:table-cell>                        
      </fo:table-row>
    </fo:table-body>
  </fo:table>
</fo:block>

不幸的是,生成的表格在表格的左边框和文本的开头之间显示了一些相当大的边距(即使我设置了 padding-left="0cm")

在此处输入图像描述

我尝试了十几种不同的属性和选项,但我无法摆脱这个空白。
有人给我小费吗?

4

1 回答 1

2

start-indent属性由设置它的那个的后代 FO 元素继承,这有时会导致一些违反直觉的结果。

由于显然并非所有实现的行为方式都相同,FOP 的网站有一个特定的常见问题解答条目:当我使用边距时,嵌套表或块容器中的内容会缩进两次。这是一个错误吗?


因此,在您的情况下,表格单元格的内容很可能继承了start-indent祖先元素(甚至是非常遥远的元素)上的集合。

如果是这种情况,您可以在 上添加一个start-indent="0pt"属性以将fo:table-body其“重置”为 0。

于 2017-12-30T09:17:06.607 回答