カテゴリー別アーカイブ: 構造化文書

XSL-FOの便利な機能、参照エリアとインデントとはどんなもの?(1)

先日、XSL-FO仕様の難しさ、CSS組版のリスクで、XSL-FOとフロートの違いを説明しましたが、もう少し翻ってみますと、XSL-FOとCSSには基本的な相違がいろいろあります。

XSL-FOもCSSもレイアウトの基本は次のようなモデルです。内容領域にテキストを配置、その周りにパディング領域があり、そのまわりにボーダー領域があり、その周囲にマージンがあるというモデルです。

border-model

これをCSSではボックスといい、XSL-FOではエリアといいます。ボックスとエリアは用語の違いはあるにしても、類似です。一つの要素はエリアにレイアウトされます。そして、その要素の子供は親要素の内容にレイアウトされます。XSL-FOでは要素(FOと言います)がページの境界で分割されることがありますので、FOとエリアは1対1ではなく、1つのFOから複数のエリアができます。

また、前回も説明しましたが、XSL-FOでは絶対方向に加えて論理方向による指定も使えます。これは縦組などに対応するために用意されたものです。

さて、XSL-FOは印刷レイアウトを想定していますので、エリアモデルにはCSSのボックスモデルにはない基本概念が導入されています。

参照エリアという種類のエリアです。参照エリアは、座標系の基準になるエリアで、普通のエリアと違って次の特徴があります。

  • 参照エリアはインデントの基準になります。
  • 参照エリアの一部では回転を指定できます。回転を指定すると内容が回転します。
  • 参照エリアの一部にはライティングモードを指定できます。参照エリア単位で縦組などを指定できます。

ひとつのページの本文を配置する区画(fo:region-body)は参照エリアになります。fo:region-bodyに縦組を指定して、本文全体を縦組にできます。なお、縦組でも柱は横組ですので、柱を置く区画(fo:region-before)は、普通、横組指定となります。

それだけではなくページの中の矩形の領域や、行内の一部を部分的に回転したり、縦書きにもできます。

さて、XSL-FOにあって、CSSにないのがブロック単位のインデントです。ブロック単位のインデントとはどんなものでしょうか?

ワープロなども共通ですが、インデントには次の2種類があります。両者は混同しがちですが、別物です。

(a) 段落全体の左端を行の開始位置から数文字分ずらす。日本語組版では字上げ・字下げといいます。引用文を本文とは別の行とする場合、本文との区別のために字下げするなどの用途で使われます。これがブロック単位のインデントです。ブロック単位のインデントは、引用以外では、次のようなレイアウト用途に使われます。

・注記の字下げ
・箇条書きの先頭を揃える
・ブロックの数式の先頭位置揃え

CSSでは(横書なら) margin-left、margin-rightで指定します。XSL-FOでは(横書なら)margin-left、margin-rightも使えますが、むしろ、start-indent(行の開始側)、end-indent(行の終了側)で指定すると便利です。

(b) 段落の先頭行の最初を1文字(日本語)あるいは数文字(ラテン)分空けます。昔の作文では、段落の書き出しを1文字空白にする、と教わりました。いまでもそのような書き方をする人は多いですが、Microsoft Wordなどの欧文ワープロを初め、CSSでもXSL-FOでも段落の先頭行の字下げは空白ではなく、text-indentで設定します。

段落の先頭行だけを1文字字下げするのは、段落の区切りを判りやすくするためです。

英語の組版では段落の先頭を字下げするのは二つ目以降のみで、最初の段落は字下げしないことも多いのです。最初の段落の前には章や節の見出しがあり、また見出しとの間に空きがありますので字下げの必要はありません。また、図版の直後で始まる段落は字下げしないという規則もあります。先頭行を字下げしたり、しなかったりするので空白文字を入れてしまうと不都合があります。

また、行間を空けて、段落の先頭を字下げしないスタイルもあります。これは電子メールなどでお馴染みですね。

