2012/10/18

.tex? .rst? html?
--------------------------------

文系論文関連で作られているlatex2htmlがある。文系論文の公開には一定必要なのだろう。
しかし、私のノートやらメモ書きをもとに、複雑なhtmlを生成する必要があまり感じられない。(論文は公開できないし)
htmlなら今では、(横書きに限れば)最強のsphinxがあるからだ。
(以下、非常にrst偏重な文章ですので、お気を病みそうな方はタブを閉じてください。)


要件
^^^^^^^^^^^^^^^^^^^

* なるべく簡易な文書構造入力形式

簡単=素晴らしい
複雑=素晴らしくて当たり前

* 数式必須

できれば画像はやめよwまじでww

* 他の形式へ変換可能

今後のことを考えて、逃げ道を増やしておきたい。

* 昔のtexファイルを活用したい。

これができないと、ユーザー増えないし。ほぼ意味が無い。


ということで、ちょっと周辺の文書形式について特徴を洗い出して、主軸を考え直したい。


tex, html, rst
^^^^^^^^^^^^^^^^^^^^^^^^^^^


tex
"""""""""""""""

* 目的:非常に複雑な表現を実現したい。とにかく精確にとにかく綺麗に。なんでもできると言っても過言ではない。
* コード : 多少複雑になろうが構わない。
* parser : plasTeXなどを使って解析できるようだけど、まだ使い切れてないw
* デメリット : やりたことを探すとあるし、作れるだろうけど、なんせ難しい。ブラウザで読めない。(そのまま置けば別ですよw)


html
""""""""""""""

* 目的 : 簡単な文章から複雑な文章まで多くを表現する。ブラウザで読む。
* コード : ちょい複雑なことをすると、非常に複雑になる。ってか醜い。汚い。
* parser : pythonにbeautifulsoupという非常に強力なparserがある。(限界はありながらもxmlも対応しているようだ)
* デメリット : ほんと汚いw数式orz


rst
"""""""""""""

* 目的 : 構造化された文章の簡易な生成。特にpython moduleドキュメントやら説明書の生成。簡単なHPの作成。
* コード : 激単純。激見やすい。
* parser : 単純すぎて必要がない。
* デメリット : 表現が少ない。


変換
^^^^^^^^^^^^^^^^^

* rst -> html (sphinx, rst2html)
* rst -> tex (sphinx)

* tex -> html (latex2html+数式、plasTeX)
* tex -> rst (tex2rst+数式)

* html -> tex (あるらしいが知らない)
* html -> rst(あるけどこれは〜ちょっと)

結論
^^^^^^^^^^^^^

ということで、rstを主軸にすることは決定。(え?ページ見た瞬間にわかった?w)





問題はtexのノート
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

さて、「古いtexファイルをrstに変えておきたい。」どうしようか。
基本は、tex2rst(これも相当未発達)を使うとして、数式を処理しないといけない。


問題はtexの数式をrstへ
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

せっかくrst-sphinxを使うのでpngmathとかじゃなくて、mathjaxに通したい。
となると、短縮語やローカルのパッケージ自作パッケージを外さなければならない。
(mathjaxは基本的に、amsmathくらい有名なものしかサポートしていないし、
それ以外も読めるようにしようというのは、理念(数式を画像にしないでweb経由で処理(コードのコピペ?楽勝w))に反する。)

となると、短縮等々の定義を使わないか、定義ファイルをはずすか。。。
いいや面倒すぎる。もう手に癖がついてる。



ここから本題。



定義ファイルを元にtexmacroを外す(micrizeってかw)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

こんな風にしたい(python基本でw)

#定義ファイルの解析
sty = styparse()
sty.dict # MMED(micro-macro equibalency dictionary)

#マクロを外すのでミクロw
code=r"""
honyarara \gehu{x}\frac{\int_0^{\infty}ydy}{\Omega}
"""
code=texmathcode(code)
code.micrize('xxx.sty') # マクロを外す(渡すのはopen_objでもいいよ)
code.macrize('xxx.sty') # マクロを当てる(渡すのはopen_objでもいいよ)

tex parse(メモ書き)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

(これまではメモ書きじゃなかったのか?w)

* microは単なる置換でいいかも(というかそれなら前作った(改めて見てみた。読めないほど複雑だし、汚いw))
* beautifullsoupみたいなことする?必要ある?
   * tex2rstやらparseTeX->microやらparseTeX->macroやら諸々の可能性
* 現行のwebに落ちてるtex2rstは数式読めない。replaceなんてとてもw

* converterは結構あるみたい。
   * plasTex(これparseしてるな)とかpacdoc, doconce等々
* tex階層構造(順序付き)
   * スタック形式の方がいい?
   * ->rst or xmlみたいに簡単な形式に変えてしまう?
      * document -> body -> eqnarray begin
      *                             <- eqnarray end
* plastex -> html2rst は汚い。(細かい設定を覚えて?)
   * plasetexを呼び出して、parseの部分はパクれるかな?

いまのとこ結論
^^^^^^^^^^^^^^^^^^^^^^^^^^

表現力の乏しいrstを主軸にするわけだから、
表現力のあるtexのノートからrstへの変換は雑でいい!
要は、macroで書いたローカルな文章を、一般レベルで読めるtex codeに置換すればいい。
結局ネックはmicrizeか。。。自分の書いたものを解読するか。

でもbeautifulsoupみたいなtex parserは需要がある気がする!

ああ、優柔不断。

0 件のコメント:

コメントを投稿