axf:column-rule-style

(Auszug aus "XSL-FO ― Die Referenz" von Manuel Montero Pineda & Steffen Herkert, 2016, dpunkt.verlag)

A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z

Category Columns >> Column Rule

The axf:column-rule-style specifies the style of the column rule. [CSS3-Multicol] ‘column-rule-style’

Value:<border-style>
Initial:none
Applies to:fo:region-body, fo:block-container
Inherited:no
Percentages:N/A

XSL-FO sample:

<fo:root xml:lang="ja" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:cpfo="http://www.compart.net/xmlns/cpfo" xmlns:svg="http://www.w3.org/2000/svg" xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions">

Antenna House, Inc.

-

-

keep-together.within-page="always" 指定で改ページされる fo:table-rowfo:list-item のオーバーフローを回避する例

表の fo:table-row などページで分割させず、ページに収まらなければ fo:table-row を改ページさせる指定として keep-together.within-page="always" があります。しかし、改ページされた fo:table-row が移動先のページに収まらない長さの場合、ページの下部からオーバーフローする現象が発生します。これは always がページで分割させるのを許さない値であるためです。このサンプルは keep-together によるオーバフローを回避する方法を紹介します。なお、1ページ内で keep-together 指定の表示のされ方を確認いただくため keep-together.within-page を、段組と keep-together.within-column へ置き換えて説明します。各段を1ページとしてご覧ください。

まず、

ページ目の表は keep-together の指定がない例です。No.2 を含む fo:table-row が段で分割しますが、そのまま出力されます。次に

ページ目は各 fo:table-row へ keep-together で always を指定した表です。No.2 を含む fo:table-row が段で分割せず改段しますが、fo:table-row が移動先の2段目に収まらないためページの下部からオーバーフローします。

keep-together 指定なし

No.

Details

No.1

Item a Details sample

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam bibendum tincidunt pharetra. Aenean ultricies molestie ante, sit amet ultricies nunc mollis id. Duis volutpat, quam quis aliquet tristique.

No.2

Item b Details sample

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam bibendum tincidunt pharetra. Aenean ultricies molestie ante, sit amet ultricies nunc mollis id. Integer ut porttitor felis, vel tincidunt velit. Duis volutpat, quam quis aliquet tristique, nulla dui malesuada velit, et consectetur tellus ipsum et arcu.

Sed viverra metus quis nibh pulvinar, at dignissim nibh adipiscing. Duis sit amet ipsum non elit tincidunt sagittis ac non tortor. Mauris commodo, elit a imperdiet interdum, nulla velit viverra elit, at scelerisque urna est eget lacus. Integer eu lobortis neque. Donec malesuada sed arcu vitae fringilla.

No.3

Item b Details sample

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

keep-together、always を指定

fo:table-row へ keep-together.within-column="always" を指定しています。

No.

Details

No.1

Item a Details sample

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam bibendum tincidunt pharetra. Aenean ultricies molestie ante, sit amet ultricies nunc mollis id. Duis volutpat, quam quis aliquet tristique.

No.2

Item b Details sample

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam bibendum tincidunt pharetra. Aenean ultricies molestie ante, sit amet ultricies nunc mollis id. Integer ut porttitor felis, vel tincidunt velit. Duis volutpat, quam quis aliquet tristique, nulla dui malesuada velit, et consectetur tellus ipsum et arcu.

Sed viverra metus quis nibh pulvinar, at dignissim nibh adipiscing. Duis sit amet ipsum non elit tincidunt sagittis ac non tortor. Mauris commodo, elit a imperdiet interdum, nulla velit viverra elit, at scelerisque urna est eget lacus. Integer eu lobortis neque. Donec malesuada sed arcu vitae fringilla.

No.3

Item b Details sample

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

keep-together 、integer(数値指定)について -1- (オーバフロー回避)

keep-together の always 指定では、

ページ目のように改段後の fo:table-row がオーバーフローする場合があります。これを、XSL-FO の仕様

7.20.3 "keep-together"

の integer(数値指定)に基づいた AH Formatter の実装によりオーバーフローしないようにできます。

ページでは次のコードのように fo:table-row へ keep-together.within-column="1" を指定しオーバーフローを回避しています。

<fo:table-body> <fo:table-row keep-together.within-column="1"><fo:table-cell>...</fo:table-cell></fo:table-row> <fo:table-row keep-together.within-column="1"><fo:table-cell>...</fo:table-cell></fo:table-row> ... </fo:table-body>

keep-together へ指定する数値は強度を表し大きいほど強くなり、指定の判定は ページ、段、行のエリア中で行われます。なお、auto や指定なしでは keep-together の指定がないものとして扱われ、always は最強です。

AH Formatter による keep-together 数値指定の実装では、指定のある fo が生成するコンテンツが判定のエリア、例えばページに収まらない場合、keep-together 指定を効かせコンテンツを改ページします。そして、次の判定のエリアであるページにコンテンツが収まらない場合は、keep-together の指定に関わらずコンテンツをページで分割させます。よって、

ページのサンプルでは keep-together.within-column="1" が指定されている No.2 を含む fo:table-row は1段目に収まらないため keep-together の指定により改段します。2段目に送られた fo:table-row はページに収まりませんがページで分割されるためオーバーフローしません。

keep-together、数値を指定

keep-together.within-column="1" を fo:table-row へ指定しています。

No.

Details

No.1

Item a Details sample

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam bibendum tincidunt pharetra. Aenean ultricies molestie ante, sit amet ultricies nunc mollis id. Duis volutpat, quam quis aliquet tristique.

No.2

