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
言語のサポートのみです.●
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
の中間ファイル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)