--------------------------------
文系論文関連で作られているlatex2htmlがある。文系論文の公開には一定必要なのだろう。
しかし、私のノートやらメモ書きをもとに、複雑なhtmlを生成する必要があまり感じられない。(論文は公開できないし)
htmlなら今では、(横書きに限れば)最強のsphinxがあるからだ。
(以下、非常にrst偏重な文章ですので、お気を病みそうな方はタブを閉じてください。)
(以下、非常にrst偏重な文章ですので、お気を病みそうな方はタブを閉じてください。)
要件
^^^^^^^^^^^^^^^^^^^
* なるべく簡易な文書構造入力形式
簡単=素晴らしい
複雑=素晴らしくて当たり前
簡単=素晴らしい
複雑=素晴らしくて当たり前
* 数式必須
できれば画像はやめよwまじでww
できれば画像はやめよ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は需要がある気がする!
ああ、優柔不断。