2007/11/18

DocBook のメモ

ちょっと DocBook を調べたのでメモしておきます。

参考図書
DocBook: The Definitive Guide
DocBook XSL: The Complete Guide

セットアップ
必要なパッケージ

最低限必要なパッケージはたぶん次のものす。

docbook
docbook-xml
sgml-base
opensp
emacs
psgml

環境変数の設定

文字コードに UTF-8 を使用するので、次のように環境変数をセットしました。

Example 1. 環境変数の設定
export SP_BCTF=utf-8

検証

C-c C-v で onsgmls を使って入力した文章を検証することができます。

Example 2. 検証コマンド
onsgmls -wxml -e -g -s -u /usr/share/sgml/declaration/xml.dcl memo.xml


xmllint というのもあります。

Example 3. xmmlint
xmllint --valid --noout memo.xml

変換

DocBook は xsltproc コマンド等によってスタイルシートに基づいて HTML 等に変化されます。
HTML への変換

DocBook を HTML に変換してみます。
1ファイルの HTML への変換

1ファイルの HTML への変換には html/docbook.xls スタイルシートを使います。

Example 4. 1ファイルの HTML への変換
xsltproc -o dst.html /usr/share/xml/docbook/stylesheet/nwalsh/html/docbook.xsl src.xml


src.xml を -o オプションで指定した dst.html に変換します。
複数ファイルの HTML への変換

複数の HTML に分割して変換するには html/chunk.xsl スタイルシートを使います。出力ファイルは指定しません。デフォルトで index.html がトップページとして出力されます。

Example 5. 複数ファイルの HTML への変換
xsltproc /usr/share/xml/docbook/stylesheet/nwalsh/html/chunk.xsl src.xml


root.filename パラメータでトップページのファイル名を index.html 以外にすることができます。

トップページ以外のファイル名も DocBook 中で明示的に指定したり、id 属性をファイル名にしたり、自動で生成してくれたりします。
その他いろいろ

実にいろいろなことができるみたい。CSS スタイルシートやアイコン。HTML の インデント。エンコーディング指定。などなど。おもしろい。
PDF への変換

PDF への変換でどうしても日本語フォントが表示できないと悩んでいたら、問題は PDF ビューアの方にありました。xpdf, evince ともだめで、Adobe Reader では表示されました。どうやら埋め込みの TrueType フォントを表示できるかどうかとうい問題だったようです。(日本語フォントの設定は Makefile と userconfig.xml を参照)

そうすると、次の問題は埋め込み TrueType フォントではなく Ryumin-Light の Type1 フォントを使う方法ですね。

それにしても、仕上がりはどうしようもなくきたない。いろいろ設定が必要なのかもしれない。日本語の組版に対応していないのかな。Couldn't find hyphenation pattern en というエラーメッセージも出てるし。うぅむ。

Makefile

SRC=memo

XLS=/usr/share/xml/docbook/stylesheet/nwalsh

FOP=fop
#FOP=/home/ancient/tmp/fop-0.94/fop

#JLIB=/usr/share/java

SAZANAMI_GOTHIC=/usr/share/fonts/truetype/sazanami/sazanami-gothic.ttf
SAZANAMI_MINCHO=/usr/share/fonts/truetype/sazanami/sazanami-mincho.ttf

html:
xsltproc -o $(SRC).html $(XLS)/html/docbook.xsl $(SRC).xml
opera $(SRC).html

chunk:
xsltproc $(XLS)/html/chunk.xsl $(SRC).xml
opera index.html

fo:
xsltproc -o $(SRC).fo \
--stringparam body.font.family Mincho \
--stringparam title.font.family Gothic \
$(XLS)/fo/docbook.xsl $(SRC).xml
$(FOP) -c userconfig.xml -fo $(SRC).fo -pdf $(SRC).pdf
acroread $(SRC).pdf

# --stringparam body.start.indent 0pc \

font:
fop-ttfreader $(SAZANAMI_GOTHIC) fonts/sazanami-gothic.xml
fop-ttfreader $(SAZANAMI_MINCHO) fonts/sazanami-mincho.xml

word:
xsltproc -o $(SRC)-word.xml --stringparam wordml.template template.xml $(XLS)/roundtrip/docbook.xsl $(SRC).xml
openoffice $(SRC)-word.xml

clean:
rm -f *.html *~

