Hatena::ブログ(Diary)

my-misc.blog

 

2012-12-20

[] Emacs から単語や選択テキストをGoogle検索

英語を書いている時にその表現に自信が無い時よくGoogleで検索してヒット数を見てる(^^;)

sakitoさんが紹介していたURLをブラウザで開く Elisp を少し変えて、選択領域を C-c g でSafariでGoogle検索できるようにしてみた。範囲が指定されていない場合は単語を検索。ついでにGoogle scholar 検索(C-c G)と、OSX辞書アプリでの検索(C-c w)もまとめておいた。

2012-07-12

[] 新しい MacBook Pro

久しぶりに新しい Mac を買った。がんばって MacBook Pro retina display、2.6Ghz/500GB!今まで使っていたのが、黒い MacBook (2007 late) だから、使用感等を書き出したらきりがないので省略。旧世代を残して、次世代として導入された Retina display モデル、いろいろと困ることがあるだろうけど、それも含めて楽しもうと思って注文した。でも今のところ「困った〜」ということには遭遇していない。とにかく速いし奇麗。そして使いやすい。(前回の購入から約5年。MacBookよくがんばってくれた。たいしたことを書いていないけど、前に書いたものをみると今回よりも導入で少し苦労している。)

購入

  • オンラインのアップルストア(ドイツ)でクレジットカードが使えなかったので、電話での注文。電話でやりとりするまで知らなかったのだけど、自分の所属する研究機関向けの割引があり、Education 価格よりもさらに少し安くなった(もしオンラインストアで買っていたらこの割引は受けられなかった)。とはいえ、消費税20%のドイツで買うと日本よりずっと高い。(ドイツの定価は2.899,00ユーロ=28万円で、日本だと23万8800円。)
  • Mac は世界中どこで買ってもOSは1つ。違いはキーボードとマニュアルだけ。ヨーロッパのオンラインのアップルストアでは、国際英語と US キーボードが選べる(前に書いている)。日本でも購入できるのは US キーボード。自分は最初に触った Mac からずっと US キーボードだから、海外での購入も困らなくてよい(でも、アップルストアに在庫はない)。(しかし、電話での注文時にPDFの書類を送ってもらって確認したにも関わらず、ドイツ語キーボードが届いてしまいUSキーボードの交換を依頼。その後メールで届いた明細をみると今度は国際英語になっていたので、すぐに電話してまた変更といろいろと手間取った。)
  • キャンペーンで80ユーロ分の AppStore カードがついてきたけど、ドイツの AppleID が必要。今はドイツのクレジットカードがあるけど、他の国に引っ越ししてクレジットカードがなくなったときに、どうなるのかわからないので、とりあえず保留中。ドイツ人に買い取ってもらったりできるのかな?

