メモ。
\newcommand{\degree}{^\circ}
textcomp パッケージ
\textdegree
書籍や他のクラスファイルでの書き方を参考に、クラスファイルを .dtx 化。 だんだん構成がわかってきた。
トリッキーだが、うまくできている。
ただマクロの定義順と説明したい順が違うと、悩むな。
先日 reStructuredText ベースの要求仕様書ファイルから、LaTeX への変換プログラムを Perl で作成した。rst2xml で変換した XML 文書経由で。
欲しいところだけまずは実装して使ったんだけれど、この先使っていくには細かいところを組んでいく必要がある。やっぱりフルスクラッチするのは面倒だな。
本来は Docutils 用の Writer を作成するのが王道。
しかし Python なんだよね。以前に何度か覚えておこうと思ったんだけれど動機づけが弱かったのかいつも途中でフェードアウト。 しかし今回は明確な目的があるので、もりもりやりそう。
まずは既存の docutils.writers.latex2e.py あたりをコピーしていじって遊んでみるかな。 自分の場合この方法が一番覚えるのが早い。 小学生の時に最初にBASICをいじった時も、既存のゲームのパラメータとか改造から入ったし。
さて、その latex2e.py であるが「documentclass がオプションや設定ファイルで変更できるものの、標準の LaTeX2e 用のもののどれかしか駄目」だったりなど、普通に使うにもちょっといじる必要がありそう(jsbook とか使いたいし)。
一旦自分好みの LaTeX2e Writer を作ってから、それを拡張する形で特定文書毎の Writer を作るのがよさそうだ。
この間やっつけでPerl で コンバータをちょっと書いたのだが、やはりここは正攻法で Docutils の Writer として書いておきたい。
Docutils に含まれている LaTeX2e Writer (docutils.writers.latex2e) のクラスを継承してカスタマイズ版を作ればいいかなと着手。 この Writer の生成する TeX ファイルがちょっと好みではないので、継承して自分好みの Writer を書いた上で、それを継承してドメイン毎の Writer を書く事にする。
Python でコードを書いたことはほとんどないのだがそれほど迷う点はない。 素直な言語なのかな。$ とか @ が出てこないのはちょっと寂しい。ブロックをインデントで示すので「閉じ」がなく、ちょっと「スースー」する。 わかる? この気持ち。
Docutils はパースした結果 DOM ライクなツリーができて、これに対して visit / depart 式の visitor を使って処理をしていけるようになっている。 そのあたりはフレームワークがあるし、典型的なパターンなので楽ではある。
ただし、docutils.writers.latex2e のクラスが継承されることを意識されている感じがしないので、メソッドをコピーして書き換えてオーバーライドといった事が必要になる箇所が思ったよりあるのがちょっと気になる。 今後バージョンアップした時に内部も変わる可能性があるだろうし、最終的にはごっそり Writer を作ってしまう方が良さそうだ。
また久しぶりに LaTeX2e でドキュメントを作成したくなった。 今まで Linux でも Windows でもコンパイルが通るように ISO-2022-JP で書いていたのだが差分も取りにくいし、そろそろ UTF-8 にしたい。 調べたら Linux なら ptexlive で UTF-8 対応の pLaTeX2e が使える模様。Windows については W32TeX が対応済みのようだ。
Debian GNU/Linux では ptexlive がないので、野良インストールした。
~/tmp/ptexlive の下でビルドして /usr/local/texlive/p2009 の下にインストール。
以下手順メモ:
手元の環境では以下を追加インストールした。
~/tmp/ptexlive を作りファイルをダウンロード。 ptexlive アーカイブを展開、TeX Live の方は ISO イメージを展開してマウントする。
cd mkdir -p tmp/ptexlive cd tmp/ptexlive wget http://tutimura.ath.cx/~nob/tex/ptexlive/ptexlive-20100711.tar.gz wget http://www.t.ring.gr.jp/pub/text/CTAN/systems/texlive/Images/texlive2009-20091107.iso.xz tar zxvf ptexlive-20100711.tar.gz 7za e texlive2009-20091107.iso.xz mkdir texlive mount -t iso9660 -o loop texlive2009-20091107.iso $PWD/texlive
(2010年9月18日追記: ここで TeX live をインストールする)
次に ptexlive を展開してディレクトリに移動して ptexlive.cfg を用意し編集する。
cd ptexlive-20100711 cp ptexlive.sample ../ptexlive.cfg emacs ../ptexlive.cfg
変更したところは以下。
そしてビルド。なお既存の ~/.texmf-var があると正しくないビルドができる可能性があると警告されるので移動しておく。
mv ~/.texmf-var ~/.texmf-var-tmp make make otf
最後にテストがこけるがこれは無視してもよいらしい。
そしてインストール。
su make install exit
以上で完了。
環境 PATH を通す。Debian GNU/Linux の TeX 関連パッケージより優先して使うように既存の PATH の前に設定。
export PATH=/usr/local/texlive/p2009/bin/i686-pc-linux-gnu/@:$PATH
UTF-8 なサンプル pLaTeX2e ファイルを作成して platex、dvipdfmx が通ることを確認。
Happy TeXing!
Naney (なにい) です。株式会社MIXIで SNS 事業の部長をしています。
※本サイトの内容は個人的見解であり所属組織とは関係ありません。