このように、欧文組版では段落スタイルが何通りか選択できますので、段落の開始に空白文字を入れるのは行われません。

さて、戻りますが、start-indent(行の開始側)、end-indent(行の終了側)が、どのように便利かは、次回に説明したいと思います。

『XSL-FOの基礎 – XML を組版するためのレイアウト仕様』(近日発売)


XSL-FO仕様の難しさ、CSS組版のリスク

2001年~2002年頃にかけて、XSL-FO(当時はV1.0)について学びました。10数年を経て、この2か月ほど、再び、XSL-FO(今度は V1.1)と格闘しています。先日ブログで紹介した、『XSL-FOの基礎』を完成するために。

いまは、フロートについて調べています。フロートは、本文の文脈中に記述する要素です。但し、組版処理を行ったとき、本文の流れとは切り離して配置します。XSL-FOとCSSには、類似のフロート関連機能があります。では、XSL-FOとCSSのフロートの違いはなんでしょうか? まず、フロート関連の機能をざっくりと比較してみましょう。

1.フロート

(1)適用対象オブジェクト

・XSL-FOではfo:floatという組版オブジェクトを規定し、フロートの処理方向をかなり詳しく書いてあります。また、フロート組版オブジェクトを配置できる(スキーマ上の)位置も規定しています。フロート配置したいオブジェクトはfo:floatの中に置きます。

・CSS2.0では、フロートという組版オブジェクトはありません。floatプロパティのみ規定しています。そして、floatプロパティは、絶対位置指定のボックスと生成されたボックス以外であれば何でも適用できる、とされています(CSS2.1では生成されたボックスにも適用できるようです)。つまり、HTMLの様々な要素にfloatプロパティを指定できます。

(2) floatプロパティ

・XSL-FOではfo:float組版オブジェクトに対するfloatプロパティで、浮動のさせ方を規定しています。floatプロパティは、before、 start、end、 left、right、inside、outside、noneがあります。

・CSS2では、left、right、noneの三つです。

XSL-FOは前方フロートを新設しています。また、サイドフロートという分類があります。前方、後方というのは行の進行方向を基準とします。横組なら前方は上、縦組なら前方は右です。

・beforeは前方フロートで横組ならページの上、縦組ならページの右に浮動させて配置します。例えば、<fo:float float=”before”>テキストや画像を含むブロックFOオブジェクト</fo:float>と指定すると、テキストや画像を含むブロックFOオブジェクトは、横組ならばページの上部に配置されます。

・start、end、 left、right、inside、outsideはサイドフロートで、それぞれ行の開始側、行の終了側、左、右、のど側、小口側への配置を指定します。サイドフロートは、CSS2のfloatプロパティの形式上の拡張になっています。厳密にいうとモデルのずれがありますので、形式上と表現しておきます。

2.フロートのクリア

フロートされたオブジェクトが先行するとき、その後方のオブジェクトのボーダーの前方辺がフロートされたオブジェクトのマージンの後方辺よりも後ろになるように空きを入れることをフロートをクリアすると言います。XSL-FO、CSSの組版モデルでは、オブジェクトの領域を内容、パディング、ボーダー、マージンという4層の玉ねぎ構造で規定しています。クリアは解除と訳されることが多いですが、厳密には解除では無くて前方マージンを広げることです。

(1)適用対象オブジェクト

・XSL-FOでは、clearプロパティはブロックレベルのFOとfo:floatに適用できます。

・CSS2では、clearプロパティはブロックレベルの要素に適用できます。

(2) clearプロパティ

・XSL-FOでは、start、end、left、right、inside、outside、both、noneがあります。前方フロートのクリアはありません。

・CSS2ではnone、left、right、 bothです。

3.侵入による移動

フロートが配置されると、本文はフロートが配置された分だけ移動して、フロートを回り込みます。

XSL-FOでは、侵入による移動(intrusion-displace)というプロパティで本文の移動の仕方を指定できます。このプロパティは、ブロックレベルのFOと、fo:table-caption、fo:list-itemに指定できます。