インストール、設定等。

  • Xcode を AppStore から。
  • キーボードの設定。キーリピート→最速、リピートまでの認識時間→最短。Caps Lock を Control に変更。
  • スポットライトのショートカットを "Ctrl+Space" から "Ctrl+Shift+Space" に変更。"Ctrl+Space" は Emacs で使うので。
  • OSXWS を入れる。これでEmacs、TeXLive(+LaTeXiT+Skim)、gnuplot、yaplot、povray 等々をすぐに使えるようになる。
    • インストーラーはここから。
    • 先にXcodeの環境設定の Downloads から Command Line Tools を入れておく必要がある。
    • proxy は /usr/osxws/etc/apt/apt.conf で設定。(sudo vi / emacs 等で編集)
    • gnuplot の設定:「~/.gnuplot」に set term x11 とする。
    • OSXWSは設定ファイルも提供するけど、自分は前のマシンから~/.emacs.d などをコピー。
  • 前のマシンの ~/bin をコピー。
  • Dropbox を入れる。
  • BibDesk を入れる
  • AppStore の購入済みからいろいろ( VoodooPad, twitter, iCompta など)
  • iWork を DVD から。新しいMBPは光学ドライブがないので、DVD は前のマシンでマウント。(そろそろ新しいのが出る頃だろう。)
  • OmniGraffle Pro を入れる。AppStore ではなく、Omni Store からEducation ラインセンスを買っている。
  • OmniFocus を入れる。同じく Education ラインセンス。
  • iWeb.app を入れる。(インストーラーDVDを自宅に忘れたので、古いマシンからコピー)。iLife アプリとして、もうプリインストールされていないのか。AppStore にもない。ということで、いずれ iWeb は使えなくなるかもしれないけど、Webサイトにはあまり時間を使えないのでもうしばらくお世話になる。
  • LaTeXiT 2.5 を入れる。(OSXWSはまだ2.4.1なので追記(2012-07-21): 2.5にアップデートされた。)
  • 他に使っているものはあるけど、必要な時にインストールすれば十分かな。
  • iTunes 10.6.3 のアップデートが失敗する。ウェブサイトからダウンロードして手動でアップデート。
  • cd to.appをインストール。ツールバーにドラッグ&ドロップ。Finderで開いているディレクトリがターミナルのカレントディレクトリに。
  • (あと、研究所ライセンスのソフトウェア)
  • このような感じで、とても素直な使い方をしている(^^;)

データの移行

MBPはフラッシュストレージで今の500GBをそのうち増量ということはなかなか難しそうなので、丁寧に整理しながら手動で移行したい。前のMacBookのデータをすべて持ってきたら450GBになるので(汗)。

  • ファイル共有(AFP)で、前のマシンからデータを移行。研究所のLANはさすがに速い。
    • リモートにある1GBくらいのフォルダを削除したら途中でマシンが固まったけど、バグだろうか?
    • タイムマシーンでバックアップがあるので、移動したファイルは前のマシンから消すように。ファイルの不要な重複はさけたい。
  • 古い数値計算のデータファイルはなるべく圧縮する。
  • 論文 PDF や VoodooPad のファイルのような、日常的に使うファイルは Dropbox に入っていたのでとても楽。
  • iWeb のデータは ~/Library/Application Support/iWeb/をコピー。
  • OmniFocus は前のマシンでファイルメニューの「データベースをバックアップ」として、新しいマシンで「データベースのバックアップを復元」すればいい。(最初、あまりよく考えずに ~/Library/Application Support/OmniFocus をコピーしたけどうまく行かなかった。)
  • Mail.app のアドレス欄で、過去に送信したメールアドレスを保管してくれる「宛先の履歴」は、~/Library/Application Support/AddressBook/MailRecents-v4.abcdmr をコピーしたらうまく行った。

動作確認

  • とても静か。普通の使用では大丈夫だけど、ちょっと使っていると熱くなる。廃熱がよいとこういうものなのかな。
  • Emacs (23.4.1)。Retinaでとてもきれい。ちゃんと動く。
  • TeX。速くて非常に快適。yatex のデモ動画を取り直したいくらい。
  • LaTeXiT もばっちり。
  • X11アプリがちゃんと動く!yaplot も問題ない。ビットマップの解像度が細かくなっているわけではないけど、アンチエイリアスをしていないためか、くっきりと見えるので違和感はない。
  • Twitterアプリの表示がぼけぼけ。入力部分は奇麗だけど。
  • Keynote で発表中に動画スライダーを動かすと落ちる問題、新しいマシンでも起こるのか。。。(言語を日本語にした場合のみ。)(追記:その後の iWork のアップデートで解消!)
  • どうでもよいことだけど、白くて四角いACアダプターのデザインは何年間もずっと同じ。MagSafe の部分は今回少し変わったけど。
  • グレア液晶だけど映り込みは少ない。比較の画像(1.2MB)

2012-03-31

[] Emacs で書いている英語の文を Siri の声で読み上げる

OSX の say コマンドを利用して英語を読んでもらう。TeX書類を想定して、完全ではないけど、読み上げる必要がない部分を適当に取り除いてみた。

