#contents

*要件 [#a3ba2fa4]
-Windows
-日本語文書
-pdf, html両方出力可能

*インストール [#v1ee2bae]
**事前準備 [#w580a6c2]
Python2.4以上がインストールされていること。

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

**MikTeXのインストール [#b6551b67]
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のインストール [#rccc9c7b]
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()


**動作確認 [#vda4ba04]
ここまでで、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用プラグインのインストール [#m5a00060]
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)の日本語対応化 [#ub42e853]
日本語のDocBookからPDFを出力するための環境整備をする。まずはテスト用のDocBookのXMLを作る。エンコーディングはUTF-8で書くこと。~
日本語の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の設定になってしまった・・・。

#htmlinsert(adBigRect)

**コメントをどーぞ [#p4548f90]
#comment
----
[[CategoryTeX]] [[CategoryAsciiDoc]]

|New|Edit|Diff|History|Attach|Copy|Rename|
HTML convert time: 0.002 sec.