要件

インストール

事前準備

Python2.4以上がインストールされていること。

asciidoc のインストール

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のインストール

xsltprocは必須だが、xmllintはxmlの構文チェックするだけみたいなので、無くてもよい。--no-xmllintオプションで処理を飛ばすこともできたりする。 http://www.zlatkovic.com/libxml.en.html にてlibxslt, libxmlのwin32版のバイナリを入手できる。xmllint.exe, xsltproc.exeと関連するDLLをC:\binに配置する。zlibが必要なときもあるかも。一応いれとけ。

MikTeXのインストール

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へパスが通っているか確認。通ってなければ通すこと。

dblatexのインストール

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を出力できるようになった。

Vim用プラグインのインストール

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

dblatex(とpdflatex)の日本語対応化

日本語の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}&#10;</xsl:text>
   <xsl:text>\setsansfont{DejaVu Sans}&#10;</xsl:text>

cyberbitをsongにz変更する。

以上で作業完了。日本語も正しくPDFで出力できるようになる。AsciiDocというよりほとんどpdflatexの設定になってしまった・・・。

コメントをどーぞ



CategoryTeX CategoryAsciiDoc


|New|Edit|Freeze|Diff|History|Attach|Copy|Rename|
Last-modified: 2010-01-30 (Sat) 03:29:34
HTML convert time: 0.012 sec.