XSL-FO

fo:page-sequence-master

この前fo:page-sequenceの話を出しましたのでついでに、そのページレイアウトを規定するfo:page-sequence-masterの話を書きたいと思います.と言っても仕様の解説という訳ではなく、陥りやすい間違いについてです.fo:page-sequenceはmaster-reference属性で…

fo:page-sequence ページ番号の制御

非常に素朴と言うか基本的な話なのですが、fo:page-sequenceのページ番号の制御で以前ハマっている例を見たことがあります.fo:page-sequenceというのは、XSL-FOのfo:rootの下の中核的なオブジェクトで一連の同じ特徴を持ったページコンテンツの集まりです.…

画像をオーバーフローさせずにページに収める.(2)

画像がページの縦方向(ブロックの進行方向)にオーバーフローするのを防止するのにはどうしたら良いのでしょうか?実は横方向(インラインの進行方向)の場合、max-width="100%"としてやればすみました.これは次のようなものになります.つまり左インデン…

画像をオーバーフローさせずにページに収める.(1)

以前横幅の大きな画像を左インデントを考慮してページ右端までに収めるXSL-FOのコーディングを紹介したことがあります.それは、画像をfo:block-containerで囲んで、fo:external-graphicにcontent-width="scale-down-to-fit", width="100%"を指定するもので…

怖いXSL-FO

とある事情でXSL-FOを解析して元のスタイル仕様を探り当てるという仕事をすることになってしましました.いままでXSL-FOは自分が作ったスタイルシートのデバッグのために追っかけることはありましたが、このような目的の仕事はあまり馴染みがありません. そ…

フォントファミリーの指定方法

FOへのスタイルシートを作るとき意外と落とし穴になるのがフォントファミリーだなと実感しました.先週からフォントファミリーで頭がおかしくなりそうな状態だからです. XSL-FOのスタイルシートを作る場合、大抵元はInDesignとかFrameMakerとかでやっていて…

fo:page-sequenceの調停(2)

ページシーケンスの調停に使用するのはオープンソースで公開されているカナダのG.Ken Holmanさんのpsmi.xslというスタイルシートです. Page Sequence Master Interleave (PSMI) http://www.cranesoftwrights.com/resources/psmi/ HollmanさんはXSLとXSLTで…

fo:page-sequenceの調停(1)

XSL-FOで一連の同じページレイアウトを行う単位をfo:page-sequenceと呼びます.XSL-FOの構造を見るとわかりますが、fo:page-sequenceはまさにコンテンツ部分を表現しています.最低限の簡単なXSL-FOの構造は次のようになるからです. fo:root | +-- fo:layou…

xsl-fo and professional publishing

XSL Listに興味深い議論が載っていました. http://xsl-list.markmail.org/search/?q=#query:+page:1+mid:75nkjbb7lg7jkivb+state:results >I wonder whether xml + xsl + xsl-fo is a current practise in >professional publishing for technical books at…

XSL-FOに入力XMLの階層を出力する。

XSL-FOに出力するのですが、入力XMLが複雑すぎて、どのFOが何から作られているのかわからなくなる場合があります。このようなときに、そのオブジェクトを作った元のデータの階層をxsl:commentでFOに出しておくと解析に便利です。 例えば <xsl:template match="~"> <xsl:comment><xsl:value-of select="ahf:getHistory(.)"></xsl:value-of></xsl:comment> <fo:block-container> ... </fo:block-container> </xsl:template> などとやり…

テーブルのタイトルに&quot;(Continued)&quot;と出す. (3)

お客様からテーブルの表題に「(Continued)」と出すのも良いけれど、テーブルのフッター部分に「Continues to the next page」と出せないかという要望が寄せられました.せっかくなのでサンプルを紹介します.仕様は以下のようになります. 1.テーブルの開…

XSL-FO 2.0をめぐる議論(2)