intrusion-displace=”line”とするとCSS2のフロートの回り込みと同じとなり、それ以外に、auto、none、indent、blockを指定できます。

CSS2には、侵入による移動の仕方を指定する機能はありません。

◎まとめ

XSL-FOでは印刷を意識してフロートの処理を比較的詳しく説明し、製本のため、小口・のどなどの方向拡張をしています。縦組でも破たんしないように前方・後方、行の開始・終了で方向を指定できます。一方、CSS2のフロート動作は、簡単な説明なので判りやすいですが、あまり厳密ではありません。さらに、適用する要素が広範なため、様々なHTML要素にfloatプロパティを指定したとき、その組版処理結果がどのようなレイアウトになるかが曖昧になりそうです。

XSL-FOのclear、intrusion-displaceなどの説明は、英語の文章がセンテンスがながく、関係代名詞の使いまくり、未定義の用語 (ネィティブには定義する必要がない?)が一杯でてきて難しく、理解するのに難儀しています。XSL-FOの難しさは、まず、第一に仕様書の文章の難しさです。そ の先にまだあるかもしれませんが・・・第一の関門を突破しないとわかりません。ただし、仕様書にかかれている制約条件は、XSL-FOプロセサがきちんと処理してくれればユーザーが理解していなくても支障ありません。XSL-FOプロセサを開発する立場では、きちんと処理結果を保証しなければなりませんので、そうはいかないのです。

CSS3でフロートがどのように強化されているかまでは、まだ調べていません。CSS3ではCSS2の機能と互換になるように拡張しなければならないでしょうが、どうなるのでしょうかね。CSS組版のリスクは、文章はとっつきやすいけど規定が曖昧なことでしょうね。


AHFormatter の float 拡張

AHFormatter はV6で大幅な float の拡張を行いました。

  1. float がページから出たときの振る舞い
    以前は float がページから出てしまうと、アンカーと一緒に本文テキストが次のページに送られました。
    そのため、ページに空白ができてしまうことがありました。
    V6 からは、float だけを追い出し、あいたスペースに本文テキストが入ります。
    また、float が少し出るだけなら float をページに入れ、本文テキストを次ページに送ることも指定できます(axf:float-move=”auto-move”)。
  2. float の配置位置の指定
    V6 からは float をページの下部に配置するなどの指定ができるようになりました。
    配置する場所 (axf:float-reference=”page”) 、位置 (axf:float-y=”bottom”) が指定できます。
    これで、参照する表などをページの下部などにまとめて配置できるようになりました。

これらの拡張により、V6 での表現力がアップしました。
興味のあるかたは 評価版 をお試しください。

プログラマの愚痴

予想外の使い方をするユーザ様がいます。
大きな表などを何でも float で表現します。それを複数連続して挿入します。
当然、追い出され、追い出され、複数ページ分の追い出しが起きます。
追い出されても、次の本文をいれるため、float は追い出し状態としページが完成するまでフォーマットは継続されます。
結局本文はなく終了。追い出された float のページを追加しフォーマット終了となります。
追い出し状態の float のメモリと処理時間が大きくなるだけでした。
float にする必要がないのではないか?
追い出すための連続改ページ処理に障害が見つかり対応することとなりました。

処理の把握が足りないこともありました。
最後のページに float がありフォーマット終了。
最後のページで page-master の変更がありました。
新しい page-master でページを作成し、本文を移動する。このとき元のページについている float が移動せず欠落。
page-master の変更処理まで把握できていませんでした。
障害となり、float に追い出しをマークし対応することとなりました。

障害との格闘で日々すごしています。


アンテナハウスCAS電子出版

皆様、おはようございます。
本日と明日19日は、電子出版サービスグループがお届けいたします。

本日のお題は、
アンテナハウスCAS電子出版です。

アンテナハウスCAS電子出版とは、アンテナハウスが自社サービスCAS-UBを使って書籍を出版する際に用いるブランド名です。