userconfig.xml
<fop version="1.0">
<renderers>
<renderer mime="application/pdf">
<fonts>
<font metrics-url="file:///home/ancient/letter/docbook/memo/fonts/sazanami-gothic.xml"
kerning="yes"
embed-url="file:///usr/share/fonts/truetype/sazanami/sazanami-gothic.ttf">
<font-triplet name="Gothic" style="normal" weight="normal"/>
<font-triplet name="Gothic" style="normal" weight="bold"/>
<font-triplet name="Gothic" style="italic" weight="normal"/>
<font-triplet name="Gothic" style="italic" weight="bold"/>
</font>
<font metrics-url="file:///home/ancient/letter/docbook/memo/fonts/sazanami-mincho.xml"
kerning="yes"
embed-url="file:///usr/share/fonts/truetype/sazanami/sazanami-mincho.ttf">
<font-triplet name="Mincho" style="normal" weight="normal"/>
<font-triplet name="Mincho" style="normal" weight="bold"/>
<font-triplet name="Mincho" style="italic" weight="normal"/>
<font-triplet name="Mincho" style="italic" weight="bold"/>
</font>
</fonts>
</renderer>
</renderers>
</fop>

memo.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
<article>
<title>DocBook のメモ</title>

<sect1>
<title>セットアップ</title>

<sect2>
<title>必要なパッケージ</title>
<para>最低限必要なパッケージはたぶん次のものす。</para>
<itemizedlist>
<listitem>
<para>docbook</para>
</listitem>
<listitem>
<para>docbook-xml</para>
</listitem>
<listitem>
<para>sgml-base</para>
</listitem>
<listitem>
<para>opensp</para>
</listitem>
<listitem>
<para>emacs</para>
</listitem>
<listitem>
<para>psgml</para>
</listitem>
</itemizedlist>
</sect2>

<sect2>
<title>環境変数の設定</title>
<para>文字コードに UTF-8 を使用するので、次のように環境変数をセットしました。</para>
<example>
<title>環境変数の設定</title>
<programlisting>export SP_BCTF=utf-8</programlisting>
</example>
</sect2>

</sect1>

<sect1>
<title>検証</title>
<para>C-c C-v で onsgmls を使って入力した文章を検証することができます。</para>
<example>
<title>検証コマンド</title>
<programlisting>onsgmls -wxml -e -g -s -u /usr/share/sgml/declaration/xml.dcl memo.xml</programlisting>
</example>
<para>xmllint というのもあります。</para>
<example>
<title>xmmlint</title>
<programlisting>xmllint --valid --noout memo.xml</programlisting>
</example>
</sect1>

<sect1>
<title>変換</title>

<para>DocBook は xsltproc コマンド等によってスタイルシートに基づいて HTML 等に変化されます。</para>

<sect2>
<title>HTML への変換</title>
<para>DocBook を HTML に変換してみます。</para>


<sect3>
<title>1ファイルの HTML への変換</title>
<para>1ファイルの HTML への変換には html/docbook.xls スタイルシートを使います。</para>
<example>
<title>1ファイルの HTML への変換</title>
<programlisting>xsltproc -o dst.html /usr/share/xml/docbook/stylesheet/nwalsh/html/docbook.xsl src.xml</programlisting>
</example>
<para>src.xml を -o オプションで指定した dst.html に変換します。</para>
</sect3>

<sect3>
<title>複数ファイルの HTML への変換</title>
<para>複数の HTML に分割して変換するには html/chunk.xsl スタイルシートを使います。出力ファイルは指定しません。デフォルトで index.html がトップページとして出力されます。</para>
<example>
<title>複数ファイルの HTML への変換</title>
<programlisting>xsltproc /usr/share/xml/docbook/stylesheet/nwalsh/html/chunk.xsl src.xml</programlisting>
</example>
<para>root.filename パラメータでトップページのファイル名を index.html 以外にすることができます。</para>
<para>トップページ以外のファイル名も DocBook 中で明示的に指定したり、id 属性をファイル名にしたり、自動で生成してくれたりします。</para>
</sect3>

<sect3>
<title>その他いろいろ</title>
<para>実にいろいろなことができるみたい。CSS スタイルシートやアイコン。HTML の インデント。エンコーディング指定。などなど。おもしろい。</para>
</sect3>

</sect2>


<sect2>
<title>PDF への変換</title>

<para>PDF への変換でどうしても日本語フォントが表示できないと悩んでいたら、問題は PDF ビューアの方にありました。xpdf, evince ともだめで、Adobe Reader では表示されました。どうやら埋め込みの TrueType フォントを表示できるかどうかとうい問題だったようです。</para>

<para>そうすると、次の問題は埋め込み TrueType フォントではなく Ryumin-Light の Type1 フォントを使う方法ですね。</para>

<para>それにしても、仕上がりはどうしようもなくきたない。いろいろ設定が必要なのかもしれない。日本語の組版に対応していないのかな。Couldn't find hyphenation pattern en というエラーメッセージも出てるし。うぅむ。</para>
</sect2>
</sect1>
</article>

0 件のコメント: