カテゴリー別アーカイブ: XSL-FO・CSS

[書籍のご案内] スタイルシート開発の基礎 – XML と FO で簡単な本を作ってみよう

この度、弊社執筆による「スタイルシート開発の基礎」のプリントオンデマンド(POD)による紙版が発売になりました。

スタイルシート開発の基礎
目次の一覧は、こちらでご覧ください。

本書は XSLT の入門書です。XML の初心者が、XML を処理して XSL-FO に変換するスタイルシートを書きながら、弊社の『AH Formatter』を利用して、PDF形式の「簡単な本」を組版することを目的としています。簡単なスタイルシートから書いていき、徐々に必要な追加を行って、「簡単な本」を組版するためのスタイルシートを完成させていきます。本書自体、本文で解説しているスタイルシートにいくらかの修正をしたもので作成されておりますので、完成物のイメージが湧きやすくなっています。

本書は、Amazon.co.jp三省堂オンデマンド(「オンデマンド和書(その他出版社)」の項)などからご注文いただけます。

 


AH Formatter V6.3 のご紹介:axf:float-x=”alternate”

AH Formatter V6.3』では、段組内に配置するフロートの水平(縦書きでは垂直)方向を axf:float-x=”alternate” の指定によりを自動で調整できるようになりました。この指定により段組みの最初の段のときは end側、最後の段のときは start側、それ以外では center へ配置します。なお、段組みでないときは center へ配置されます。
axf:float-x / CSS -ah-float-x(オンラインマニュアル)

AH Formatter 組版例
– axf:float-x=”alternate” を指定した組版例 –

『AH Formatter』のサンプルページには、
本機能が確認できるサンプル「段組内フロートの自動配置の設定例(axf:float-x=”alternate”)」を掲載しております。

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

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

 


[書籍のご案内] XSL-FO の基礎 – XML を組版するためのレイアウト仕様

この度、弊社執筆による「XSL-FO の基礎」のプリントオンデマンド(POD)による紙版が発売になりました。

XSL-FO の基礎
目次の一覧は、こちらでご覧ください。

本書は、主として XSL-FOドキュメントを印刷するソフトである XSL-FOプロセサを利用する人に向けた解説書です。解説は、標準の仕様書(Extensible Stylesheet Language (XSL) Version 1.1)の範囲内ですので、アパッチの FOP などのオープンソース XSL-FOプロセサでも共通であり、『AH Formatter』のユーザでない方でも活用いただけます。

なお、本書は、弊社が開発しているクラウドで書籍を制作・編集し、そのデータから PDF と EPUB、Kindle といった様々な形式の書籍を一元的に作成できる Webサービス『CAS-UB』を利用して作成しました。『CAS-UB』では内部的に XHTML から XSL-FO を利用して PDF を生成しています。

本書は、Amazon.co.jp三省堂オンデマンド(「オンデマンド和書(その他出版社)」の項)などからご注文いただけます。

本著が皆様の XSL-FO 活用のお役に立つよう、心より願っております。

 


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

前回に引き続き、参照エリアとインデントについて説明します。

ブロック(段落)全体に対するインデントは段落ブロックに対するmargin-*で表すことができますが、start-indent, end-indentの方が便利です。

start-indent、end-indentは参照エリアの内容辺を基準にして、指定したFOの内容辺までの距離を指定します。

次の例では、本文区画(基本版面)の内容辺から、章の内容への間隔を20pt(2文字分)とり、引用段落を10pt(1文字)字下げ)、表は基本版面一杯に設定する例です。それぞれ、start-indent=”20pt”、start-indent=”30pt”、start-indent=”0pt”と指定します。

<fo:block start-indent=”20pt” text-indent=”1em”>
<fo:block font-size=”16pt”>第1章</fo:block>
<fo:block background-color=”#EAEAEA”>
<fo:block font-size=”14pt” space-before=”0.5em”>節1</fo:block>
<fo:block>章や節の見出しなどからページの柱(ランニングヘッダーやランニングフッター)を設定したり、辞書のページの辺に最初の単語と最後の単語を示したりできる。</fo:block>
<fo:block text-indent=”0em” background-color=”white” start-indent=”30pt” >どれもみんな肥料や薪炭をやりとりするさびしい家だ。街道のところどころにちらばって黒い小さいさびしい家だ。(宮沢 賢治『秋田街 道』)</fo:block>
</fo:block>
<fo:block background-color=”#DDDDDD”>
<fo:block font-size=”14pt” space-before=”0.5em”>節2</fo:block>
<fo:block>章や節の見出しなどからページの柱(ランニングヘッダーやランニングフッター)を設定したり、辞書のページの辺に最初 の単語と最後の単語を示したりできる。</fo:block>
<fo:table start-indent=”0pt” z-index=”2″ background-color=”yellow”>
<fo:table-column column-number=”1″ column-width=”proportional-column-width(1)”></fo:table-column>
<fo:table-column column-number=”2″ column-width=”proportional-column-width(2)+2pc”></fo:table-column>
<fo:table-column column-number=”3″ column-width=”72pt”></fo:table-column>
<fo:table-body>
<fo:table-row height=”20pt”>
<fo:table-cell column-number=”1″ display-align=”before”>
<fo:block>Cell 1 </fo:block>
</fo:table-cell>
<fo:table-cell column-number=”2″ display-align=”center” text-align=”center”>
<fo:block>Cell 2 </fo:block>
</fo:table-cell>
<fo:table-cell column-number=”3″ text-align=”center”>
<fo:block>Cell 3 </fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
</fo:block>
<fo:block background-color=”#EEEEEE” z-index=”0″>
<fo:block font-size=”14pt” space-before=”0.5em”>節3</fo:block>
<fo:block>章や節の見出しなどからページの柱(ランニングヘッダーやランニングフッター)を設定したり、辞書のページの辺に最初 の単語と最後の単語を示したりできる。同じエリアの中で同じ種類が指定されていたり、空のときはエラーである。</fo:block>
</fo:block>

本文区画は参照エリアであり、インデントの指定はすべて、本文区画の辺からの距離となります。その結果レイアウトは次のようになります。

start-indent-sample1

同じFOのstart-indentの箇所に、代わりにmargin-leftを指定すると、次のようになります。マージンは、親のブロックの内容辺を基準に自分のブロックのボーダーまでの距離になるため、内側に積み重なってしまうのです。

start-indent-sample2

このようにインデントは参照エリアを基準にして、FOのネストの如何に関わらず、指定されたFOの内容エリアまでの距離を指定します。

XSL-FOでもCSSでも、基本はブロック/エリアという玉ねぎの皮のような入れ子レイアウトモデルです。このため入れ子にならない字下げ配置の指定は厄介です。インデントを使うことで、その厄介な配置を簡単に指定できます。

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


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組版のリスクは、文章はとっつきやすいけど規定が曖昧なことでしょうね。


アンテナハウス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

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 評価版のお申し込み

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


AH Formatter V6.3 のご紹介:見開きページマスタ

AH Formatter V6.3』では、見開きページをひとつの単位と判断できるようになり、2ページにまたがる見開き領域を定義することができるようになりました。タイトルが 2ページにまたがる場合、画像または表の幅が 1ページより広い場合、縁なし背景の画像が 2ページにまたがる場合などに本機能をご使用いただけます。
見開きページマスタ拡張(オンラインマニュアル)

AH Formatter 組版例
– 見開きページにひとつの背景を定義した組版例 –

サンプルページには、
本機能が確認できる「見開きページマスタの設定例」を掲載しております。

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

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


AH Formatter V6.3 のご紹介:強化された多言語対応

AH Formatter』は、『AH Formatter V6.2』リリース以降、ビルマ語(ミャンマー語)やシンハラ語のスクリプトに対応し、『AH Formatter V6.3』が対応する言語はいよいよ 70以上になりました。
対応スクリプトと言語(オンラインマニュアル)

AH Formatter 組版例
– シンハラ語とミャンマー語の組版例 –

『AH Formatter』は、Unicode で扱えるほとんどの文字を扱うことができ、サロゲートペアにも対応しています。縦書きや、アラビア語などの右から左への文章も記述でき、これらを混在させた文書も容易に作成することができます。また、ハイフネーション処理や、言語によって異なる約物前後の空白の調整、独自のカウンタスタイルの定義なども自由に行うことができます。『AH Formatter V6.3』は、40言語以上のハイフネーション処理を行うことができます。このため、多国語対応の文書の生成などに最適です。

サンプルページには、
多言語組版機能の見本」を掲載しております。

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

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

 


Pages: Prev 1 2 3 4 5 6 7 8 9 10 11 12 Next