現在、アンテナハウスが出版している書籍は10タイトルあります。また、無料で配布しているものは9冊、CAS電子出版の紹介で紹介しています。

最近は、POD(プリントオンデマンド)出版にも手を伸ばし始めました。
POD出版したものは次の通りです。

「PDFインフラストラクチャ解説-電子の紙PDFとその周辺技術を語り尽す-

表紙イメージ
「ビジネスを強化する リーディング・プレゼンテーションの技法」

表紙イメージ

これから出版予定のもの:レビュー募集中!

現在、アンテナハウスCAS電子出版では、次のPOD出版を進めています。
次回出版予定は、「XSL-FOの基礎」です。

表紙イメージ

XSL-FO の仕様書というのはとかく難解な長文(英語)で、翻訳されても難しくてよく分からないというのが現状です。本書は、主として XSL-FOドキュメントを印刷するソフトである XSL-FOプロセサを利用するための人向けの解説書として出版を予定しています。

現在は原稿を編集中で、アンテナハウスが主催する「Formatter Club」の会員様向けに無料配布して、レビューを募っています(完成時点で終了)。

Formatter Clubの詳細は、Formatter Clubについてをご覧ください。また、参加のお申込みは、下記のお申込用紙に必要事項をご記入のうえ、FAXまたはe-mailでお申し込みください。

  • 参加申込書用 PDF
  • メールアドレス:naganawa@antenna.co.jp(Fomatter Club 担当)
  • FAX 番号:03-5829-9024

DCJ DITA 1.3 Workshop

3月16日、DITA の仕様策定にも深く関わっているエリオットキンバー氏を講師として招き 「DCJ DITA 1.3 Workshop」 が開催されました。まずは DITA の歴史を振り返り、そして DITA 1.3 の解説が行われました。

DCJ DITA 1.3 Workshop

ワークショップの様子

Scoped Key
Branch Filtering
Troubleshooting
SVG/MathML Domain
“This Topic” Fragment Identifier
などなど…

朝から夕方まで盛りだくさんの内容で埋め尽くされました。あまりの内容の濃さに、2日に分けた方が良かったかも、と感じたほどです。 Workshop 後のアンケートにも「ついて行くだけで精いっぱい」「全部は理解しきれなかった」と書かれている方が多かったように感じます。

今後、どうなんでしょうねぇ。さらに高機能化するであろう DITA 2.0 が主流となるのか。それとも、もうすぐ出てくるであろう LightWeight DITA が主流となるのか。興味深いところです。

キンバー氏は日本がとても好きなようで、空手も習われているそうです。そのキンバー氏が、コンテンツの再利用率を上げるために「Use Key! Use Key! Use Key! はい、先生!」と連呼されていたのが印象的でした。「はい、先生!」の部分はちゃんと日本語でした(笑)

ちなみにこのワークショップ、DITA コンソーシアムジャパンの会員のみが参加できるクローズドなものだったのですが、DCJ はたまにこういう企画もするので、まだ非会員の方は是非入会をご検討ください。


XMetaL_Author_Enterprise11.0(英語版)販売開始のお知らせ

アンテナハウス株式会社は、2016年4月14日より XMetaL_Author_Enterprise11.0(英語版)の販売を開始いたします。

XMetaL Author Enterprise は DITA オーサリングとCMS 連携を担う、世界各国で多大な実績と支持を得ているグローバルブランドで、世界中のお客様の DITA オーサリングに貢献しています。 製品の詳細は XMetaL 製品ページ をご覧いただくとして、ここでは XMetaL11.0 で強化された機能の一部をご紹介いたします。

metal11_workspace

