AH Formatter V6.6 では、フロート拡張により、ページ上の任意の場所への配置、段組の段をまたぐ配置など、高度なフロート配置の機能が実装されています。これにより、自動組版における図版等の配置の様々な要求を満たすことができます。
XSL-FOで使用の場合、フロート拡張プロパティ(axf:float-*)は fo:float オブジェクトに指定します。
CSSで使用の場合、フロート拡張プロパティ(-ah-float-*)はフロート対象にする要素に指定します。
注意: | XSL仕様では、float="left" は float="start" と、float="right" は float="end" と、解釈されることになっています。しかし、その仕様では、float を writing-mode によらずに物理的な left/right に位置させることができません。AH Formatter V6.6 の XSL-FO では、left/right は、物理的な方向を示すように解釈されます。clear も同様です。 |
---|
AH Formatter V6.6 では、axf:float-y="none" のフロートは改ページ(改段)時に分割されることがあります。分割を回避する場合は keep-together="always" を指定してください。
フロート関連拡張プロパティをまとめて指定するショートハンドプロパティです。 [CSS3-GCPM] Page floats (float は、2014-05-13以降のGCPMから削除されています )
Value: |
<float-x> || <float-y> || <float-wrap> || <float-reference> || <float-move> (XSL) [<float-x> || <float-y> || <float-wrap> || <float-reference> || <float-move>] | footnote | sidenote (CSS) |
Initial: | none |
Applies to: | fo:float / floated elements |
Inherited: | no |
Percentages: | N/A |
値の意味は以下のとおりです。
水平(縦書きでは垂直)方向のフロート配置を指定します。
垂直(縦書きでは水平)方向のフロート配置を指定します。
フロートへのテキスト回り込みの有無を指定します。
フロートを配置する参照エリアを指定します。
フロートを次のページ(または段)に移動するかどうかを指定します。
CSSで脚注を生成します。 ☞ CSSによる脚注・傍注
CSSで傍注を生成します。 ☞ CSSによる脚注・傍注
この拡張プロパティはショートハンドとして扱われ、個別の拡張プロパティにマッピングされます。例えば、
<!-- XSL-FO example --> <fo:float axf:float="before column auto-move"> ... </fo:float>
<!-- XHTML+CSS example --> <div style="-ah-float: before column auto-move"> ... </div>
は次と同じことになります:
<!-- XSL-FO example --> <fo:float axf:float-x="none" axf:float-y="before" axf:float-reference="column" axf:float-move="auto-move"> ... </fo:float>
<!-- XHTML+CSS example --> <div style="-ah-float-x: none; -ah-float-y: before; -ah-float-reference: column; -ah-float-move: auto-move"> ... </div>
詳しい説明は個別の拡張プロパティを参照してください。
絶対方向を表す値 left、right、top、bottom、center、inside、outside は、<float-x> と <float-y> のどちらにも展開されるあいまいさがあります。これは、次のように解決されます。
水平(縦書きでは垂直)方向のフロート配置を指定します。
Value: | none | start | end | left | right | top | bottom | center | inside | outside | alternate |
Initial: | none |
Applies to: | fo:float / floated elements |
Inherited: | no |
Percentages: | N/A |
値の意味は以下のとおりです。
水平(縦書きでは垂直)方向にはフロート配置しません。
start 側にフロート配置します。左から右の横書きの場合 left と同じです。
end 側にフロート配置します。左から右の横書きの場合 right と同じです。
左側にフロート配置します。横書き専用です。縦書きで指定することはできません。
右側にフロート配置します。横書き専用です。縦書きで指定することはできません。
上側にフロート配置します。縦書き専用です。横書きで指定することはできません。
下側にフロート配置します。縦書き専用です。横書きで指定することはできません。
水平(縦書きでは垂直)方向の中央にフロート配置します。
ノド側(右ページでは左側、左ページでは右側)にフロート配置します。横書き専用です。縦書きで指定することはできません。
小口側(右ページでは右側、左ページでは左側)にフロート配置します。横書き専用です。縦書きで指定することはできません。
段組の最初の段のときは end、最後の段のときは start、それ以外では center とみなします。段組でないときは center とみなします。
垂直(縦書きでは水平)方向のフロート配置を指定します。
Value: | none | before | after | top | bottom | left | right | center | inside | outside |
Initial: | none |
Applies to: | fo:float / floated elements |
Inherited: | no |
Percentages: | N/A |
値の意味は以下のとおりです。
垂直(縦書きでは水平)方向にはフロート配置しません。
before 側にフロート配置します。左から右の横書きの場合 top と同じです。
after 側にフロート配置します。左から右の横書きの場合 bottom と同じです。
上側にフロート配置します。横書き専用です。縦書きで指定することはできません。
下側にフロート配置します。横書き専用です。縦書きで指定することはできません。
左側にフロート配置します。縦書き専用です。横書きで指定することはできません。
右側にフロート配置します。縦書き専用です。横書きで指定することはできません。
垂直(縦書きでは水平)方向の中央にフロート配置します。
ノド側(右ページでは左側、左ページでは右側)にフロート配置します。縦書き専用です。横書きで指定することはできません。
小口側(右ページでは右側、左ページでは左側)にフロート配置します。縦書き専用です。横書きで指定することはできません。
フロートを配置する参照エリアを指定します。
Value: | auto | normal | page | multicol | column |
Initial: | auto |
Applies to: | fo:float / floated elements |
Inherited: | no |
Percentages: | N/A |
値の意味は以下のとおりです。
normal と基本的に同じです。ただし、CSS で float-y が none の場合、フロートのアンカーのあるブロックのインデントがフロート配置に影響します。
現在の参照エリア内でフロートを配置します。
ページエリア(region-body)内でフロートを配置します。
段組エリア内でフロートを配置します。
段エリア内でフロートを配置します。
float-y が none の場合には、x方向の配置のために参照するエリアを設定することになります。
CSSで使用の場合、float-y が none で float-reference が auto の場合、フロートのアンカーのあるブロックのインデントがフロート配置に影響しますが、float-reference に normal、page または column を指定することで、ブロックのインデントに関係なく配置できます。
フロートを次のページ(または段)に移動するかどうかを指定します。
Value: | auto | next | auto-next | auto-move | keep | keep-float |
Initial: | auto |
Applies to: | fo:float / floated elements |
Inherited: | no |
Percentages: | N/A |
値の意味は以下のとおりです。
float-y が none なら keep と同じ、それ以外なら auto-next と同じです。
フロートを次のページ(または段)に移動します。
現在のページ(または段)に十分な余白がない場合、フロートを次のページ(または段)に移動します。
現在のページ(または段)に十分な余白がない場合、フロートを次のページ(または段)に移動します。または、フロートを移動するのではなく、フロートのアンカーとまわりのテキストを次のページ(または段)に移動します。
フロートとそのアンカーは常に同じページ(または段)に配置されます。現在のページ(または段)にそのための十分な余白がない場合は、フロートのアンカーよりも前のところで改ページ(または改段)が起きて空白が生じることになります。
keep とほとんど同じですが、次の点が異なります。keep は、アンカーエリアに keep-with-next="always" が自動的に設定され、次のエリアとの間で改ページ(または改段)が抑止されますが、keep-float ではそれが行われません。これの動作上の違いは、アンカーエリアの高さがゼロのときに現れます。
float-x と float-y の値が両方とも none であればフロート配置はされないので float-move の指定も無効です。
テキストの回り込みについて指定します。
Value: | auto | wrap | skip |
Initial: | auto |
Applies to: | fo:float / floated elements |
Inherited: | no |
Percentages: | N/A |
値の意味は以下のとおりです。
float-x が none 以外なら wrap とし、none なら skip とします。
テキストの回り込みをします。ただし、段の中でフロートの両側に回り込めるスペースがあるような場合(float-x が center、あるいは float-offset-x の指定によります)は skip の扱いとなります。
テキストの回り込みをしません。フロートを飛ばしてテキストを配置します。
フロートへのテキスト回り込みのための幅(縦書きでは高さ)の最小値を指定します。
Value: | normal | <length> | <percentage> |
Initial: | normal |
Applies to: | fo:float / floated elements |
Inherited: | no |
Percentages: | refer to the size of containing block |
フロートへのテキスト回り込みのための幅(縦書きでは高さ)がこのプロパティで指定される幅(縦書きでは高さ)よりも小さければ、回り込みなしとします。
初期値 normal は標準のフロートの最小回り込み幅(縦書きでは高さ)とします。0pt の指定と同じです。
フロートの前後に配置するテキスト量の最小値を指定します。
Value: | normal | <length> | <percentage> |
Initial: | normal |
Applies to: | fo:float / floated elements |
Inherited: | no |
Percentages: | refer to the size of containing block |
float-y の値が none 以外の場合、組版対象領域内でフロートの前または後にテキストを配置するスペースがあるとき、その高さ(縦書きでは幅)がこのプロパティで指定される高さ(縦書きでは幅)よりも小さければ、そこにはテキストを配置しません。
float-y の値が none で float-move の値が auto-next の場合、組版対象領域内でフロートの後にテキストを配置するスペースが残っているとき、その高さ(縦書きでは幅)がこのプロパティで指定される高さ(縦書きでは幅)よりも小さければ、その高さ(縦書きでは幅)がゼロになるようにフロートの位置を移動します。フロートの後にあったテキストはフロートの前に移動することになります。
float-y の値が none で float-move の値が auto-move の場合、auto-next の場合と同様だが、組版対象領域内で、フロートの後だけでなくフロートの前のテキスト配置スペースの高さ(縦書きでは幅)も、このプロパティで指定される高さ(縦書きでは幅)よりも小さければ、その高さ(縦書きでは幅)がゼロになるようにフロートの位置を移動します。フロートの前にあったテキストはフロートの後に移動することになります。
初期値 normal は、0pt です。
フロートへのテキスト回り込みのための幅(縦書きでは高さ)が足りないときフロートをセンタリングするかどうかを指定します。
Value: | none | auto | <length> | <percentage> |
Initial: | none |
Applies to: | fo:float / floated elements |
Inherited: | no |
Percentages: | refer to the size of containing block |
値の意味は以下のとおりです。
フロートをセンタリングしません。
フロートへのテキスト回り込みのための幅(縦書きでは高さ)が float-min-wrap-x プロパティで指定された幅(縦書きでは高さ)に足りないときフロートをセンタリングします。
フロートへのテキスト回り込みのための幅(縦書きでは高さ)がこのプロパティで指定された幅(縦書きでは高さ)に足りないときフロートをセンタリングします。
フロートの前後にテキストを配置する高さ(縦書きでは幅)が足りないときフロートをセンタリングするかどうかを指定します。
Value: | none | auto | <length> | <percentage> |
Initial: | none |
Applies to: | fo:float / floated elements |
Inherited: | no |
Percentages: | refer to the size of containing block |
値の意味は以下のとおりです。
フロートをセンタリングしません。
フロートの前後にテキストを配置する高さ(縦書きでは幅)が float-min-wrap-y プロパティで指定された高さ(縦書きでは幅)に足りないときフロートをセンタリングします。
フロートの前後にテキストを配置する高さ(縦書きでは幅)がこのプロパティで指定された高さ(縦書きでは幅)に足りないときフロートをセンタリングします。
フロートと回り込むテキストとの間の余白を指定します(x方向)。
Value: | [ <length> | <percentage> ] [ <length> | <percentage> ]? |
Initial: | 0pt |
Applies to: | fo:float / floated elements |
Inherited: | no |
Percentages: | refer to the size of containing block |
値をふたつ指定した場合、最初の値が start 側、次の値が end 側の値となります。
フロートと前後のテキストとの間の余白を指定します(y方向)。
Value: | [ <length> | <percentage> ] [ <length> | <percentage> ]? |
Initial: | 0pt |
Applies to: | fo:float / floated elements |
Inherited: | no |
Percentages: | refer to the size of containing block |
値をふたつ指定した場合、最初の値が before 側、次の値が after 側の値となります。
フロートと別の隣接するフロートとの間の余白を指定します(x方向)。
Value: | auto | [[ <length> | <percentage> ] [ <length> | <percentage> ]?] |
Initial: | auto |
Applies to: | fo:float / floated elements |
Inherited: | no |
Percentages: | refer to the size of containing block |
初期値 auto は、float-margin-x の値と同じです。値をふたつ指定した場合、最初の値が start 側、次の値が end 側の値となります。
float-float-margin-x の値が float-margin-x の値を超える指定はできません。
フロートと別の隣接するフロートとの間の余白を指定します(y方向)。
Value: | auto | [[ <length> | <percentage> ] [ <length> | <percentage> ]?] |
Initial: | auto |
Applies to: | fo:float / floated elements |
Inherited: | no |
Percentages: | refer to the size of containing block |
初期値 auto は、float-margin-y の値と同じです。値をふたつ指定した場合、最初の値が before 側、次の値が after 側の値となります。
float-float-margin-y の値が float-margin-y の値を超える指定はできません。
フロートのオフセット配置を指定します(x方向)。
Value: | <length> | <percentage> |
Initial: | 0pt |
Applies to: | fo:float / floated elements |
Inherited: | no |
Percentages: | refer to the size of containing block minus the size of the float |
float-x が start なら end 側へのオフセット、end なら start 側へのオフセットを指定します。
フロートのオフセット配置を指定します(y方向)。
Value: | <length> | <percentage> |
Initial: | 0pt |
Applies to: | fo:float / floated elements |
Inherited: | no |
Percentages: | refer to the size of containing block minus the size of the float |
float-y が before なら after 側へのオフセット、after なら before 側へのオフセットを指定します。
単位 'gr' (grid)は特別な長さの単位であり、段組の段幅(column-width)と段間(column-gap)の両方をそれぞれ 1gr として数えます。このため、n段抜きの指定は (2n-1)gr となります。段幅または段間の途中までの長さの指定のために端数の指定も可能です。負の値は指定できません。
次は2段抜きのフロートの例:
<fo:float axf:float="multicol top left"> <fo:block-container width="3gr"> <fo:block>This is a two-column-spanning float.</fo:block> </fo:block-container> </fo:float>
ここで、'3gr' は段幅×2と段間×1を合わせた幅ということになります。
0.5gr = 0.5 columnWidth 1gr = 1 columnWidth 1.5gr = 1 columnWidth + 0.5 columnGap 2gr = 1 columnWidth + 1 columnGap 2.5gr = 1 columnWidth + 1 columnGap + 0.5 columnWidth 3gr = 1 columnWidth + 1 columnGap + 1 columnWidth (2n-1)gr = n columnWidth + (n-1) columnGap
注意: | gr は、axf:float="multicol" である float に対してのみ定義されます。その他の float および float 以外に適用することはできません。適用した場合の動作は不定となります。 |
---|
CSSで脚注を表現するには、(-ah-)float: footnote と @footnote で行います。 次はごく簡単な脚注の例です。 ☞ [CSS3-GCPM] Footnotes
これにより、<span class="footnote">~</span> で囲まれた部分がページ末に脚注として配置され、その部分は合印に置き換わります。 (-ah-)float: footnote は、脚注本体を表します(FOの<fo:footnote-body>に相当)。@footnote では、脚注の体裁を指定します。(-ah-)float を使って適切な配置を指定してください。footnote-display には対応していません。
合印の体裁は ::footnote-call で指定します。脚注に付く番号は ::footnote-marker で指定します。これらは、デフォルトの体裁がデフォルトスタイルシート(html.css)に指定されています。次のようにすると、番号付けを A, B, C... にすることができます。ここには、list-style-type に指定できるものが指定できます。
カウンタのリセットは、counter-reset: footnote を @pageなどに適宜指定します。
CSSで傍注を表現するには、(-ah-)float: sidenote と @sidenote で行います。 要領は脚注と同じです。 ☞ [CSS3-GCPM] Sidenotes (@sidenote は、2010-06-08以降のGCPMから削除されています)
::sidenote-call と ::sidenote-marker の指定は、デフォルトスタイルシートにはありません。
次の例は、ページの上部にフロートを配置します。
次の例は、ページの下部にフロートを配置します。
次の例は、段組エリアの右上角に3段抜きでフロートを配置します。
次の例は、段組エリアの下部のノド側にフロートを配置します。
次の例は、段の上部にフロートを配置します。
次の例は、段の下部にフロートを配置します。
フロートは、そのアンカーエリアの場所に配置されるため、画像などが含まれる場合、ページ余白が少ないと次のページに送られ、その結果ページ下部に大きな余白が残ることになります。これを避けるため、axf:float-moveプロパティを利用して、フロートを自動的にアンカーエリアから移動させて余白を解消することができます。ただし、移動する余地がない場合は、余白が残ることになるので注意してください。
次の例は、画像をテキストの回り込みなしでページの左右中央に配置します。このとき、ページ余白が少ないと、アンカーをその位置に残したまま、画像だけ次のページに移動します。このとき、axf:float-xの指定が必要なことに注意してください。
上の例で、axf:float-move="auto-move" を指定すると、余白の状況によっては、アンカー(とそのまわりのテキスト)が次のページに移動するようになります。結果として、画像が前のページに移動したように見えます。
フロートの移動では、章や節をまたいで移動して欲しくないことがあります。フロートは、他のフロートを越えて移動しないので、章や節の切れ目に、ダミーのフロートを入れることで、それを実現することができます。次のようにすることで、空のフロートが、他のフロートが章をまたぐのを防ぎます。
新しい章にあるフロートが前に移動するのを許したいことがあります。上の例では、空のフロートに keep-with-next="always" が設定されるので、新しい章の前にフロートが移動してくる余地がありません。axf:float-move="keep-float" を指定することでそれがなくなるので、この空のフロートは前のページの最後に配置されることになり、次のブロックの間に後からフロートが移動できるようになります。
AH Formatter V6.6 のフロート拡張機能には、以下のような制限事項があります。
fo:table-cellやfo:block-container中でのフロート拡張機能は、正しく配置されないことがあります。
段組で float-y が none で float-reference の値が multicol または page の場合に、指定の段以外でフロートへのテキストの回り込みがされず、テキストとフロートとが重なることがあります。
axf:float="page before" のとき、xsl-before-float-separator が定義されてる場合は標準XSL仕様での float="before" の動作となります。それ以外の場合では xsl-before-float-separator は表示されません。