1

Dita-OT 2.1.0 を使用しており、Dita ドキュメントの PDF 出力をカスタマイズしようとしました。私のドキュメントは、短いまたは複数ページの長さの多くの表で構成されています。私がやりたいことは、可能であればテーブルが複数のページに分かれないようにすることです。たとえば、表が 2 ページに分割されないようにする場合は、表の前に新しいページを配置したいと考えています。

私が試したのは、これをcustom.xslに入れることでした

<xsl:attribute-set name="tbody.row">
<xsl:attribute name="keep-with-next.within-page">always</xsl:attribute>
</xsl:attribute-set>

行が同じページにとどまるように見えますが、1行が次のページに移動するのに十分な長さである場合、そこにテーブル全体を移動するのではなく、そこに移動します..これを修正する方法はありますか?

設定あり

<xsl:attribute-set name="table">
    <xsl:attribute name="keep-together.within-page">always</xsl:attribute>
</xsl:attribute-set>

それでもうまくいきません。テーブルは同じページにとどまるようになりましたが、1 ページより長いテーブルは完全には表示されません。

4

3 に答える 3

1

次のようなことも試してください。

<xsl:attribute name="keep-together.within-page">1</xsl:attribute>

答えの可能な説明はここにあります: http://www.dpawson.co.uk/xsl/sect3/keepsNbreaks.html

于 2015-09-02T13:09:35.167 に答える
0

ワンパスプロセスでやりたいことをすることはできません。

テーブルがページに収まる場合は、 keep-together.within-page を使用してそれを強制できますが、テーブルを生成する時点では、テーブルの大きさを知る一般的な方法はありません。

FO は、「ページ全体が収まる場合にのみテーブル全体をページ内に保持し、そうでない場合は必要に応じて分割する」と言う方法を提供しません。

テーブル レイアウトをより正確に調整できるようにマルチパス処理を行う方法がありますが、それにはカスタム プログラミングが必要であり、特定の FO エンジンに依存します (ただし、アンテナ ハウスまたは FOP のいずれかで動作するオプションが 1 つあります)。http://www.w3.org/community/ppl/wiki/XSLTExtensions )

妥協案の 1 つは、最初のn行で keep-with-next を使用して、テーブルが早期に壊れないようにすることですが、これは行が一貫した深さである場合にのみ機能します。行の深さが大きく異なる可能性がある場合は、最初のn行が 1 ページを超えてから急増する状況がまだあります。

于 2015-09-03T13:40:52.617 に答える