DocBookで文系論文を書いてみる 3日目
- 2008-01-14
- カテゴリ: その他のプログラミング
- タグ: ○○で文系論文を書いてみる Tips XML XSL DocBook Apache FOP Xalan
前回までで、一応XMLファイルをXSLを使ってPDFに変換できる環境まではできたと思う。だから今日は、DocBook文書をXSLを使ってPDFに変換してみる。
ということで、やるべきことは以下の2点
- DocBook文書をXSL-FOに変換するためのXSLTを手に入れる
- XSLTにパラメータを渡して、実際の出力をコントロールするためのXSLTを作成する
ということで、順番に説明していく。
DocBook XSLの入手
DocBookをXSL-FOを変換するXSLTは、SourceForge.net: DocBookで手に入れることができます。どうやら、XSLだけでなくDSSSLなどでも変換できるようですが、ダウンロードするのはXSL版。docbook-xslのページから最新版zip (今日現在では1.73.2) をダウンロードしてきます。
このdocbook-xslにはXSL-FOに変換するXSLTだけでなく、XHTMLに変換するXSLTとかも入っているようです。
ダウンロードしたzipを解凍すると、いろいろなファイルが入っています。INSTALLというファイルを見ると、インストール方法について書いてあるんだけれど、普通のWindows環境であれば、パッケージ管理システムを使ったり、拡張子.shのシェルスクリプトを走らせたりということはできないので、おとなしく解凍したフォルダを好きなところに置いておくだけにしておきます。
僕は、Cドライブ直下に、DocBookXSLというフォルダを作って、その中に全部を入れておきました。フォルダ構成を整理しておくと、↓のようになっています。
C: ├─ApacheFOP │ ├─build │ ├─conf │ ├─fonts │ ├─lib │ : │ : ├─DocBookXSL │ ├─fo │ ├─params │ ├─xhtml │ : │ : : :
DocBook XSLには日本語環境に対応させるためのパッチがあるという噂を聞んだけど、そのパッチが見つからないので、そのままでいきます。そのままでも一応それなりの形にはしてくれるので。
DocBook XSLテスト
この時点でもうDocBook文書からPDFを作ることができます。例えば、↓のようなコマンドを叩けばMyFirstDocBook.xmlからMyFirstDocBook.pdfを生成することができます。
fop -xsl C:\DocBookXSL\fo\docbook.xsl -xml MyFirstDocBook.xml -pdf MyFirstDocBook.pdf
ただし、これではまだ日本語も使えないし、US LetterサイズのPDFになったりしてしまうので、DocBook XSLの挙動をコントロールするXSLTファイルを作る必要があります。
DocBook XSLの挙動をコントロールするXSLTファイルを作る
DocBook XSLの挙動を操作するときは、C:\DocBookXSL\fo\docbook.xslの内容を直接操作するのではなく、別のXSLTファイルからC:\DocBookXSL\fo\docbook.xslをインポートした上で、パラメータを設定してやるのが流儀のようです。
簡単な例を挙げると、↓のようなXSLTファイルが必要になります。
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:import href="C:\DocBookXSL/fo/docbook.xsl"/>
<xsl:param name="paper.type">A4</xsl:param>
<xsl:param name="title.font.family">IPA Pゴシック</xsl:param>
<xsl:param name="body.font.family">IPA P明朝</xsl:param>
<xsl:param name="monospace.font.family">IPA明朝</xsl:param>
</xsl:stylesheet>
xsl:importを使用してDocBook XSLを読み込み、xsl:paramを使用してパラメータを指定しています。↑で指定したのは、「紙のサイズ (A4)」「見出しのデフォルトフォント (IPA Pゴシック)」「本文のデフォルトフォント (IPA P明朝)」「等幅のデフォルトフォント (IPA明朝)」だけです。
使用できるパラメータはまだ勉強中ですが、C:\DocBookXSL\paramsの中を見れば説明があるので、調べてみてください。また、C:\DocBookXSL\fo\param.xslを見れば、XSL-FOに変換するときのパラメータのデフォルト値を見ることができます。
変換
これらのXSLTファイルを使ってDocBook -> PDF変換を行うためのコマンドが↓です (実際には改行なし)。日本語フォントを使うためにコンフィグファイルも呼び出さなきゃいけないことに気をつけてください。
fop
-c C:\apacheFOP\conf\my.xconf
-xsl MyFirstDocBook.xsl
-xml MyFirstDocBook.xml
-pdf MyFirstDocBook.pdf
C:\apacheFOP\conf\my.xconfは前回作った設定ファイルで、MyFirstDocBook.xslは先ほど↑で例として出したXSLTファイルです。
前回と前々回の内容を適当なDocBookに文書にして、MyFirstDocBook.xmlという名前で保存して↑のコマンドでPDFを作ってみました。
できあがったPDFを見てみれば、まぁまぁまともな感じになっているのがわかると思います。(FC2ブログではPDFファイルをアップロードできなかったので、拡張子を.mp3に変えてあります。ダウンロードしてから.pdfに戻してご覧ください。)まだ、DocBookはあまり勉強していないし、DocBook XSLのパラメータもまともに見ていないので、長めのプログラムコードが派手にオーバーフローしたりしていますが、気をつけてDocBook文書を書いてやれば何とかできそうです。
一応終わり
ここまでで、一応DocBookをPDFに変換することができるようになったので、一旦打ち切りたいと思います。あとは、DocBookとDocBook XSLについてもう少し勉強すれば文系論文を書くぐらいなら簡単にできそうです。
実はしばらくは論文を書く予定がないので、続きは次に論文を書くときにでも。そのときはMathMLとSVGについても調べたいと思います。
トラックバックURL
- http://liosk.blog103.fc2.com/tb.php/73-3c69271e
0 件のトラックバック
1 件のコメント
-
おかげでPandocでMarkdownからDocbookに変換したものからそこそこのPDFを作れて満足しています。
- 2008-02-03
- by courant
- id:S01s9Vvw
- 編集