Alex の発音も良いけど、Siri の声を入れるとさらに流暢な英語で読んでくれる。システム環境設定のスピーチ→テキスト読み上げ→システムの声→カスタマイズから、「英語(アメリカ合衆国)女性」の所にある Samantha にチェックを入れてダウンロードすれば選べる。Tomやイギリス英語のDaniel なども良い感じ。

領域を選択している場合はその領域を、していない場合は行頭%から行頭%の間にあるテキストを読み上げる。(自分は文毎に%を置いているので、領域を選択することなく、カーソルのある文を読んでくれる。%が見つからないと失敗するけど、その対処はしていない。)

ショートカットは ⌘R にしてみた。

解説

  • スピーチが再生されていればそのプロセスを削除して終了。
  • 領域を選択している状態(mark-active が t)なら、その領域の始まりと終わりの位置を b と e に。
  • 領域を選択していないなら、% で始まる行を後方、前方に検索して、それぞれの位置を b と e に記録。
  • b から e までを文字列 s にする。
  • s の中に \% があれば、コメントと認識されないように percent に置換。
  • s の中に %に続いて改行文字以外の文字が続いている部分(コメント部)を""に置換(削除)。
  • TeX のコマンドで、section型(\hoge{にマッチ)を削除(" " に置換)。
  • $,\,_,^,~,(,),{,},`といった記号や改行文字を削除(" " に置換)
  • 空白が続くところを1つの空白に置換。
  • 結果の文字列 s を表示
  • シェルから引数 s で say コマンドを実行。

領域を選択していないときにスピーチする文章を自動的に区切る部分は、自分のスタイルに合わせて書き換えれば良いと思う。

re-search-backward/forward で、後方、前方へ正規表現でマッチする文字列を探している。"\\|" が or で、"^" は行頭を意味している。つまり、"^\\ *%" は行頭から0個以上のスペースの後に%があるという意味で、"^\\ *\n" は行頭から0個以上のスペースの後改行がある(つまり何もない行)という意味で、そのどちらかにマッチすればそれが区切りになる。Emacs の文字列はエスケープ文字(バックスラッシュ)のために、バックスラッシュが必要みたいで、慣れないと読み難い(自分も慣れていない。)

追記: say コマンドはファイルに書き出せる。iTunes にはファイルをコピーするだけで自動的に iTunes にインポートする機能がある。上を少し書き換えれば、Emacs のメモを iPod や iPhone で聞くような機能が作れる。

$ say Hello, World -o ~/Music/iTunes/iTunes\ Music/iTunes\ に自動的に追加/foo.aiff

2012-03-11

[] YaTeX の設定

YaTeX 設定ファイル(my_yatex.el)。

  • タイプセット等を OSXライクなショートカットに。(1ストロークのショートカット⌘B で タイプセットなど。)
  • ほんの少しだけ習作的ツール。
  • TeX 編集時に使っている人から借りてきた機能(OSXの辞書を引くなど)。
  • 少し実験中のものも。

2012-02-19

[] LaTeX タイプセットスクリプト(SemiAutoTeX)

数式番号やページ番号はタイプセットすることで決まるので、それらの数字を参照して表示させるためにタイプセットを繰り返す必要がある。さらに面倒な bibtex 実行は、その前にまず一回タイプセットし、その後に bibtex を実行し、さらにその後に二回タイプセットしないと、正しいプレビューを得られない。

このような LaTeX タイプセットを自動処理する latexmk という Perl スクリプトがある。 必要な処理を全て自動判定してくれる。しかし、判定のために余計に時間がかかるので、作業するマシンによっては遅いとかんじるかもしれない。

YaTeX は次のバージョン(1.76)から auto-rerun 機能が追加される予定になっている。しかし、bibtex を利用している場合に、タイプセットの回数が常に倍になってしまうというデメリットがあり、仕様変更を提案している。その提案している試用の動作確認のために書いたシェルスクリプトがこれだ。YaTeX はもともとタイプセット(C-c C-t j)だけでなく、bibtex や makeindexの実行も Emacs 上からできた(C-c C-t b や C-c C-t i)ので、latexmk のように全ての状況に対応する1つの命令にしなくても、3つそれぞれの処理が賢くなればそれなりに便利ではないだろうか、という提案。bibtex を実行する必要があるとか、makeindex が実行する必要があるというタイミングはユーザーが決めるけど、latex→bibtex→latex→latexと手動で順番通り実行する必要はなく、? を見る頻度はずっとすくなくなる。

シェルスクリプト

semiautotex.sh(github)

特徴

ここで試しているシェルスクリプトは、LaTeX の再実行は自動判定だけど、bibtex や makeindex の実行はユーザーが呼び出す必要がある。ただ、予め実行順序が決まっている事なので、YaTeXの C-c C-t b (又はShift+Command+B) で一度呼び出せば必要な処理は一括でしてくれる。この呼び出しを自動でするわけではないので「半自動」のスクリプトだ。普通の入力作業で bibtex を実行する必要がある回数は、普通の LaTeX 実行より圧倒的に少ない。おそらく一つの原稿を完成させるまでに LaTeX を3000回実行するとすると、bibtex の実行回数は100回くらいではないかと思う。

スクリプトの仕様

  • ホームディレクトリの設定ファイル .semiautotexrc でコマンドを指定する。
    • dvipdf が設定されている時は DVI からPDFファイルを生成する。
  • LaTeX 実行は .aux ファイルが変更される限り繰り返す。
    • 参照番号(\ref)、目次(\tableofcontents)を一度の呼び出しで正しくアウトプット
    • .aux ファイルの更新の為に md5 を二回使っているけど必要な時間は合計で0.01秒以下。
    • 1回実行:既に typeset 済みのファイルで、新しい編集が文章のみの場合。目次を付ける場合はセクションのページ番号が変更されない場合。
    • 2回実行:番号付き数式を追加、sectionを追加等。
    • 3回実行:目次のページ数が変化する場合。(@at_aka さんに教えていただいた。
  • BibTeX 実行は LaTeX→bibtex→LaTeX→LaTeX という順序で実行する。
  • MakeIndex 実行は LaTeX(auxをみて繰り返し)→makeindex→LaTeX という順序で実行する。
  • pdflatex を使う時は draftmode オプションを使って、PDF出力の回数を減らす。

処理速度の比較

処理速度の比較 (12ページで12個の図、文献引用36件、数式43個を含む論文の原稿(執筆中!)を10回測定。time コマンドの real の値。MacBook, 2.2Ghz Core 2 Duo)

通常の編集で LaTeX を一回実行する必要がある場合

  • pdflatex: 1.19 ± 0.2 sec
  • latexmk: 2.06 ± 0.1 sec
  • semiautotex.sh: 1.19 ± 0.2 sec

bibtex を実行する場合(latexmk は自動判定で実行、semiautotex.sh は -b オプションで実行。LaTeX処理が三回必要なので上の時間の3倍が妥当な時間。)

  • latexmk: 7.70 ± 0.7 sec
  • semiautotex.sh: 3.73 ± 0.2 sec

YaTeX は Emacs 上でタイプセットを実行した時の処理時間を計測できるようになっていたので、「通常の編集で LaTeX を一回実行する必要がある場合」を比較してみた。(現在の開発版YaTeX で試されている auto-rerun では bibtex を利用している書類をタイプセットする時に常に typeset + bibtex + typeset と二回タイプセットするようになっている。changeset 262

  • YaTeX auto-rerun: 3.3 ± 0.2 sec
  • semiautotex.sh: 1.2 ± 0.1 sec

動画で比較。

D

D

YaTeX の設定

YaTeXの設定は以下のようになる。

~/emacs.d/my_yatex.el