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は需要がある気がする!

ああ、優柔不断。

2012/10/10

texのtexmf設定でハマった

texのtexmf設定でハマった
===================================================

目標
--------------
~/texmf/以下にある、自作パッケージをtexに読ませたい。

spec
-------------
OS : MacOS10.8(Mountain Lion)
Machine : MacBookAir
MacTex2012

まずは間違った経路:
portでtexliveをinstallして、簡単に使える状況にしたけれど、自作の.styを読みに行かない。
ネットを探ってみると、texliveの方へリンクを貼れやら書いてある。ウンなことしてたまるか!(ローカルの設定にあわせて、デフォを触るのはあまりやりたくない。)
tlmgrをやれとか書いてある。ふむふむMacTexってのならそんなもんが付いているのか。

なので、ポートからinstallしたtexliveを消す。port uninstall texlive*した。(rsyncが多分ファイアーウォールを通れなくて、データベースが更新できなかったけど、あとで家でやろ。)

正解した経路:
MacTexを拾ってくる。(本家日本語
hpにあるひと通りの作業を終了して、単純にplatexかけてみる。~/texmf/を読んでない。そうか。っで、

1. ここにあるように、まずは~/texmf/ptex/の「p」を抜く。
mv ~/texmf/ptex/ ~/texmf/tex/
2. 次に、~/Libraryにtexmfへのリンクを貼る。
ln -s ~/texmf ~/Library/texmf
(デフォにあわせて、ローカルの設定を触るのは良いことだろう。)

これで完了。

解決のポイント
------------------------------
texliveのデフォ設定では、
1, ~/Library/texmfを読みに行く。
2, ~/texmf/tex/以下を読みに行く。


2012/10/04

macports初心者の感想2

さて、こちらの続きをば。。。

Sphinx
-------------------------
黙ってportしてみた。
sudo port install py-sphinx
しかし、quick-startが動かず(当然buildも)。
どうもpython versionが違うらしいということなので、
PythonとSphinxをuninstallする。

sphinxの最新version1.1.3のPython27用がある。
py27-sphinx @1.1.3 (python, textproc, devel)
    Python documentation generator
ので、こちらを確認しておく。(決してsphinx3とか4ではない。)

先に、python27と一応python_selectをinstallする。
port install pyton27 python_select (optionはご自由に)
っで、さっきのpy27-sphinxをinstallする。
port install py27-sphinx

(他のversionのPythonを併用する人はselectをしなきゃならないようだ。)

あと、このままだとsphinx-quickstart-2.7とかになっているので、リンクを貼れば良いようだ。(ココらへんを参考に
これでとりあえずは動く。あとは、前のノートやらが動くかどうか。

前のノートやらを動かす時に気をつける点は、
  • Makefileの各種パス設定変更。(私の場合はPNGMATH_latexのパスを入れていたので、ports用に張替え。)
  • conf.pyで使っている各種Pluginを切って、とりあえず動くかbuild確認。
  • Pluginをinstall。っで、またbuild確認。
という感じで復元完了。


tex
-----------------
黙ってtexliveを入れる。
sudo port install texlive
download, installはめちゃくちゃ長いが、気長に本でも読みながら待つべし。

(2012/10/08追記:~/texmfを読んでくれない。どうしてだろう?自作のtexmicroもバグ発見したしどうしよう。)

(2012/10/10追記:解決


日本語tex(yatex)
-----------------------------------
これは公式サイトからdownload, installする。

TexShop

-----------------------
これもportして、設定Preferenceのengineの設定をする。
その際、shell scriptをtex+dvips+distiller用に書く。(texwiki
完了。(あ、typesettingの変更もお忘れなく)


LaTeXiT
------------------------
これもportで一発。

続きはまた。

macports初心者の感想1

これまでmac userが物理で使うような設定は、osxwsで揃えていて(というか揃えていただいていて)、osxwsの開発者が近くにいたこともあって、多分普通のmac+phys.のユーザーが直面する、多くの困難を回避できていた。しかし、なかなか開発の人数が多くならないし、近くにいた開発者も遠くに行くようなので、そろそろmac+phys.の普通の独り立ちを考えざるを得なくなってきた。しかも、最近PC壊して、買い換えてMacOS10.8になった。。。

というわけで、評判や、開発者が多いMacportsを使ってみようと思い立ったのです。


まずは、簡単な必要な要件を書きだしてみる。

  1. g77
  2. gfortran
  3. ifort
  4. python
  5. numpy
  6. scipy
  7. Cython
  8. f2py
  9. Sphinx
  10. tex
  11. 日本語tex(yatex)
  12. TexShop
  13. LaTeXiT
  14. yatex+skim連携
  15. emacs
  16. window-mode
  17. 各種auto-complete(python, elisp, fortran, latex)
  18. 各種細かい設定(.emacs.d/init.el全般)
見ての通り、emacs設定で困ったw とりま、一つづつ。


g77, gfortran
----------------------------
high performance computingからdl、install。っで、パスを通す。といってもね。
インストールされたディレクトリ(たぶんMacなら/usr/local/bin)を確認。
.bashrcに
export PATH="/usr/local/bin:${PATH}"
と書く。
terminalを再起動するか、source .bashrcでおk。

かとおもいきや。(実はあとから分かったのだけど)MacOS10.8のbashが.bashrcを読んでないことが判明。
どうやら.bash_profileを読んでいるらしい。
ということで、助けを借りて、
if [ -f ~/.bashrc ]; then
     source ~/.bashrc
fi
として、 .bash_profileから.bashrcを読むようにする。

ifort
--------------------
商用なので後回し。composerでも10.8はいけるのだろうか?未だに確認してない。。。
(2013/04/18追記:新しいの買ってインスコしたので検証できず・・・)


python
------------------
OSX10.8標準装備のものはなぜか「信用ならん」という妄念があり、
sudo port install python
でインストール。一発。

numpy
-------------------
python2.7標準装備らしい(そこは信用するのか?w)。

scipy
-------------------
これもportで一発。

Cython
-------------------
これはまだ。

f2py
-------------------
portでインストールしたけど、テストはまだ。走るんかいな。
(2013/04/18追記:ガンガン走っている。selectしてないので-2.7が付いているw)

今日まとめるのはここまで。また今度まとめます。