RubyスクリプトをLaTeXで整形(?)

rubyco2006-04-10

  • RubyスクリプトLaTeXで美しく整形するツールがほしい、と思った。
  • いきなり書きかけて、ふと「絶対すでに誰かが作っているはず」と思い直した。
  • Ruby LaTeXで検索した。
    • hyuki.comの日記がトップに来てこけた。
    • 1997年のまつもとさんのメールでrd2texというキーワードが出てきた。
    • それ以外はいま一つ。
  • Ruby TeXで検索した。
    • でも、Ruby*で*TeXドキュメントを作るのはあるけれど、Ruby*の*スクリプトをきれいに出すのは見つからない。ふうむ。
  • HTMLへの変換はあるのでは、と思い直す。RDだっけ。
    • C:\rubyにいって、dir /s/b rd*.* で検索する。rdoc2latex.rbというのが見つかる。
    • C:\ruby\bin\rdoc.bat というのを見る。これかな。
    • rdoc --help | more でしらべる。Available output formatters: chm, html, ri, xmlというのを見て、LaTeXはないのか、と思う。ふうむ。
  • rdoc2latex
    • C:\ruby\lib\ruby\1.8\rdoc\markup\sample\rdoc2latex.rbの中を読んでみる。記号のエスケープをやってるみたい。
    • ruby rdoc2latex.rb sample.rbをやってみる。うーん、今ひとつ期待したのとは違う。
  • 探すの疲れてきた。自分で作りたくなってくる。
  • 何となく「青木 Ruby LaTeX」で検索してみる。
    • RDtoolというキーワードを見つける。
  • RDtool
    • C:\ruby で dir /s/b RDtool*.* で検索する。何もなし。
    • GoogleでRDTool LaTeXで検索する。
    • あ、そうか。RAAを探すのか、こういうときは。と気づく。
    • RAA - rdtoolというのを見つける。これかな。
    • RDtoolのホームページらしきところを見つける。
    • るびきちさんのRD事始めというページを見つける。
    • とりあえずtarballをダウンロードして展開。rdtool-0.6.20.tar.gz
    • README.ja.htmlを読む。RDはPerlのPODみたいなものか。
    • ruby setup.rbでインストール。できた。
    • rdと入力すると「コマンドの構文が誤っています。」と言われる。まずい、rdはrmdirのことではないか。ええと。
  • rd2
    • C:\ruby\binをみてみると、rd2がぽつんと。なるほど、rd2.batまでは作ってくれないのか。rb2batはあるのかな?ないようだ。
    • よくわからないから、とりあえず、rd2.batを作り、中でruby c:\ruby\bin\rd2 %1 %2 %3 %4 %5 %6 %7 %8 %9することにした。
  • rd2.bat
    • rd2.bat --helpでヘルプが出た。 -r オプションでフォーマットライブラリを選ぶようだ。きっとここにmanとかhtmlとかを書くのかな。
    • 探してみると、C:\ruby\lib\ruby\site_ruby\1.8\rd\rd2html-lib.rbなどがある。ふむふむ。でもきっと、デフォルトはHTMLであろう。
    • サンプルRDはどこかにあるかな。っていうか、ライブラリが全部RDのサンプルかな。
    • では =begin をgrepしてみよう。いろいろあるな。
    • 試しに、rd2 C:\ruby\lib\ruby\1.8\optparse.rb を実行。おお、HTMLが出てくるね。ではリダイレクトしよう。
    • rd2 C:\ruby\lib\ruby\1.8\optparse.rb > sample.html
    • ふむふむ。まさにperldoc風味。適当にスタイルシートかませればドキュメント化できる…まてよ、これは私がやりたいこととは違っている。
    • やりたかったのはスクリプトそのものをきれいにしたかったのだ。キーワードを太字にしたり、行番号を付加したり、など。
  • もしかしたらliterateprogramming.comあたりにあったりして…ないな。ToolsのところにMind Mappingがあるな。びっくり。でもそれは今回は関係なし。
  • どこかでRuby構文解析して色つけしているツールがあったような。どこだっけか…。
    • Ruby 構文エディタで検索。ない。
    • Ruby 構文 フォーマッタ。ない。
  • RDEには関連情報はないか。
  • 疲れてきたので、もう寝ます。
    • の前に、奥村先生の美文書作成入門を見て、こんな感じというものを作った。
\documentclass{jarticle}
\title{ }
\author{ }
\date{ }
\usepackage[dvipdfm]{graphicx}
\begin{document}
\begin{quote}
\baselineskip=12pt
\sfcode`;=3000
\def\q{\hspace*{1em}}
{\bf require} \verb|'pathname'| \\
 \\
{\it index} = {\sl Pathname}.new(\verb|"index.html"|) \\
{\it index}.open(\verb|"w"|) {\bf do} $|${\it out\/}$|$ \\
\q {\it out}.puts \verb|"<html><body><ul>"| \\
\q {\sl Pathname}.glob(\verb|"*.html"|).sort.each {\bf do} $|${\it file\/}$|$ \\
\q\q {\bf next} {\bf if} {\it file} $\equiv$ {\it index} \\
\q\q {\it out}.puts \%Q(\verb|<li><a href="#{|{\it file}\verb|}">#{|{\it file}\verb|}</a></li>|) \\
\q {\bf end} \\
\q {\it out}.puts \verb|"</ul></body></html>"| \\
{\bf end} \\
\end{quote}
\end{document}

…このように作業手順を書いてみると、私がいかに無駄な動きをばたばたしているかわかるなあ…。
追記:MoonWolfさんからrb2htmlを教えていただきました。これですこれです!ありがとうございます。また、odzさんから「CTANのlgrind」を教えていただきました。なるほどTeXの側から探すという方法もありましたね、感謝です♪