cacoo.el 機能追加など。

cacoo.el をバージョンアップ(ver1.3)しました。

主な変更点は以下のようです。

例によって以下の場所からお願いします。

まず、論文などの印刷物だとeps画像を使うことが多いと思いますので、eps画像なども表示できるようにしてみました。リサイズ時にPNG画像に変換するようにしただけです。 cacoo:translation-exts に変換が必要な画像の拡張子を列挙しています。これらの画像はconvertでpng画像に変換を行うようになっています。convertの裏でghostscriptを使いますので、gsがちゃんと設定してあったり、フォントの設定が正しくないとうまく変換できないかもしれません。おそらく、epsを使おうと思っている人の環境なら問題ないでしょう。

次にid:brazilから参考になるコメントをもらいましたので、実験的な機能を組み込んでみました。近頃はWebサービスを使って画像を生成する方法がいくつかあります。指摘してもらったUMLやシーケンス図のほかにも、LaTeX数式や、GoogleChartAPIのようなグラフを生成してくれるものもあります。

そこで、長いURLを自由にかけるようにして、オンラインで図を生成したものを埋め込めるようにしてみました。いろいろと拡張できておくとおもしろいかもしれないので、オンラインだけでなくコマンドラインからも図を生成できるようにして、「本文中のテキストから画像を生成する一連のプラグイン」という仕組みで実装してみました。これを使えばWeb上のサービスだけでなくて、graphvizgnuplotでグラフを描かせて埋め込んだりすることもできます。書き直しが便利なように、「C-c , g」で画像のリロードとテキストに戻すトグルのキーを追加しました。

以下、書式の例と変換後のイメージです。

* UML Class diagram

[img:UML uml3.png]
[Customer]+1->*[Order]
[Order]++1-items>*[LineItem]
[Order]-0..1>[PaymentMethod]
<<<

* UML Sequence diagram

[img:SEQ uml4.png]
Alice->Bob: Authentication Request
note right of Bob: Bob thinks about it.
Bob-->Alice: Authentication Response
note over A,B: text1
note left of A: text2
note right of A
    multiline
    text
end note
A->B: text
activate B
B-->A: text
deactivate B
<<<

* LaTeX Math 1

[img:* http://maru.bonyari.jp/texclip/render.php/texclip20100511002527.png?s=<<<&f=c&r=300&m=p&b=f texclip1.png 600]
\begin{align*}
f(a,b)=\int_a^b\frac{1+x}{a+x^2+x^3}dx
\end{align*}
<<<

* LaTeX Math 2

[img:* http://www.codecogs.com/eq.latex?<<< codecogs.png]
\begin{align*}
\pi_0(x) =& \sum_{n \ge 1} \frac{\mu(n) J(x^{\frac{1}{n}})}{n} \\
& J(x) = li (x) - \sum_{\zeta(\rho)=0} li (x^\rho) - \log 2 + \int^{\infty}_{x} \frac{dt}{ t (t^2 -1) \log t}
\end{align*}
<<<

* google chart

[img:* http://chart.apis.google.com/chart?cht=p3&chs=250x100&chd=t:60,40&chl=Hello|World chart.png]
<<<

* gnuplot

[img:CMD 'gnuplot %IN%' plot1.eps]
set term postscript eps
set output '%OUT%'
plot exp(-0.03*x*x)*sin(x)
<<<

* Graphviz

[img:DOT graphviz.png]
digraph sample {
   alpha -> beta;
   alpha -> 日本語;
   beta -> delta;
}
<<<



なんだか昔のSSIやSmartDocで拡張を作っていた頃を思い出しました。ドキュメントのオーサリングというのは永遠のテーマなのかもしれません。

Cacoo関係無しですみません。あくまでおまけ機能ですので、Cacooがメインの使い方には変わりないはずだと思っています。