知らないということは単に自分だけの問題にとどまらず、大いに他人にも迷惑をかけることであると感じました.今回のXSL-FO 2.0をめぐる議論で、XSL-FO 2.0が流産してCSSへの道まっしぐらというのはW3CにとってもXSL-FOのユーザーにとってもまったく良いこと…

XSL-FO 2.0をめぐる議論

XSL-ListのLiam Quinの発言は見逃すことができなかったので、 http://thread.gmane.org/gmane.text.xml.xsl.general.mulberrytech/89430 つたない英語で必死に発言しました.(もっと英語は勉強しておけばよかった!) http://thread.gmane.org/gmane.text.x…

テーブルのタイトルに&quot;(Continued)&quot;と出す. (2)

以前テーブルの表題に"(Continued)"と出すのがまともにやると難しいと書きました(http://blogs.yahoo.co.jp/tnakita/13743985.html)が、やはりお客様からこのような要望は寄せられます.FOだけのサンプルですが、すこしまともに出す例を作ったので紹介しま…

XSL-FOのデバッグ

XSL-FOのスタイルシートを作っていると、時にしてFOをエディタで開いて中をデバッグしなければならないことがあります. DITAのPDF出力のスタイルシートなんかだったら、あまりXSL-FOを覗くことはないのではと思います.たいてい出力物がページ数が多くて、…

テーブルのタイトルに&quot;(Continued)&quot;と出す.

テーブルを出力するのとページまたがりになる場合があります.テーブルがそれほど大きくなくとも、本文の量によってあるものは1ページに収まり、あるものはページにまたがります.一般にページまたがりはいやがられるのですけれど、テーブルによってはもとも…

margin-left

実はこの数ヶ月間、ずっとDITAから離れて独自スキーマの文書モデルのもとで仕事をやっていました.そこで始めて経験したのが「縦書き」です.今までほとんど製品マニュアル関連の仕事だったため全部writing-mode="lrtb"の世界で「縦書き」(writing-mode="tbr…

fo:external-graphic

fo:external-graphicについてちょっと片寄った紹介をします.fo:external-graphicはsrc属性で画像を指定します.画像といってもいろいろあって、PDFに出力するときは閲覧用のPDFだったらJPEG、PNG、GIFなどがポピュラーです.PDFでも製本するための版下を作…

閑話休題: XSL-FOとホワイトスペース

DITAなのですがお客様で日本語と英語を同じファイルでオーサリングしている方がいらっしゃいました. ルート要素はditaで中に日英二つのtopicが存在します.両方ともコンディショナルがかかっていて、英語をpublishingしたいときと日本語をpublishingしたい…

fo:block-container

今回はfo:block-containerを紹介します.fo:block-containerはその名の示すとおり、ブロックオブジェクトのコンテナ(入れ物)です.ここでブロックオブジェクトというのは、 fo:block fo:block-container fo:table-and-caption fo:table fo:list-block など…

fo:list-block

今回はfo:list-blockについて紹介します.fo:list-blockはXSL-FOでリスト状のレイアウトを行うときに使用する親要素です.普段Wordなどでは番号つきリストや番号なしリストは実際には段落の特殊な形態なで表されていますが、XSL-FOではfo:blockとは違うfo:li…

fo:block

さて一番最初はfo:blockです.あまりおもしろくないかもしれませんがfo:blockは、fo:page-sequence/fo:flowの中で重要な位置を占めるブロックコンテンツです.XSL-FO仕様(http://www.w3.org/TR/xsl/)だと、fo:root/fo:page-sequence/fo:flowの中でブロック…

世界が沈黙するYahoo! XSL-FOグループ

皆さんはXSL-FO(XSL Formatting Objects)をご存知でしょうか?XSL-FOはXMLコンテンツにスタイルをつけて、様々なメディアに出力するために作られたW3Cの勧告です.最初のV1.0の勧告が2001年10月ですから、私はもう十年来のお付き合いです.考えてみれば明…