TeXで\maketitleとすると、日付が入ってしまう。
\dateコマンドを書かなくても、デフォルトで作成日時が入るようになっている。
しかし書式等が決まっていて、日付を入れたくないときがある。
こういうときは、
\date{}
と書けばいい。
これだけで日付を消すことが出来る。
2008/12/21
2008/12/07
TeXにpng画像を貼り付ける
TeXに画像を貼り付ける場合、普段はeps形式にしてから貼り付けるということをしていた。
これだと元画像から容量が急に大きくなったりする。
epsもirfanviewとかではデフォルトでは見れないし、使いづらい。
ちなみにGimp2.4.6でも、変換してepsを出力することは出来るものの、見ることが出来ない。
pngを直接貼るには、まずもとのTeXファイルでdvipdfmのパッケージを使う必要がある。
本文の上に、以下の行を追加する。
\usepackage[dvipdfm]{graphicx, color}
次にebbというコマンドで、画像サイズを指定するbbファイルを作ればいい。
これによって、hoge.bbというファイルが出来るが、Bounding Boxを指定するファイルで、わずか1KBである。
中には画像タイトル、作成に使ったソフト、画像サイズ、作成日時が1行ずつで入っている。
ファイルの数は減らないが、bbファイルは1KBでしかないので、容量としてはずいぶん稼ぐことになる。
このやり方で、jpgファイルもPDFも貼ることが出来る。
これだと元画像から容量が急に大きくなったりする。
epsもirfanviewとかではデフォルトでは見れないし、使いづらい。
ちなみにGimp2.4.6でも、変換してepsを出力することは出来るものの、見ることが出来ない。
pngを直接貼るには、まずもとのTeXファイルでdvipdfmのパッケージを使う必要がある。
本文の上に、以下の行を追加する。
\usepackage[dvipdfm]{graphicx, color}
次にebbというコマンドで、画像サイズを指定するbbファイルを作ればいい。
これによって、hoge.bbというファイルが出来るが、Bounding Boxを指定するファイルで、わずか1KBである。
中には画像タイトル、作成に使ったソフト、画像サイズ、作成日時が1行ずつで入っている。
ファイルの数は減らないが、bbファイルは1KBでしかないので、容量としてはずいぶん稼ぐことになる。
このやり方で、jpgファイルもPDFも貼ることが出来る。
2008/12/05
グラフや関数の座標軸にタイトルをつける
ROOTで座標軸にタイトルをつけたい場合、ヒストグラムだと非常に簡単だ。
SetXTitle、SetYTitleがあるので、簡単に指定できる。
しかしこの関数は、TGraphとかTF1といった、グラフや関数を描画する際には使えない。
TGraphやTF1にはSetXTitleやSetYTitleが用意されていないためだ。
グラフや関数の軸にタイトルをつけたいときは、GetXaxisとGetYaxis、SetTitleを組み合わせて使う。
SetTitleは左上に出る、グラフや関数そのもののタイトルを与えるが、軸にタイトルをつけるのにも使用できる。
一度描画してからGetXaxisやGetYaxisで、軸を取ってくればいい。
TGraph* g1 = new TGraph(n, x, y);
g1->Draw();
g1->GetXaxis()->SetTitle("X-Title");
g1->GetYaxis()->SetTitle("Y-Title");
タイトルを中心に持ってきたり、タイトルのオフセットを変えたりする場合も、いちいち軸を取ってくる必要がある。
SetXTitle、SetYTitleがあるので、簡単に指定できる。
しかしこの関数は、TGraphとかTF1といった、グラフや関数を描画する際には使えない。
TGraphやTF1にはSetXTitleやSetYTitleが用意されていないためだ。
グラフや関数の軸にタイトルをつけたいときは、GetXaxisとGetYaxis、SetTitleを組み合わせて使う。
SetTitleは左上に出る、グラフや関数そのもののタイトルを与えるが、軸にタイトルをつけるのにも使用できる。
一度描画してからGetXaxisやGetYaxisで、軸を取ってくればいい。
TGraph* g1 = new TGraph(n, x, y);
g1->Draw();
g1->GetXaxis()->SetTitle("X-Title");
g1->GetYaxis()->SetTitle("Y-Title");
タイトルを中心に持ってきたり、タイトルのオフセットを変えたりする場合も、いちいち軸を取ってくる必要がある。
2008/11/30
ROOTあれこれ
グラフやヒストグラムを何かの関数でフィットするとき、パラメータを固定したいことがある。
そのときにはFixParameterを用いる。
TF1* f1 = new TF1("f1", "[0]*sin(x)+[1]*cos(x)", -0.1, 0.1);
としたとして、[1]のパラメータを0にしたいときは、
f1->FixParameter(1, 0)
とする。
それと上限値をつけるときグラフに矢印を描いたり、エラーバーが上下左右対称でない場合など、エラーバーをいじりたいときは、TGraphAsymmErrorsを用いる。
ただしこれを使ったグラフは、うまくフィットが出来ない。
フィット作業は行うが、変な結果を返してくる。
なおTGraphErrorsはきちんとフィットできる。
そのときにはFixParameterを用いる。
TF1* f1 = new TF1("f1", "[0]*sin(x)+[1]*cos(x)", -0.1, 0.1);
としたとして、[1]のパラメータを0にしたいときは、
f1->FixParameter(1, 0)
とする。
それと上限値をつけるときグラフに矢印を描いたり、エラーバーが上下左右対称でない場合など、エラーバーをいじりたいときは、TGraphAsymmErrorsを用いる。
ただしこれを使ったグラフは、うまくフィットが出来ない。
フィット作業は行うが、変な結果を返してくる。
なおTGraphErrorsはきちんとフィットできる。
2008/11/17
2008/11/04
2008/11/01
サクラエディタでPython mode
Windowsで使うエディタはしばらく前から、サクラエディタだ。
このサクラエディタはプログラムのコードを書くとき、拡張子に対応して、強調キーワードに色付けしてくれる。
ところがCとかTeXとかは自動的にやってくれるのだが、Pythonのコードの場合、自動的に強調ワードに色付けしてくれない。
色付けしてくれるようにするには、以下のようにすればいい。
1.メニューバーの"設定">"共通設定"と選び、"強調キーワード"タブをクリックする。
2."セット追加ボタン"をクリックし、セット名をPythonとする。
3."インポート"から、python_2.5_kwdを選んで、OKを押す。
4.メニューバーの"設定">"タイプ別設定一覧"を選択し、設定されていない設定(設定17等)を選択して"設定変更"をクリックする。
5.設定の名前をPythonとし、ファイル拡張子にpyと入れる。
6."カラー"タブをクリックし、強調キーワード1にPythonのセットを選択する。
7.コメントスタイルはブロック型(F)"""~(T)"""、ブロック型(A)#~(Z)として、OKを押す。
これでPythonのコードに色づけしてくれるようになる。
さらにつける色を替えたり、色付けしてほしい単語を追加することも出来る。
このサクラエディタはプログラムのコードを書くとき、拡張子に対応して、強調キーワードに色付けしてくれる。
ところがCとかTeXとかは自動的にやってくれるのだが、Pythonのコードの場合、自動的に強調ワードに色付けしてくれない。
色付けしてくれるようにするには、以下のようにすればいい。
1.メニューバーの"設定">"共通設定"と選び、"強調キーワード"タブをクリックする。
2."セット追加ボタン"をクリックし、セット名をPythonとする。
3."インポート"から、python_2.5_kwdを選んで、OKを押す。
4.メニューバーの"設定">"タイプ別設定一覧"を選択し、設定されていない設定(設定17等)を選択して"設定変更"をクリックする。
5.設定の名前をPythonとし、ファイル拡張子にpyと入れる。
6."カラー"タブをクリックし、強調キーワード1にPythonのセットを選択する。
7.コメントスタイルはブロック型(F)"""~(T)"""、ブロック型(A)#~(Z)として、OKを押す。
これでPythonのコードに色づけしてくれるようになる。
さらにつける色を替えたり、色付けしてほしい単語を追加することも出来る。
2008/10/26
unix timeと時間の変換
unix timeを普通の時間表記に直したいときがある。
すばやく計算したいときは、ターミナルで以下のように打てばいい。
$ ruby -e 'p Time.at(1224928800)'
これはRubyのコマンドを、-eオプションで1行だけ実行させている。
逆に普通の時間をunix timeにしたりしたいときは、dateコマンドを使う。
$ date -d '2008/10/25 00:00:00' +'%s'
+'%s'の部分でunix timeの出力を指定している。
ちなみにdateはbashのコマンドだが、上のようにunix timeを普通の時間に戻すことは出来ない。
またPythonでもRubyと同じようにできないか調べたが、どうもヘルプを読んだ限りでは出来ないようだ。
1行だけのコマンドを実行するオプションがなかった。
すばやく計算したいときは、ターミナルで以下のように打てばいい。
$ ruby -e 'p Time.at(1224928800)'
これはRubyのコマンドを、-eオプションで1行だけ実行させている。
逆に普通の時間をunix timeにしたりしたいときは、dateコマンドを使う。
$ date -d '2008/10/25 00:00:00' +'%s'
+'%s'の部分でunix timeの出力を指定している。
ちなみにdateはbashのコマンドだが、上のようにunix timeを普通の時間に戻すことは出来ない。
またPythonでもRubyと同じようにできないか調べたが、どうもヘルプを読んだ限りでは出来ないようだ。
1行だけのコマンドを実行するオプションがなかった。
2008/10/21
Xのシングルウィンドウモードその2
検索していたら、こんなページを見つけた。
実はこれまでにWindow Managerを起動すればいいことは分かっていたのだが、.xinitrcを作って、
wmaker &
と書き込んでも、Window Managerはすでに起動しているというエラーが出て、Xが立ち上がらなかった。
なので原因は別だと思っていた。
だけど実際にはWindow Managerは立ち上がっていないようだ。
よって改めてWindow Managerを立ち上げればいい。
それには立ち上がったxtermで以下のように打てばいい。
$ twm &
ただしこれはKDEに似ていて、自分はあまり好きじゃない。
もう1つの方法は、xtermで
$ wmaker &
とする。
UIが違うだけだが、自分はこちらのほうが好みだ。
Xlib: extension "MIT-SHM" missing on display "(hostname):0.0".
というエラーが出るが、特に気にする必要はなさそうだ。
実はこれまでにWindow Managerを起動すればいいことは分かっていたのだが、.xinitrcを作って、
wmaker &
と書き込んでも、Window Managerはすでに起動しているというエラーが出て、Xが立ち上がらなかった。
なので原因は別だと思っていた。
だけど実際にはWindow Managerは立ち上がっていないようだ。
よって改めてWindow Managerを立ち上げればいい。
それには立ち上がったxtermで以下のように打てばいい。
$ twm &
ただしこれはKDEに似ていて、自分はあまり好きじゃない。
もう1つの方法は、xtermで
$ wmaker &
とする。
UIが違うだけだが、自分はこちらのほうが好みだ。
Xlib: extension "MIT-SHM" missing on display "(hostname):0.0".
というエラーが出るが、特に気にする必要はなさそうだ。
2008/10/18
Cygwinのシングルウィンドウモード
CygwinではローカルでXを起動するコマンドとして、startxとstartxwin.sh、xinitの3つがある。
startxとstartxwin.shはシェルで、/usr/X11R6/bin以下にある。
xinitはxinit.exeという実行ファイルで、場所はstartxとかと同じ。
ちなみに自分が現在使っているCygwinのバージョンは1.5.25。
このうちstartxとstartxwin.shはマルチウィンドウモードで立ち上がり、xinitはシングルウィンドウモードで立ち上がる。
シングルウィンドウモードのほうが自分は好きなのだが、xinitだとウィンドウ内のウィンドウを移動できなかったりして、これはこれで非常に使いづらい。
そこでstartxからうまくシングルウィンドウモードを立ち上げられないかを調べた。
startxがマルチウィンドウモードで立ち上がるのは、30行目に
defaultserverargs="-multiwindow -clipboard"
というのがあるため。
この-multiwindowを取ってしまえば、シングルウィンドウモードで起動できる。
が、このままだとxinitとまったく同じ状態。
まだまだ使いづらいのだが、解決策は今のところ分からず。
結局xinitの設定の問題かもしれない。
startxはxinitrcとxserverrcを読み込んでいるので、ここを変えればいいのかも。
startxとstartxwin.shはシェルで、/usr/X11R6/bin以下にある。
xinitはxinit.exeという実行ファイルで、場所はstartxとかと同じ。
ちなみに自分が現在使っているCygwinのバージョンは1.5.25。
このうちstartxとstartxwin.shはマルチウィンドウモードで立ち上がり、xinitはシングルウィンドウモードで立ち上がる。
シングルウィンドウモードのほうが自分は好きなのだが、xinitだとウィンドウ内のウィンドウを移動できなかったりして、これはこれで非常に使いづらい。
そこでstartxからうまくシングルウィンドウモードを立ち上げられないかを調べた。
startxがマルチウィンドウモードで立ち上がるのは、30行目に
defaultserverargs="-multiwindow -clipboard"
というのがあるため。
この-multiwindowを取ってしまえば、シングルウィンドウモードで起動できる。
が、このままだとxinitとまったく同じ状態。
まだまだ使いづらいのだが、解決策は今のところ分からず。
結局xinitの設定の問題かもしれない。
startxはxinitrcとxserverrcを読み込んでいるので、ここを変えればいいのかも。
2008/10/10
2008/10/07
cfitsioのサンプルプログラムをコンパイルする
cfitsioのサンプルプログラムが、ここにある。
注釈の数字をどけてから、コンパイルしようとして失敗した。
:undefined reference to `ffopentest'
とかいう風に、いくつかの関数が定義されていないというエラーが出る。
これは-lmをつけないで、sinとかがあるプログラムをコンパイルしようとしたときと同じエラー。
これを解決するには、-lcfitsioをつければいい。
$ gcc hoge.c -lm -lcfitsio -o hoge
とかでいい。
-lはリンクするライブラリを指定している。
mathとcfitsioにリンクします、という意味だ。
注釈の数字をどけてから、コンパイルしようとして失敗した。
:undefined reference to `ffopentest'
とかいう風に、いくつかの関数が定義されていないというエラーが出る。
これは-lmをつけないで、sinとかがあるプログラムをコンパイルしようとしたときと同じエラー。
これを解決するには、-lcfitsioをつければいい。
$ gcc hoge.c -lm -lcfitsio -o hoge
とかでいい。
-lはリンクするライブラリを指定している。
mathとcfitsioにリンクします、という意味だ。
Cygwinにcfitsioをインストールする
ここからWindows用のcfitsioを落としてくる。
落としてきたファイルを適当に解凍して、Cygwinのgccでコンパイルするだけ。
そこで
$ ./configure
とやるとエラーを吐いた。
エラーの1行目は、
./configure: line 11: $'\r': command not found
という感じ。
エディタでconfigureを見てみると、10行目まではコメントアウトされているので、いきなりこけていることが分かる。
そこで11行目を見てやると、11行目はただの改行。
おそらく改行コードだろうと思って、LF改行に変更してやるとうまくいった。
ちなみにデフォルトでは、configureがあるディレクトリ以下にlibとincludeが作られてしまう。
prefixを使った指定はうまくいかなかったので、一連のファイルを/usr
/local以下に持って行く。
$ ./configure
$ make
$ make install
これでOK。
余分なファイルは、/usr/local/srcを作って、そこに突っ込んでおいた。
落としてきたファイルを適当に解凍して、Cygwinのgccでコンパイルするだけ。
そこで
$ ./configure
とやるとエラーを吐いた。
エラーの1行目は、
./configure: line 11: $'\r': command not found
という感じ。
エディタでconfigureを見てみると、10行目まではコメントアウトされているので、いきなりこけていることが分かる。
そこで11行目を見てやると、11行目はただの改行。
おそらく改行コードだろうと思って、LF改行に変更してやるとうまくいった。
ちなみにデフォルトでは、configureがあるディレクトリ以下にlibとincludeが作られてしまう。
prefixを使った指定はうまくいかなかったので、一連のファイルを/usr
/local以下に持って行く。
$ ./configure
$ make
$ make install
これでOK。
余分なファイルは、/usr/local/srcを作って、そこに突っ込んでおいた。
2008/10/03
Amazonクレジットカード終了
Amazonクレジットカードが今年の12/15をもって終了してしまうようだ。
自分のメインのカードとして使っていたのでショック。
Amazon内の買い物なら2%、その他の買い物でも1%のバックがあり、これは一定額たまると、ギフトカードとしてメールで送られて来ていた。
今まで何回かギフトカードを活用した。
年会費も無料だったし、入会特典の2000円バックもあった。
匹敵するカードとなると、P-oneカードくらいか。
12/15までにシティクラシックカードが送られてくるようだが、こっちは年3150円。
海外旅行保険がつくが、シティポイントは使い勝手が悪そうだ。
あと2ヶ月で代替のカードを探すしかないか。
自分のメインのカードとして使っていたのでショック。
Amazon内の買い物なら2%、その他の買い物でも1%のバックがあり、これは一定額たまると、ギフトカードとしてメールで送られて来ていた。
今まで何回かギフトカードを活用した。
年会費も無料だったし、入会特典の2000円バックもあった。
匹敵するカードとなると、P-oneカードくらいか。
12/15までにシティクラシックカードが送られてくるようだが、こっちは年3150円。
海外旅行保険がつくが、シティポイントは使い勝手が悪そうだ。
あと2ヶ月で代替のカードを探すしかないか。
2008/10/01
ROOTでのフィット結果の見方
ROOTでフィットしたとき、そのカイ2乗の値や自由度を求めたいとする。
たとえば、g1というグラフを用意し、g1をf1という関数でフィットしたとする。
このときカイ2乗と自由度を求めるには、次のようにすればいい。
double chi = f1->GetChisquare();
double ndf = f1->GetNDF();
これでchiにカイ2乗が、ndfに自由度が入る。
カイ2乗に関しては、マニュアルのFitting HistogramsのAccess to the Fit Parameters and Resultsに載っているのだが、自由度についてはマニュアルには記載がない。
たとえば、g1というグラフを用意し、g1をf1という関数でフィットしたとする。
このときカイ2乗と自由度を求めるには、次のようにすればいい。
double chi = f1->GetChisquare();
double ndf = f1->GetNDF();
これでchiにカイ2乗が、ndfに自由度が入る。
カイ2乗に関しては、マニュアルのFitting HistogramsのAccess to the Fit Parameters and Resultsに載っているのだが、自由度についてはマニュアルには記載がない。
2008/09/27
Linuxサーバへのインストールあれこれ
Linuxサーバにソフトをインストールした。
ここでサーバと書いたのは、root権限を持たないPCという意味だ。
root権限が無いので、/usr/localとかは触ることが出来ない。
ROOTのインストールはバイナリを持ってきただけなので、ソースを落としてきてコンパイルしたわけでは無い。
今回インストールしたのは、cfitsioとCCfits、gqviewの3つ。
まずcfitsioのtarをここから落としてくる。
解凍してできたディレクトリに移動し、configureを実行する。
$ tar xzvf cfitsio3100.tar.gz
$ cd cfitsio
$./configure --prefix =/home/chonan/
これで自分のホームディレクトリ以下にインストールするためのMakefileが出来る。
後はmakeしてやればいい。
$ make
$ make install
こうすると、/home/chonan以下の/libにlibcfitsio.aが、/includeにdrvrsmem.h, fitsio.h, fitsio2.h, longnam.hが出来る。
次にCCfitsをここから落としてきて解凍し、そこに移動する。
$ tar xzvf CCfits-2.0.tar.gz
$ cd CCfits
$./configure --prefix =/home/chonan/ --with-cfitsio=/home/chonan/cfitsio
README.INSTALLに従って、cfitsioの場所を指定している。
しかしこのようにすると、
configure: error: C++ compiler cannot create executables
というエラーを吐いて止まってしまう。
config.logというのを見ると、CCという変数が指定されていないために、C++のコンパイラが無いというエラーが表示されている。
そこでconfigureの中に
CC=gcc
の1行を追加してやったら、今度はMakefileが出来た。
実はREADME.INSTALLの上の方に、CCを指定するようにという記述があったのだが、こいつを無視していた。
$ gmake
$ gmake DESTDIR=/home/chonan/CCfits install
ここでもインストールする場所を/home/chonan/CCfitsに指定している。
デフォルトでは/usr/localにインストールするようになっている。
それで良ければ、DESTDIR=の部分は要らない。
gqviewも上に同じ。
ここから落としてくる。
$ tar xzvf gqview-2.0.4.tar.gz
$ cd gqview-2.0.4
$./configure --prefix =/home/chonan/
$ make
$ make check
$ make install
$ make clean
これで/home/chonan/bin以下に、gqviewの実行ファイルが出来る。
ここでサーバと書いたのは、root権限を持たないPCという意味だ。
root権限が無いので、/usr/localとかは触ることが出来ない。
ROOTのインストールはバイナリを持ってきただけなので、ソースを落としてきてコンパイルしたわけでは無い。
今回インストールしたのは、cfitsioとCCfits、gqviewの3つ。
まずcfitsioのtarをここから落としてくる。
解凍してできたディレクトリに移動し、configureを実行する。
$ tar xzvf cfitsio3100.tar.gz
$ cd cfitsio
$./configure --prefix =/home/chonan/
これで自分のホームディレクトリ以下にインストールするためのMakefileが出来る。
後はmakeしてやればいい。
$ make
$ make install
こうすると、/home/chonan以下の/libにlibcfitsio.aが、/includeにdrvrsmem.h, fitsio.h, fitsio2.h, longnam.hが出来る。
次にCCfitsをここから落としてきて解凍し、そこに移動する。
$ tar xzvf CCfits-2.0.tar.gz
$ cd CCfits
$./configure --prefix =/home/chonan/ --with-cfitsio=/home/chonan/cfitsio
README.INSTALLに従って、cfitsioの場所を指定している。
しかしこのようにすると、
configure: error: C++ compiler cannot create executables
というエラーを吐いて止まってしまう。
config.logというのを見ると、CCという変数が指定されていないために、C++のコンパイラが無いというエラーが表示されている。
そこでconfigureの中に
CC=gcc
の1行を追加してやったら、今度はMakefileが出来た。
実はREADME.INSTALLの上の方に、CCを指定するようにという記述があったのだが、こいつを無視していた。
$ gmake
$ gmake DESTDIR=/home/chonan/CCfits install
ここでもインストールする場所を/home/chonan/CCfitsに指定している。
デフォルトでは/usr/localにインストールするようになっている。
それで良ければ、DESTDIR=の部分は要らない。
gqviewも上に同じ。
ここから落としてくる。
$ tar xzvf gqview-2.0.4.tar.gz
$ cd gqview-2.0.4
$./configure --prefix =/home/chonan/
$ make
$ make check
$ make install
$ make clean
これで/home/chonan/bin以下に、gqviewの実行ファイルが出来る。
PDF reDirect
PDFを作ったり、編集したりするソフトといえば、Adobe Acrobatだが、Standardでさえ30000円以上する。
Adobe Acrobat 7の頃、Elementというのが出来て、PDF化とちょっとした編集が出来て10000円以下、というのがあったが、それ以降消滅してしまった。
ちなみにTeXはdvipdfmxでPDF化出来るし、Open OfficeとかStar suiteとかは直接PDFにエクスポートできるが、編集できない。
自分が求める機能は、PDF作成、結合+分割、ページの回転。
作ったファイルに広告が入ったりするものや、日本語フォントで文字化けしたりするのは論外。
純正品はお高いので、フリーでPDF化するツールを探すと、これが結構いっぱいある。
しかしたったこれだけの条件に、適合するソフトは、自分の調べた範囲では1つもなかった。
圧倒的に多いのが、プリンタとして動いて、PDFを作成するだけのソフト。
あるいは結合するだけ、分割するだけ、回転するだけのソフトがそれぞれある。
広告が入ってしまうのも結構ある。
色々と調べた挙句、自分にはPDF reDirectがベストだという結論に達した。
PDF reDirectは作成と結合が出来るソフトで、広告無しの日本語OK。
メニュー等の日本語化は出来ないようだ。
PDF reDirectはここから落としてくる。
インストールは言語を選択可能だが、日本語はないので英語。
実行すると、途中でWindowsでは認証されていないプリンタドライバを入れる許可を求めてくる。
これを許可しないで、もたもたと注意書きを読んでいたら、インストールに失敗した。
気を取り直し、再実行して、ドライバにもOKを押すと、インストール完了。
作成は印刷でプリンタにPDF reDirect v2を選べばよいだけ。
もっさりとだが、勝手にPDF reDirectのUIが立ち上がる。
画質、カラー、ページの回転、保存場所、ファイル名を指定できる。
日本語や全角数字もファイル名にしてOKで、暗号化も出来る。
保存場所はFoldersの中の好きなフォルダを選べばよい。
結合はPDF reDirectを立ち上げる必要がある。
プログラムから立ち上げ、Foldersで結合したいファイルの場所に行くと、Filesというところに勝手にPDFが読み込まれる。
これをドラッグ&ドロップでMerge Listに入れて、上と同様に画質やら何やらを指定し、Saveを押す。
これだけのことがフリーで出来るのは、自分が知る限りPDF reDirectだけだ。
デフォルトでFoldersが毎回デスクトップに戻ることと、結合するファイル名がもとのファイル名になっていること、いちいちプレビューを読み込もうとすることの3点が気になるが、おおむね満足。
Adobe Acrobat 7の頃、Elementというのが出来て、PDF化とちょっとした編集が出来て10000円以下、というのがあったが、それ以降消滅してしまった。
ちなみにTeXはdvipdfmxでPDF化出来るし、Open OfficeとかStar suiteとかは直接PDFにエクスポートできるが、編集できない。
自分が求める機能は、PDF作成、結合+分割、ページの回転。
作ったファイルに広告が入ったりするものや、日本語フォントで文字化けしたりするのは論外。
純正品はお高いので、フリーでPDF化するツールを探すと、これが結構いっぱいある。
しかしたったこれだけの条件に、適合するソフトは、自分の調べた範囲では1つもなかった。
圧倒的に多いのが、プリンタとして動いて、PDFを作成するだけのソフト。
あるいは結合するだけ、分割するだけ、回転するだけのソフトがそれぞれある。
広告が入ってしまうのも結構ある。
色々と調べた挙句、自分にはPDF reDirectがベストだという結論に達した。
PDF reDirectは作成と結合が出来るソフトで、広告無しの日本語OK。
メニュー等の日本語化は出来ないようだ。
PDF reDirectはここから落としてくる。
インストールは言語を選択可能だが、日本語はないので英語。
実行すると、途中でWindowsでは認証されていないプリンタドライバを入れる許可を求めてくる。
これを許可しないで、もたもたと注意書きを読んでいたら、インストールに失敗した。
気を取り直し、再実行して、ドライバにもOKを押すと、インストール完了。
作成は印刷でプリンタにPDF reDirect v2を選べばよいだけ。
もっさりとだが、勝手にPDF reDirectのUIが立ち上がる。
画質、カラー、ページの回転、保存場所、ファイル名を指定できる。
日本語や全角数字もファイル名にしてOKで、暗号化も出来る。
保存場所はFoldersの中の好きなフォルダを選べばよい。
結合はPDF reDirectを立ち上げる必要がある。
プログラムから立ち上げ、Foldersで結合したいファイルの場所に行くと、Filesというところに勝手にPDFが読み込まれる。
これをドラッグ&ドロップでMerge Listに入れて、上と同様に画質やら何やらを指定し、Saveを押す。
これだけのことがフリーで出来るのは、自分が知る限りPDF reDirectだけだ。
デフォルトでFoldersが毎回デスクトップに戻ることと、結合するファイル名がもとのファイル名になっていること、いちいちプレビューを読み込もうとすることの3点が気になるが、おおむね満足。
2008/09/20
ROOTでのフィット
ROOTでは任意の関数で、任意のグラフやヒストグラムをフィットできる。
例として2次元ガウス関数で、読み込んだファイルをフィットしたいとすると、次のようになる。
double par[6];
f1 = new TF2("f1", "[0]+[1]*exp(-(x-[2])*(x-[2])/2/([4]*[4])-(y-[3])*(y-[3])/2/([5]*[5]))", 100., 200., 100., 200.);
f1->SetParameters(100., 500., 150., 150., 30., 30.);
g1 = new TGraph2D("hoge.dat");
g1->Fit("f1");
f1->GetParameters(par);
parはフィットした結果を格納するための配列。
まず、f1で2次元ガウス関数を用意している。
このときフィットで求める値は[n]の形で書く。
上の例だと、[0]がオフセット、[1]はピーク高さ、[2]と[3]が中心のxy座標、[4]と[5]がxyのσになっている。
その後の数字は、式を定義する範囲であり、何も書かないと、デフォルトでは0から1になる。
SetParametersでは初期値を決め、g1はhoge.datという、(x y 値)という形式のファイルを読み込んだグラフである。
最後のGetParametersでフィットの結果をparに格納している。
例として2次元ガウス関数で、読み込んだファイルをフィットしたいとすると、次のようになる。
double par[6];
f1 = new TF2("f1", "[0]+[1]*exp(-(x-[2])*(x-[2])/2/([4]*[4])-(y-[3])*(y-[3])/2/([5]*[5]))", 100., 200., 100., 200.);
f1->SetParameters(100., 500., 150., 150., 30., 30.);
g1 = new TGraph2D("hoge.dat");
g1->Fit("f1");
f1->GetParameters(par);
parはフィットした結果を格納するための配列。
まず、f1で2次元ガウス関数を用意している。
このときフィットで求める値は[n]の形で書く。
上の例だと、[0]がオフセット、[1]はピーク高さ、[2]と[3]が中心のxy座標、[4]と[5]がxyのσになっている。
その後の数字は、式を定義する範囲であり、何も書かないと、デフォルトでは0から1になる。
SetParametersでは初期値を決め、g1はhoge.datという、(x y 値)という形式のファイルを読み込んだグラフである。
最後のGetParametersでフィットの結果をparに格納している。
ROOTの軸あれこれ
ROOTでグラフを書くとき、軸を追加したり改変したりしたいときがある。
たとえばy軸は普段、上が大きく下が小さいが、これを逆にしたかったりする。
こういうときはTGaxisを使う。
たとえばy軸の上下を反転させる場合だと、次のようになる。
frame = new TH1F("frame", "", 10, -50, 1000);
frame->SetMinimum(0.0);
frame->SetMaximum(20.0);
frame->Draw("AB");
TF1 *f1 = new TF1("f1", "-x", 20, 0);
TGaxis *a1 = new TGaxis(-50, 0, -50, 20, "f1", 510, "-");
a1->Draw();
まず始めにframeという枠を指定している。
x座標は-50から1000までで、yは0から20である。
このときDrawのオプション"AB"は軸を描画しないことを意味する。
軸の表記が重ねがきになるのを防ぐためである。
次にf1という関数を作る。
-xで軸の値の分布の関数を作っていて、20と0はその範囲を示している。
TGaxisの始めの4つの数字は、元の図の中での軸の始点と終点の座標を入れる。
ここでは軸は(-50, 0)から(-50, 20)までを指定している。
510は軸の目盛りの分割数を意味していて、510がデフォルトだが、510個に分割するわけではない。
数値の詳細は不明だが、これを大きくすると分割数が上昇した。
最後の"-"は軸に書かれる数値やタイトルが軸のどちら側に来るかを指定する。
ちなみに軸のタイトルとかは
a1->SetTitle("");
とかやればいい。
これだけだとx軸には何も出ないので、新たに軸を書いてやる必要がある。
たとえばy軸は普段、上が大きく下が小さいが、これを逆にしたかったりする。
こういうときはTGaxisを使う。
たとえばy軸の上下を反転させる場合だと、次のようになる。
frame = new TH1F("frame", "", 10, -50, 1000);
frame->SetMinimum(0.0);
frame->SetMaximum(20.0);
frame->Draw("AB");
TF1 *f1 = new TF1("f1", "-x", 20, 0);
TGaxis *a1 = new TGaxis(-50, 0, -50, 20, "f1", 510, "-");
a1->Draw();
まず始めにframeという枠を指定している。
x座標は-50から1000までで、yは0から20である。
このときDrawのオプション"AB"は軸を描画しないことを意味する。
軸の表記が重ねがきになるのを防ぐためである。
次にf1という関数を作る。
-xで軸の値の分布の関数を作っていて、20と0はその範囲を示している。
TGaxisの始めの4つの数字は、元の図の中での軸の始点と終点の座標を入れる。
ここでは軸は(-50, 0)から(-50, 20)までを指定している。
510は軸の目盛りの分割数を意味していて、510がデフォルトだが、510個に分割するわけではない。
数値の詳細は不明だが、これを大きくすると分割数が上昇した。
最後の"-"は軸に書かれる数値やタイトルが軸のどちら側に来るかを指定する。
ちなみに軸のタイトルとかは
a1->SetTitle("");
とかやればいい。
これだけだとx軸には何も出ないので、新たに軸を書いてやる必要がある。
登録:
投稿 (Atom)