• 検索結果がありません。

variable

ドキュメント内 PDF5-ML-Template (ページ 42-57)

attribute-set variable

defult_style.xml

ja_style.xml

attribute-set variable attribute-set

variable

attribute-set

スタイルは「重ね合わ せ」です.

variable

変数は「最後に定義さ れたもの」が有効です.

日本語用の スタイルと 変数定義

言語別スタイル定義ファイル( 3 )

<!-- default_style.xml

のフォント定義

-->

<variable name="General_Serif_Font">serif</variable>

<variable name="General_Sans_Serif_Font">sans-serif</variable>

<variable name="General_Monospace_Font">monospace</variable>

<variable name="General_Text_Font">$General_Serif_Font</variable>

<variable name="General_Title_Font">$General_Sans_Serif_Font</variable>

<!-- ja_style.xml

のフォント定義

-->

<variable name="General_Serif_Font">Times New Roman,

MS 明朝

</variable>

次の例の場合、

bookmap/@xml:lang=”ja”

ならば

ja_style.xml

に書かれた変数値が有効となります.

言語別スタイル定義ファイル( 4 )

<!-- default_style.xml

のフォント定義

-->

<attribute-set name="atsB">

<attribute name="font-weight">bold</attribute>

</attribute-set>

<!-- ja_style.xml

のフォント定義

-->

<attribute-set name="atsB">

<attribute name="font-weight">normal</attribute>

</attribute-set>

次の例の場合、スタイルは合成され、

font-weight

=”normal”

になります.

言語別スタイル定義ファイル ( 5 )

PDF5-ML

」の場合、文書中のすべての言語タグを集めて

集約し、必要な言語別スタイル定義ファイルを選択します.

これらのファイルは

default_style.xml

に対して言語別ス タイル定義ファイルに優先度を与えてマージされます.

言語別スタイル定義ファイル (2)

attribute-set variable

attribute-set variable

defult_style.xml

ko_style.xml

attribute-set variable attribute-set

variable

日本語用の スタイルと 変数定義

attribute-set

variable

ja_style.xml attribute-set

variable attribute-set

variable

韓国語用の

スタイルと 変数定義

※ あくまで概念的な図です.

PDF5-ML の制限事項

索引ページは日英

2

言語のサポートのみです.

PDF

への変換は

AH Formatter

しか想定していません.

map

から入れ

topic

参照はサポートされませ ん.

<fn>

からは

XSL-FO

<fo:footnote>

を生成しません.

<image>

の絶対パス指定はサポートしていません.

DITA の @xml:lang の仕様と現状

2.1.3.9.1 The @xml:lang attribute

– @xml:lang

は要素内容の言語を指定します.

– map

topic

には必ず

@xml:lang

を指定すべきです.

topic

に指定しないと

DITA-OT

は”

en-US”

を付けてしまいます.

言語が混在する場合は

@xml:lang

で書き分けます.

– @xml:lang

map

から

topic

へは継承しません.

PDF5-ML

以外では、このような

@xml:lang

の実装は されてきませんでした.

PDF2

では

言語リテラルを

@xml:lang

に合わせて出せるくらいです.

@xml:lang によるスタイル切り替え

@xml:lang

の変化の検出

自分と祖先の要素の

@xml:lang

を順に取得します.

– [

言語コード(小文字)

]-[

国コード(大文字)

]

に正規化します.

最後の

@xml:lang

とその直前の

@xml:lang

が異なっていた 場合、言語が切り替えられたと判定します.

@xml:lang

が切り替えられたとき

自分と祖先の要素のに対して最後の

@xml:lang

で示された 言語に対するスタイルの集合を求めます.

スタイル切り替えの例( 1 )

<dita-merge>

bookmap

と同じ

xml:lang

とします.)

<bookmap xml:lang=”en-US”>

<topicref>

<topicref>

<topic xml:lang=”en-US”>

<title>The technique of <ph

xml:lang=”ja”>

合気道

</ph></title>

<topic>

<topic>

