29097


HTMLで段落内で改行させるなら

[code]

    <p>あいうえお<br/>かきくけこ</p>
    
[/code]

とすれば良いはずですが、これをXSL-FOで行う場合はどのようにしたら良いでしょうか？

[code]

    <fo:block>あいうえおかきくけこ</fo:block>
    
[/code]

の"あいうえお"と"かきくけこ"の間で改行させたいのです．


CC BY-SA 3.0
2016-08-31T13:55:18.420
28609
2016-12-16T16:18:17.210
2016-09-24T14:31:47.313
9503
9503
question
xsl
XSL-FOでの段落内改行


検索してみたところ次の２つの方法があるようです。

[code]

    <fo:block linefeed-treatment="preserve">あいうえお<fo:character character="&#x0A;"/>かきくけこ</fo:block>
    
[/code]

引用元：<http://www.antenna.co.jp/XSL-FO/support/qa/QA/2002032506.html>

* * *
[code]

    <fo:block>あいうえお<fo:block white-space-collapse="false">&#10;</fo:block>かきくけこ</fo:block>
    
[/code]

引用元：[http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=1865&forum=9](http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=1865&forum=9)


CC BY-SA 3.0
2016-08-31T14:19:03.130
28610
2016-08-31T14:19:03.130
5044
28609
answer


自分で調べてみました．

[code]

    <fo:block>あいうえおかきくけこ</fo:block>
    
[/code]

で"お"と"か"の間で改行させるには、

[code]

    <fo:block>あいうえお<fo:block/>かきくけこ</fo:block>
    
[/code]

と空のfo:blockを入れます．空のブロックにより高さゼロのブロックエリアが生成され、行は分割されます．

[code]

    あいうえお
    かきくけこ
    
[/code]

では2行以上改行させるのにはどのようにしたら良いのでしょうか？この場合`<fo:block/>`を２つ続けて挿入してもうまくゆきません．なぜならば高さゼロのブロックエリアをいくら積み上げてもゼロににしかならないからです．2個目以上の改行を行うには内容の入ったfo:blockを挿入させる必要があります．例えば

[code]

    <fo:block>あいうえお<fo:block/><fo:block>&#xA0;</fo:block>かきくけこ</fo:block>
    
[/code]

と、U+00A0のNO-BREAK SPACEが入ったfo:blockを挿入します．これにより、

[code]

    あいうえお
    
    かきくけこ
    
[/code]

という結果を得ることができます．

以上の結果をまとめたサンプルを示します．

[code]

    <fo:block space-before="3mm" border="thin solid red">あいうえお<fo:block/>かきくけこ</fo:block>
    <fo:block space-before="3mm" border="thin solid blue">さしすせそ<fo:block/><fo:block>&#xA0;</fo:block>たちつてと</fo:block>
    <fo:block space-before="3mm" border="thin solid green">なにぬねの<fo:block/><fo:block/>はひふねほ</fo:block>
    
[/code]

[![サンプルの組版結果](https://i.stack.imgur.com/LTQaL.png)](https://i.stack.imgur.com/LTQaL.png)


CC BY-SA 3.0
2016-09-24T14:27:01.893
29097
2016-09-25T08:25:49.900
2016-09-25T08:25:49.900
9503
9503
28609
answer