DocBook XML文書をPDF形式に変換するdblatexに挑む(最小限サンプルを動作させる)
(2012/1/20)本記事内の日本語関係のトラブルの対処については「DocBook文書をPDFファイルに変換するdblatexに関するその後(2010/4/26現在)」の「日本語を含むDocBook文書の変換に関するその後」を参照。以下、以前の内容となる。
- 使用するサンプル
- 使い方
- 「Missing character」が大量に出る
- 「Undefined control sequence \maketitle.」が出て止まる
- 成功例
- フォントキャッシュ破損?
- しおりの中で日本語が化ける(未解決)
使用するサンプル
「DocBook文書について」の「bookの例」として貼り付けた文書をbooktest.xmlとして保存して使用するものとする。使い方
PDF形式への変換であれば、$ dblatex [XMLファイル]
でOK。中間ファイルのLaTeX文書を出力するには
$ dblatex -t tex [XMLファイル]
とする。問題が起きたときに、どのような.texファイルになっているのかを見るのに使える。
「Missing character」が大量に出る
book要素やarticle要素にlang属性がセットされていないと出るようだ。変換処理自体は正常終了するのだが、代わりに、「Missing character」の後ろに表示されるコード番号の形でPDF中に表示されてしまうため、人間には意味が分からない。
<article lang="ja">
のように、「lang="ja"」が付いていればOK。
「Undefined control sequence \maketitle.」が出て止まる
中間ファイルの\begin{CJK}{UTF8}{cyberbit}
の部分が悪さをしているらしい。これを「song」の他、任意の(使用可能な)フォント名にすることで回避できるようだ。
$ sudo sed -i -e 's/cyberbit/song/' [インストール先]/share/dblatex/xsl/lang.xsl
以下、XSLスタイルシート中の該当部分。
[引用]ファイル名: [インストール先]/share/dblatex/xsl/lang.xsl より
<xsl:template name="lang.document.begin"> <xsl:param name="lang"/> <xsl:if test="starts-with($lang,'zh') or starts-with($lang,'ja') or (starts-with($lang,'ko') and $korean.package='CJK')"> <xsl:text>\begin{CJK}{UTF8}{cyberbit} </xsl:text> </xsl:if> </xsl:template>
成功例
上の「Undefined control sequence \maketitle.」を回避することで、例のようなシンプルなものであれば$ dblatex booktest.xml Build the listings... XSLT stylesheets DocBook - LaTeX 2e (0.2.7) =================================================== Build booktest.pdf This is pdfeTeX, Version 3.141592-1.30.5-2.2 (Web2C 7.5.5) entering extended mode This is pdfeTeX, Version 3.141592-1.30.5-2.2 (Web2C 7.5.5) entering extended mode 'booktest.pdf' successfully built
のようになり、日本語を含むPDFファイルが正常に出力される。
画像は、VLゴシックを埋め込んで使用して目次部分を表示している。
フォントキャッシュ破損?
(see the transcript file for additional information) </var/cache/fonts/pk/model ess/cyberbit/cyberb76.5972pk Error: pdflatex (file cyberb76): unexpected eof in pk file ==> Fatal error occurred, the output PDF file is not finished!
のようなエラーが出る場合は、このままだと何度やってもダメ。フォントのキャッシュを消す。
$ rm /var/cache/fonts/* -fr
とやれば確実だが、上の場合、/var/cache/fonts/pk/modeless/cyberbit/cyberb76.5972pkだけ消せばよいのかもしれない。
しおりの中で日本語が化ける(未解決)
「しおり」の表示の日本語が、画像のように化けてしまう。この対処法は不明。