metal11_workspace 画面

  1.  正式公開された DITA1.3 のサポート
     XMetaL11.0 では、今年1月に標準として公開された DITA1.3 の機能のサポートが 10.0 より強化されています。Scoped Key, Branch Filtering はもちろん、troubleshooting タグセット、1.3 から新しく追加された新規ドメインにも対応しております。
  2.  DITA map エディタの機能強化
    XMetaL11.0 では map エディタが一新されています。
    ツリーディスプレイの刷新は勿論、アンドゥ/リドゥ機能、map 上で使用できるカット/コピー/ペースト機能の追加、属性インスペクタの追加など、map 編集に役立つ機能が数多く搭載されました。
  3. 64bit ネイティブに対応
    これまでの XMetaL は 32bit 版のみでしたが、XMetaL11.0 からは 64bit 版もご利用いただけるようになりました。ダウンロードの際に 32bit 版と 64bit 版から選択できます。

製品についての詳細は、Web ページをご覧ください。

XMetaL 製品ページ : https://www.antenna.co.jp/xmetal/
JustsystemCanada(開発元) : http://xmetal.com/content-xmetal-author/
本件お問い合わせ : mailto:xmetal@antenna.co.jp


『XSL-FOの基礎』(草稿)をFormatter Club会員向けに配布しています。

御承知の方も多いかと思いますが、最近、Amazon を始め様々なオンライン書店からプリントオンデマンド(POD)による書籍の販売が始まっています。

PODは、PDFを書店に預けておき、受注の都度、プリントと製本をして届けるという方式です。その方式の特性上、採算を目標とする商業出版にはあまり向かないと思います。しかし、商業出版では採算に合わないような少部数の出版物や、普及啓蒙を目的とする出版で活用できると考えております。

そこで、その実践として、この度、昔「XSL-School」で使用していましたテキストを刷新してPODで販売することを計画しました。このテキストは、2001年~2002年にXSL Formatterの草創の時代に作成したものです。

現在、この内容を見直してPODなどで販売する準備を進めております。本のタイトルは『XSL-FOの基礎』(XML を組版するためのレイアウト仕様)を予定しています。

XSL-FO-Book

本書は、XSL-FO V1.1の仕様をご理解いただくことを目的としています。本書で解説しておりますのは、標準の仕様書の範囲内ですので、アパッチのFOPなどのオープンソースXSL-FOプロセサでも共通であり、弊社AH XSL Formatter V6.3のユーザーでない方でも活用いただけるものです。

当初のテキスト作成時は、XSL-FOプロセサの完成度、XSL-FOの仕様書の実装度合も不十分でした。現在、XSL-FO V1.1の仕様書に沿って内容を見直し、仕様書に書かれた内容をサンプルFOとしてAH XSL Formatter V6.3で作成しています。10数年を経て、XSL Formatterの完成度が高くなっていることが実感できました。

現在、関心をお持ちの方にレビューいただきながら改訂を進めています。本書完成するまでの間、Formatter Clubの会員向けに配布しております。関心をお持ちの方は、ぜひFormatter Clubにご参加いただき、本書へのご意見をお寄せください。

Formatter Clubの参加方法は次のWebページにございます。

AH Formatter:Formatter Clubについて

なお、本書は完成後は、PODで販売を計画しており、無料配布は完成までの期間のみとなります(完成版と同時に無料配布は終了の予定です)。予めご了承くださいますようお願いいたします。

※ 無料配布は終了しました。ご協力よろしくありがとうございました。(2016/5/23)


DITA Festa Kyoto 2016体験レポート

海外営業グループのメンバーです。今年1月の体験レポートに引き続き、先日3月8日(火)に京都・烏丸にて DITA Festa 2016 Kyoto が開催され、今回もアンテナハウス株式会社のひとりとして参加してきましたので、体験レポートをお送りいたします。今回私は企画立案や翻訳など様々な側面で携わることができました。

基調講演者としてアメリカ・テキサス州より DITA 仕様の第一人者でもあるエリオット・キンバー氏、および日本からはサトーテクノロジー株式会社 本田光東様をお招きしました。

キンバー氏からは、DITA をはじめて導入するにあたって必要な部分と不要な部分を見分け、スモールスタートを切るためのコツなどを、森と木という比喩を用いることで DITA 初心者の私たちにもわかりやすく解説していただきました。DITA はまだ日本では普及が遅く、DITA 移行に二の足を踏む企業が多いなかで、DITA 仕様作成者からのお話というのはとても貴重なものでした。

またサトーテクノロジー株式会社 本田様からは、実際に DITA 移行に踏み切るまでの経緯や悩みから、実際に運用してみて実務面で現場がどうなったのか、という新鮮な経験談を、視覚的にもわかりやすいスライドを駆使しながらご説明いただきました。

両氏の講演から、今回の DITA Festa のテーマである「 DITA はお気軽に」にふさわしく、気軽に DITA を始めてみるきっかけ作りが出来たのではないかと思います。

ところで 2015年12月から当日まで、私はエリオット・キンバー氏と、本イベントの企画や、キンバー氏とのやり取り・交渉・連絡・依頼・スケジュール管理、スライド翻訳などを黒幕?として担当してきました。この京都での講演会の翌週には、東京にて DITA コンソーシアムジャパンの会員様向けとしてキンバー氏による DITA 1.3 詳解ワークショップも開催されました。これらすべてのイベントが終了するまで、正直なところ私は1週間前から謎の胃痛に悩まされていましたが、最終日のワークショップの翌日には不思議とすっかり治っていました。自覚はしていませんでしたが、大きな責任とプレッシャーを感じていたのでしょう…無事終えることができ、また参加者の皆さまからもご好評をいただき、大きなやりがいを感じました。

講演いただいた皆様、ご参加いただいた皆様、DITAコンソーシアムジャパン各位、およびその他ご協力いただきました皆様に、今回の成功を支えていただいたこと厚くお礼申し上げます。

今後も DITA Festa は順次開催されますので、ぜひ皆さまもご参加いただければ幸いです。

2016-4 dita festa kyoto

エリオット・キンバー氏による講演風景


「DITA ワンデーセミナー・ハンズオンワークショップ」を開催します!

2016年3月15日(火)に「DITA ワンデーセミナー・ハンズオンワークショップ」をインフォパース株式会社と合同で開催します!
ゲストスピーカーとして海外より DITA 技術委員会創設メンバーであり、DITA 仕様策定メンバーの 1人でもある Eliot Kimber(エリオット・キンバー)氏をお招きし、「DITA for Small Teams」の講義および実習を行います。DITA 対応の CMS などを使用しないローコストの実践ですので、初めて DITA に取り組む方にもお薦めです。
※ 「DITA for Small Teams」とはオープンソースと必要最小限の商用ソフトを使用して、DITA によるドキュメント制作をスモールスタートで行うための方法です。

AH Formatter 組版例
– セミナーのタイムスケジュール –

セミナーの詳細及びお申し込み等は、次のページをご覧ください。
「DITA ワンデーセミナー・ハンズオンワークショップ」開催のお知らせ

皆様のご参加をお待ちしております。


AH Formatter V6.3 のご紹介:Data Matrix と PDF417 など(バーコードジェネレータオプション)

AH Formatter V6.3』では、『バーコードジェネレータオプション』を使用することにより、ISO/IEC 16022:2006 で規格制定されている Data Matrix と、JIS X 0508:2010 または ISO/IEC 15438:2006 で規格制定されている PDF417 が指定可能になりました。

AH Formatter 組版例
– Data Matrix と PDF417 の組版例 –

また、ご要望の多かったバーコードの色指定や、QR バーコードの余白(クワイエットゾーン)の変更が可能になりました。

AH Formatter 組版例
– バーコードに色指定した組版例 –

サンプルページには、
本機能が確認できる「バーコードの見本」を掲載しております。

『AH Formatter』にご興味のある方は評価版を次のページよりお申し込みいただけます。
AH Formatter 評価版のお申し込み

弊社では検討中のお客様向けに技術相談会を行っております。お気軽にお問い合わせください。
アンテナハウス システム製品技術相談会


Pages: Prev 1 2 3 ... 7 8 9 10 11 12 13 14 15 16 17 Next