<topicref>

<reltable>

topic

related-links

に展開済み

DITA-OT

の中間ファイル

– PDF

publish

する際、

TopicMerge”

というモジュー ルで作り出されます.

– bookmap

topic

が一つの ファイルにマージされます.

ルート要素に

dita-merge

生成されます.

この例では

英文の文書の

topic

のタイト ルに”合気道”という日本語

ph

要素が含まれていま す.

スタイル切り替えの例( 2 )

“合気道”の

ph

から上の

@xml:lang

を調べる

– “ja”→”en-US”→”en-US”

の順となります.

– “ja”≠”en-US”

なので言語が切り替えられていると判定します.

適用するスタイルを求めます.

ルートから順に”

ja”

のスタイル(

attribute()*

)を取得します.

① dita-merge

のスタイル(

fo:root

用、たいてい明朝体を使用します)

② topic

のスタイル(たぶん何もなし)

③ title

のスタイル(たいていゴシック体を使用します).

④ ph

のスタイル(

ph

は汎用のインラインなので何もなし)

テンプレートの作法( 1 )

PDF5

とは作法が変わります.

– PDF5

は単に名前指定(

atsP

)でスタイルを取得しているだけでした.

<!--PDF5

p

要素(段落)のテンプレート

-->

<xsl:template match="*[contains(@class, ' topic/p ')]">

<fo:block>

<xsl:copy-of select="ahf:getAttributeSet('atsP')"/>

<xsl:call-template name="ahf:getUnivAtts"/>

<xsl:copy-of select="ahf:getFoStyleAndProperty(.)"/>

<xsl:apply-templates/>

</fo:block>

</xsl:template>

テンプレートの作法( 2 )

PDF5-ML

ではスタイル名を取得するテンプレートを分離します.

これにより、目的の要素から先祖に遡ってスタイルを取得ことが可能になります.

<!--PDF5-ML

p

要素(段落)のテンプレート

-->

<xsl:template match="*[contains(@class, ' topic/p ')]" mode="MODE_GET_STYLE"

as="xs:string*">

<xsl:sequence select="'atsP'"/>

</xsl:template>

<xsl:template match="*[contains(@class, ' topic/p ')]">

<fo:block>

<xsl:call-template name="getAttributeSetWithLang"/>

<xsl:call-template name="ahf:getUnivAtts"/>

<xsl:copy-of select="ahf:getFoStyleAndProperty(.)"/>

PDF5-ML カスタマイズの方法

プラグインに

customization

フォルダがあります.

ここに自分専用のカスタマイズコードを書くこともできますが、「あまり」お勧 めではありません.

configフォルダのスタイル定義のカスタマイズに難があり、また複数の用

途に使えないためです.

お勧めは自分用のプラグインを作ることです.

自分のプラグインからPDF5-MLのテンプレートやスタイルをimportします.

テンプレートは

xsl:import

する側がプライオリティ(

import precedence

を持ちます.

スタイルはinclude要素でPDF5-MLの定義をインポートし、その後にカ スタマイズしたスタイルを書きます.順番が後のものが優先されます.

この例はGitHubにあります.

フォントのフォールバックの禁止

● 実は

PDF2

でもフォールバックを許容すればたいて いの文字は出てしまいます.

– AH Formatter

がスクリプト毎に既定のフォント指定を持っている

ためです.

特に

Windows

(≠

10

)はフォントが豊富なので、エラーメッセージ

さえ気にしなければ「豆腐マーク」は消えます.

● 商業出版物から見てそれで良いのでしょうか?

フォールバックの発生原因はたいてい、① オーサリングの誤り か、② スタイルシートのフォント指定の誤りです.

従ってプロダクション用途にはフォールバックを禁止するのが本

言語別にスタイルを変える必要がある のでしょうか?

あります.例えばタイ語は子音母音声調記号が「 り」ます.英文フォントよりフォントサイズを大きくしてバラン

ドキュメント内 PDF5-ML-Template (ページ 42-57)

関連したドキュメント