Python2.4以上がインストールされていること。
c:\binにディレクトリを掘って配置することにする。
cd c:\bin mkdir asciidoc unzip asciidoc-8.5.3.zip -d asciidoc
a2x.pyの修正。PDFを作るときにdblatexはPython版のを使うので(後でインストールする)、それへのパスなどの書換え。 CONF_DIRとかを書き換えとく必要あり。
--- a2x.py.orig Thu Jan 28 22:26:32 2010 +++ a2x.py Fri Jan 29 21:32:46 2010 @@ -25,7 +25,7 @@ # AsciiDoc global configuration file directory. # NOTE: CONF_DIR is "fixed up" by Makefile -- don't rename or change syntax. -CONF_DIR = '/etc/asciidoc' +CONF_DIR = 'C:/bin/asciidoc' ###################################################################### @@ -38,16 +38,16 @@ ENV = None # External executables. -ASCIIDOC = 'asciidoc' +ASCIIDOC = 'C:/bin/asciidoc/asciidoc.py' XSLTPROC = 'xsltproc' -DBLATEX = 'dblatex' # pdf generation. +DBLATEX = 'C:/Python26/Scripts/dblatex' # pdf generation. FOP = 'fop' # pdf generation (--fop option). W3M = 'w3m' # text generation. LYNX = 'lynx' # text generation (if no w3m). -XMLLINT = 'xmllint' # Set to '' to disable. -EPUBCHECK = 'epubcheck' # Set to '' to disable. +XMLLINT = '' # Set to '' to disable. +EPUBCHECK = '' # Set to '' to disable. # External executable default options. ASCIIDOC_OPTS = '' DBLATEX_OPTS = '' FOP_OPTS = '' XSLTPROC_OPTS = '' @@ -533,7 +533,7 @@ docbook_file = self.dst_path('.xml') xsl = self.asciidoc_conf_file(os.path.join('dblatex','asciidoc-dblatex.xsl')) sty = self.asciidoc_conf_file(os.path.join('dblatex','asciidoc-dblatex.sty')) - shell('"%s" -t %s -p "%s" -s "%s" %s "%s"' % + shell('python "%s" -t %s -p "%s" -s "%s" %s "%s"' % (DBLATEX, self.format, xsl, sty, self.dblatex_opts, docbook_file)) def to_dvi(self):
以上でxhtmlは出力できるようになった。PDFはa2xのバッチ処理で、(PlainText)→asciidoc→(DocBook XML)→dblatex→(PDF)と 変換させてる。asciidocからはHTML, XHTML, DocBook形式に出力するだけ。次にPDF出力に必要な環境を整える。
xsltprocは必須だが、xmllintはxmlの構文チェックするだけみたいなので、無くてもよい。--no-xmllintオプションで処理を飛ばすこともできたりする。 http://www.zlatkovic.com/libxml.en.html にてlibxslt, libxmlのwin32版のバイナリを入手できる。xmllint.exe, xsltproc.exeと関連するDLLをC:\binに配置する。zlibが必要なときもあるかも。一応いれとけ。
Windows版のTeX一式。インストーラが便利。 http://miktex.org/ からダウンロードできる。Basicインストール後、dblatexの実行に必要なパッケージをmpmにてインストールする必要あり。mpm.exeはMikTexのbin内にある。MiKTeXのバージョンはbasic-miktex-2.8.3582 を入れた。
必要なパッケージ changebar, colortbl, fancybox, fancyhdr, fancyvrb, listings, overpic, rotating, subfigure, titlesec, bibtopic, enumitem, eepic, lm, lastpage, helvetic, times, symbol, courier. appendix, footmisc, pdfpages, stmaryrd, wasysym eso-pic, xcolor,
追加パッケージはまだあとで日本語関連で必要になったり、忘れてたりするのがある かもしれないが、とりあえずここまで入れる。
ここで一度MiKTexのbinへパスが通っているか確認。通ってなければ通すこと。
MiKTeXにもdblatex.exeは入っているが、これは使わないでPython版のものを使う。 http://dblatex.sourceforge.net/ この辺から最新版の0.2.12をダウンロード。 zipなんかで固めてるのをunzipなどして、
cd dblatex-0.2.12 python setup.py install
でインストールする・・・前に、setup.pyの325行目
-- iroot = root.split(pref + os.path.sep)[1] ++ iroot = root.split(pref + os.path.sep)[0]
直しとかないと、インストールがこける。実行は
python C:/Python26/Scripts/dblatex book.xml
てな感じになる。
もし、
warning: failed to load external entity "file:custom.xsl"
というエラーが出る場合。次のファイルを修正する。
C:\Python26\lib\site-packages\dbtexmf\core\dbtex.py
--- dbtex.py.orig Thu Jan 28 23:27:39 2010 +++ dbtex.py Thu Jan 28 23:28:40 2010 @@ -256,7 +256,7 @@ xslset = "doclist.xsl" f = file(xslset, "w") f.write(self.xsl_header) - f.write('<xsl:import href="%s"/>\n' % path_to_uri(self.xslbuild)) + f.write('<xsl:import href="%s"/>\n' % path_to_uri(self.tmpdir + '/' + self.xslbuild)) f.write('<xsl:import href="%s"/>\n' % path_to_uri(self.xslset)) f.write('</xsl:stylesheet>\n') f.close()
ここまでで、asciidocでHTML,PDFの出力が可能になったはず。でも日本語のDocBookをPDFにすると文字化けする。ちょっと使って試してみる。
cd c:/bin/asciidoc pyhon asciidoc.py doc/asciidoc.txt
これでdoc/asciidoc.htmlができる。ちなみに目次を作るときは -a toc オプションをつける。章に番号を振るには-a numbered オプションをつける。
python asciidoc.py -a toc -a numbered doc/asciidoc.txt
次。PDF。
python a2x.py -f pdf doc/asciidoc.txt
なんか途中でエラーになって止まるときは、-nオプションをつけてドライランさせてみる。すると実行予定のバッチが表示されるので、一つずつ実行して、原因を潰していく。たいていpdftexのエラーとか、モジュールが無いとかそういうのだ。
python a2x.py -n -f pdf doc/asciidoc.txt
ここまででasciidocのPlain Textからhtml、pdfを出力できるようになった。
asciidoc用のVimシンタックスプラグインをインストールする。asciidoc/vimにftdetect, syntaxディレクトリがあるので、これらのファイルをvim/vimfiles以下にコピーする。
cd c:/bin/asciidoc/vim cp -uR syntax c:/vim/vimfiles cp -uR ftdetect c:/vim/vimfiles
日本語のDocBookからPDFを出力するためのpdflatexの環境整備をする。まずはテスト用のDocBookのXMLを作る。エンコーディングはUTF-8で書くこと。(注:DblatexのバックエンドをXeTeXに変更してみるでpdflatexの変わりにxetexをバックエンドにする方法でやってみたら、こっちの方が良かった。dblatexはバックエンドをpdftexかxetexかどちらか選ぶことができるのだが、xetexの方が簡単で良い結果を得られたので、特別な理由がなければここで述べてるcyberbitフォントのインストールはせずに、xetexの設定をするDblatexのバックエンドをXeTeXに変更してみるへ進んだほうがいい。)
jptest.txt
= タイトル = == あいうえお == 12345
まあテストなのでこんなもんで・・・。
で、これをPDFにしてみる。
python a2x.py -f pdf jptest.txt
するとPDFは作られるが、日本語が文字化けしてしまう。ちなみにこのa2xでの中間のDocBookの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"> <?asciidoc-toc?> <?asciidoc-numbered?> <article lang="en"> <articleinfo> <title>タイトル</title> </articleinfo> <section id="_"> <title>あいうえお</title> <simpara>12345</simpara> </section> </article>
おかしい!DocBookのlang属性がデフォのままのenのままだ。ここはjpにする。またlang属性がarticleだけに付いてるが、これを文書全体の属性にするやりかたがある。asciidocのパラメータで、-d(--doctyppe)でarticle, book, manpageが選べるが、デフォがarticleなのでこれをbookにすれば解決するはず。
python a2x.py -a lang=ja -d book -f docbook jptest.txt
jptest.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"> <?asciidoc-toc?> <?asciidoc-numbered?> <book lang="ja"> <bookinfo> <title>タイトル</title> </bookinfo> <chapter id="_"> <title>あいうえお</title> <simpara>12345</simpara> </chapter> </book>
で、これをdblatexにかけてpdfを作るための環境を整備する。MiKTexのmpmで cjk, miktex-cjkutils-bin-2.8, zhmetrics をインストールする。次にCyberbitフォントをインストールする。このフォントは http://aol-4.vo.llnwd.net/pub/communicator/extras/fonts/windows/ からCyberbit.ZIP をダウンロードし、Vista, 7なら
C:/Users/YOURNAME/AppData/Roming/MiKTeX/2.8/fonts/truetype/cyberbit/cyberbit.ttf
XPなら(たぶん)
C:/Documents And Settings/YOURNAME/Local Settings/Application Data/MiKTeX/2.8/fonts/truetype/cyberbit/cyberbit.ttf
として配置する。次におもむろに
mktexlsr
でフォントデータベースを更新。 それから、 C:/Python26/share/dblatex/xsl/lang.xsl
--- lang.xsl.orig Sun Aug 23 08:13:19 2009 +++ lang.xsl Sat Jan 30 03:04:43 2010 @@ -7,7 +7,7 @@ <xsl:param name="latex.encoding">latin1</xsl:param> <xsl:param name="korean.package">CJK</xsl:param> -<xsl:param name="cjk.font">cyberbit</xsl:param> +<xsl:param name="cjk.font">song</xsl:param> <xsl:param name="xetex.font"> <xsl:text>\setmainfont{DejaVu Serif} </xsl:text> <xsl:text>\setsansfont{DejaVu Sans} </xsl:text>
cyberbitをsongにz変更する。
以上で作業完了。日本語も正しくPDFで出力できるようになる。AsciiDocというよりほとんどpdflatexの設定になってしまった・・・。