忍者ブログ
Yaleで、遊んで学ぶ日々。

Yaleで、遊んで学ぶ日々。

囲碁、ときどきプログラミング、ところにより経済。
[84]  [83]  [82]  [81]  [80]  [79]  [78]  [77]  [76]  [75]  [72
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

一時期Lyxを使って文書作成をしていたけれど、結局tex打ちに舞い戻ってきた。Lyxは数式等をコードで記入する必要がなく何かワードっぽく作成できる。例えば分数の2分の1を表示したいときは、texなら \frac{1}{2} と書くところを、Lyxなら分数ボタンをクリックして1と2をそれぞれの位置に入力すればよい。便利っていう人の気持ちは分かるけど、結局そういうボタンの配置、またはメニューの位置などを色々記憶しなくてはいけないのが面倒くさいのと、やたらマウスを使う必要がある(さもないと大量のショートカットを記憶しないといけない)ので時間を食う。そういうわけで今はまたtexをコードで書いてコンパイルして出力するようにしている。ただ、校正ソフトを入れていないため誤字が多くなって、先生には不評である。修士論文の時には副査の先生に3ページで誤字の指摘を諦めたと言わしめた経験がある。


図を文書に挿入することはよくある。texに挿入するのに便利な画像形式はepsだと思う。一方、一般によく使われる画像の形式はjpg, bmp, png, gif などだから、eps形式に変換をする必要がある(jpgやbmpを直接張ることも出来た気はするけど、試したことはない)。僕はそういうときにはEPS-convというフリーソフトを利用している。超お勧め。

MatlabやR, Stataなどで描いたグラフの場合には、直接epsファイルに保存できる。
Matlabなら、
  print -depsc2 ファイル名
をいつも使っている。-depsc2の部分はオプションだから変更できるけど、こだわりがなければいつもこれで問題なし。
Rでは
  dev.copy2eps(file=ファイル名)
または
  postscript 関数を使っている。2つの違いは分からない。出力結果を見る限りどっちでもいいんだろうと思う。
Stataでのeps出力は今までに1回だけやったことがある。2年前に書いたStataのDo-scriptを掘り起こしてきた。
  graph export ファイル名, as(eps)
でいけるらしい。ちなみに
   graph export ファイル名, as(png)
とすればPNGファイルにも出来る(その結果できたのがこのwebsiteのStatisticsというページにある大量のグラフたちだ)。いずれの方法でも一番新しいグラフ(カレント・グラフ)が保存されるから、基本的には作図の直後に保存を行う。参考: 上坂吉則『MATLABプログラミング入門』牧野出版, 2000, 第5章; R-Tips47節; 筒井淳也ほか『Stataで計量経済学入門』ミネルヴァ書房, 2007, 第3章。

データ解析やシミュレーションの結果を表示する目的ではなく、数式を視覚的に説明する目的でグラフを見せることも多い。需要・供給曲線とか、無差別曲線とかがその例。こういう場合にはWinTpicを使っている人が多そう。ペイントっぽい感覚で図を描けて、それをtexに直接コピペできるコードに変換して吐き出してくれる。文字や数式を図中に書くこともできる。これをスクリプトでやろうというのがMetapost(参考)。描きたい画像の情報をスクリプトで描いて、それを読み込んでPS形式で出力するソフトということらしい。Texの標準インストールをしたら普通についてきた。文字も書けるが、このソフト自体にはフォントの埋め込みができないので、texを併用しなくてはいけないらしい。やり方は、まずmetapostのコードを書いて、コマンドプロンプトとかターミナルとかで
  mpost ファイル名
としてpsファイルを発生させる。でもこのpsファイルはtex専用らしく、普通の閲覧ソフト(gsviewとかXnview)では開けない。
次に
   \documentclass{article}
   \usepackage[dvips]{graphicx}
   \pagestyle{empty}
   \begin{document}
   \includegraphics{psファイル名}
   \end{document}
というtexコードを書いて、latexにかける。つまりコマンドプロンプトで
  latex  texコード名
さらに、ここからepsを作るためには
  dvipsk -Ppdf -E texファイル名 -o eps出力先ファイル名
というコマンドをすればいいらしい。
どうも、一旦tex専用のpsファイルにして、それをlatexfやらdvioskやらにかけることで文字の埋め込まれたepsファイルに書き出している、ということらしい。参考:奥村晴彦『Latex2e美文書作成入門』技術評論社, 2002, 付録F.  日本語がどうしても文字化けするけど、とりあえず英語だけでいいと思う。
注:ここに書いたことはTeX環境をインストールし直したら全く上手くいかなくなった→解決編

この一連の作業([1]metapostコードを書く [2] mpostにかける [3] texコードを書く [4] latexにかける [5] dvipskにかける)がいちいち面倒くさかったので(実際のところ、mpostコードを修正するたびにいちいち回し直さないと画像の変化が分からない)、生まれて初めてバッチファイルを書いた。ファイルはここ。バッチファイルというのは、要するにコマンドプロンプト上で出す命令をまとめて書いておいたものだ(たぶん)。ファイルの検索とか、移動や削除、テキストファイルの作成など、色々できるからちょっとしたソフトウェアみたいに動く。今回書いたバッチファイルには、mp2eps.batという名前をつけた。第1引数にmetapostファイルを第2引数にそのmetapostファイルで作成する画像ファイルの数を取り、一連のコンパイル作業を行ってepsファイルをmetapostファイルと同じディレクトリに出力する。初めてなので勝手がよく分からず手間取ったけど、とりあえずそこそこ機能するようだ。ちなみに、Windows以外だと動かないに決まっている(Windowsのコマンドプロンプト用に書いてあるので)。

問題点が1つあって、時々余計なepsファイルを出力するような仕様になっている。このバッチファイルでは、mpostの出力するpsファイルの名前は、もとのmpostファイル名が xyz.mp だとすると、 xyz.ps となるか、 xyz.1, xyz.2,....という連番拡張子になることを利用して、そういう名前のついたファイルをディレクトリ内で検索して片っ端からeps化するようにしている(連番の場合は、第2引数で指定された番号まで)。だから、そのmpostファイルで出力されたか否かによらず、eps化はされることになる。例えば、以前何かの理由でxyz.psというファイルを作っておいて、今回のmpostファイルではxyz.1とxyz.2の2ファイルを出力したとしても、3つのepsが全て上書きされる仕様なっている。mpostの後に作成されるlogファイルを読み込んで、今回出力されたファイルのみを対象にすることも可能ではあると思うけど、バッチファイルの文法がよく分からないので止めた。少なくとも、作りたい画像ファイルはちゃんと出力されるし、間違って上書きしてしまう可能性もほとんどないだろうから、個人用としてはこれで満足。

これを使うと煩わしいコンパイルが少し楽になる、かも。完全に善意で作られたコードだけど、batファイルは悪用しようと思えば結構なんだって出来てしまうので(ファイル消すとか色んなソフトウェアを開きまくるとか)、使う場合は自己責任で。短いコードなのでちょっと読めば何やっているかは一目瞭然だと思うけど。

使い方:
mp2eps.bat をパスの通ったディレクトリに保存。
コマンドプロンプト上で、
  mp2eps [metapostファイル名] [ファイルで定義された絵の数(デフォルトは10)]
でOK.  拡張子はつけちゃ駄目。
当然、mpost, latex, dvipskとか一式がちゃんと揃っていることが大前提。奥村晴彦の本でインストールした場合はついてきているはず。


これでmetapostファイルが書ければeps化はすぐなので、今度はmetapostファイルを手軽に書ける方法が欲しい。その方法については、色々考えている。


**パスが何か分からないという場合は、C:\batというフォルダを作って、そこにmp2eps.batを保存。そしてマイコンピュータを右クリック→「詳細設定」→「環境変数」と進んで、「システム環境変数」の中のPathを選択して「編集」をクリック。変数値の末尾に  ;C:\bat を付け加える。以上、うちのlaptopの場合。他の場合はパスの通し方を検索すれば分かる。要するに、mp2epsというソフトをコマンドプロンプト上で使いたいのだけど、パソコンは一定の範囲(パスの通ったディレクトリ)でしかそのソフトを探さない。だから、コマンドプロンプトで使いたいファイルはパスの通ったディレクトリに保存しておく必要がある。そのため、まず適当なフォルダを作って保存して、システム環境変数を変更してその保存フォルダにパスを通した。ちなみに、Administratorの環境変数とシステム環境変数の違いが分からない。複数ユーザーがいなければ同じと思っていいのかな。


【追記1】
ちょっと方向性は違うけど、こんなもんがあるそうな。
MePoTeX

【追記2】
日本語対応用のバッチを書いてみた。でも文字化けする。理由は分からない。調べる気力もない。
jmp2eps.bat


【追記3】
Ubuntuで同じことをする方法を調べてみたところ、Windowsでいうバッチファイルに該当するのがシェルスクリプトというのだそうな。文法は違うけど似てる。スクリプトを書いてもいいけど、もっとお手軽な方法が開発されていると思うので保留。

PR
この記事にコメントする
お名前:
タイトル:
文字色:
メールアドレス:
URL:
コメント:
パスワード:   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
この記事へのトラックバック
この記事にトラックバックする:
Calender
10 2018/11 12
S M T W T F S
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30
Search in This Blog
Latest Comments
[03/30 川内のばば山田]
[03/30 川内のばば山田]
[08/06 Aterarie]
[07/05 Agazoger]
[07/01 Thomaskina]
Oldest Posts
Latest Trackbacks
フリーエリア

Barcode
Access Analysis
Powerd by NINJAブログ / Designed by SUSH
Copyright © Yaleで、遊んで学ぶ日々。 All Rights Reserved.
忍者ブログ [PR]