Item b Details sample

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam bibendum tincidunt pharetra. Aenean ultricies molestie ante, sit amet ultricies nunc mollis id. Integer ut porttitor felis, vel tincidunt velit. Duis volutpat, quam quis aliquet tristique, nulla dui malesuada velit, et consectetur tellus ipsum et arcu.

Sed viverra metus quis nibh pulvinar, at dignissim nibh adipiscing. Duis sit amet ipsum non elit tincidunt sagittis ac non tortor. Mauris commodo, elit a imperdiet interdum, nulla velit viverra elit, at scelerisque urna est eget lacus. Integer eu lobortis neque. Donec malesuada sed arcu vitae fringilla.

No.3

Item b Details sample

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

keep-together 、integer(数値指定)について -2-

補足として keep-together の数値指定が次のコードのように複数指定されている場合を説明いたします。

<fo:table-body keep-together.within-column="2"> <fo:table-row keep-together.within-column="1"><fo:table-cell>...</fo:table-cell></fo:table-row> <fo:table-row keep-together.within-column="2"><fo:table-cell>...</fo:table-cell></fo:table-row> <fo:table-row keep-together.within-column="3"><fo:table-cell>...</fo:table-cell></fo:table-row> </fo:table-body>

fo に keep-together、数値 "N" が指定されており、さらにその子供の fo に keep-together、数値 "M" が指定されているケースにおいて、二つ目(以後)の子供が、その前の子供と同じ判定エリアであるページに入りきらないケースを想定します。このとき、数値指定による結果は次のようになります。

・N≧M:数値 N が有効になり、二つ目の子供の fo は前の fo と同じページから始まりページで分割します。

・N<M:数値 N が無効になり、二つ目の子供の fo の前で改ページします。

ページ目のサンプルは上記コードのように fo:table-body に keep-together.within-column="2" を指定、No.1、2、3 を含む fo:table-row へ順に keep-together.within-column="1"、"2"、"3" を指定しています。1段目では、二つ目の No.2 を含む fo:table-row が1段目に収まりませんが、fo:table 数値"2"、fo:table-row 数値"1"、"2" で、fo:table≧fo:table-row となります。fo:table の keep-together が有効、No.1、2 の fo:table-row は同じ段から始まり、No.2 の fo:table-row は段で分割します。3段目、No.3 を含む fo:table-row は fo:table 数値"2"、fo:table-row 数値"3" となり、fo:table<fo:table-row です。fo:table の keep-together は無効、No.3 の fo:table-row の前で改段されます。また、改段後のエリアに収まらないコンテンツは段で分割され、オーバーフローしません。

keep-together、数値を指定

keep-together.within-column="数値" を fo:table、fo:table-row へ指定しています。

No.

Details

No.1

Item a Details sample

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam bibendum tincidunt pharetra. Aenean ultricies molestie ante, sit amet ultricies nunc mollis id. Duis volutpat, quam quis aliquet tristique.

No.2

Item b Details sample

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam bibendum tincidunt pharetra. Aenean ultricies molestie ante, sit amet ultricies nunc mollis id. Integer ut porttitor felis, vel tincidunt velit. Duis volutpat, quam quis aliquet tristique, nulla dui malesuada velit, et consectetur tellus ipsum et arcu.

Sed viverra metus quis nibh pulvinar, at dignissim nibh adipiscing. Duis sit amet ipsum non elit tincidunt sagittis ac non tortor. Mauris commodo, elit a imperdiet interdum, nulla velit viverra elit, at scelerisque urna est eget lacus. Integer eu lobortis neque. Donec malesuada sed arcu vitae fringilla.

No.3

Item b Details sample

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

keep-together、integer(数値指定)を fo:list-item へ適用した例

keep-together へ数値を指定してオーバーフローを回避させる方法は、fo:table-row 以外に例えば fo:list-item の場合でも有効です。fo:list-item では、次のようなコード指定となります。

<fo:list-block> <fo:list-item keep-together.within-page="1"> <fo:list-item-label>...</fo:list-item-label> <fo:list-item-body>...</fo:list-item-body> </fo:list-item> <fo:list-item keep-together.within-page="1"> <fo:list-item-label>...</fo:list-item-label> <fo:list-item-body>...</fo:list-item-body> </fo:list-item> </fo:list-block>

ページ目は keep-together 指定なし、

ページ目は keep-together と always 指定、そして、

ページ目は keep-together へ数値指定した場合のサンプルです。

keep-together 指定なし

label-1

list-item-sample-1

list-item-sample-1

list-item-sample-1

list-item-sample-1

list-item-sample-1

list-item-sample-1

list-item-sample-1

list-item-sample-1

list-item-sample-1

list-item-sample-1

list-item-sample-1

label-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

label-3

list-item-sample-3

list-item-sample-3

list-item-sample-3

list-item-sample-3

list-item-sample-3

keep-together、alwaysを指定

fo:list-item へ keep-together.within-column="always"を指定しています。

label-1

list-item-sample-1

list-item-sample-1

list-item-sample-1

list-item-sample-1

list-item-sample-1

list-item-sample-1

list-item-sample-1

list-item-sample-1

list-item-sample-1

list-item-sample-1

list-item-sample-1

label-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

label-3

list-item-sample-3

list-item-sample-3

list-item-sample-3

list-item-sample-3

list-item-sample-3

keep-together、数値を指定

keep-together.within-column="1" を fo:list-item へ指定しています。

label-1

list-item-sample-1

list-item-sample-1

list-item-sample-1

list-item-sample-1

list-item-sample-1

list-item-sample-1

list-item-sample-1

list-item-sample-1

list-item-sample-1

list-item-sample-1

list-item-sample-1

label-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

list-item-sample-2

</