smartparensのlatex-modeでの\[\]の補完で、間にスペースを入れる

Emacsでsmartparensを使ってLaTeXを書いているとき、\[\]の補完で間にスペースが入ってくれた方が嬉しいです。

(sp-with-modes '(tex-mode
                 plain-tex-mode
                 latex-mode)
  (sp-local-pair "\\[" nil :actions :rem)
  (sp-local-pair "\\[" "\\]"
               :unless '(sp-latex-point-after-backslash)
               :post-handlers '(sp-latex-insert-spaces-inside-pair)))

をinit.elに書けばOKです。

Learn You a Haskell for Great Good!

思い立ってHaskellの勉強を始めてみました。Learn You a Haskell for Great Good!英語版ならばここで無料で読むことが出来ます。公式サイトなのでもちろん合法。(ちなみに日本語版は、すごいHaskellたのしく学ぼう!

さて、進めていたら、早速2章で詰まってしまいました。

boomBangs xs = [ if x < 10 then "BOOM!" else "BANG!" | x <- xs, odd x]

とあるのですが、parse errorが出てしまいます。関数型プログラミング言語Haskell Part17 | ログ速の392辺りによれば、letを付ければ良いらしい。

勉強不足なので分かりませんが、なぜletが必要なのだろうか。そしてこれは誤植なのだろうか…

追記

どうやら、baby.hsに書いてloadすれば良かったらしい…

MacとCyanogenMod

手持ちのNexus 7 (2013)にCyanogenModを入れてみました。それは簡単だったのですが、CyanogenModだと、Macの"Android File Transfer"が使えないようですね。仕方が無いのでadbコマンドを使っていますが、MacでCyanogenmodにファイル転送、他にいい方法はないものでしょうか…

2014/10/21 追記

Android File Transferが使えることが分かりました。

設定からストレージを開き、右上のメニューを開きます。"USBでパソコンに接続"という項目があるので、それをタップして、"メディアデバイス(MTP)"にチェックを入れるだけです。

よかったよかった。

Linuxに手動で最小構成のTeX Liveをインストール

 Gentoo LinuxTeX Liveをインストールしたかったのですが、emergeでやると時間がかかるのと最新版が入らないのとかで気に食わないので、手動でやってみました。やってみると案外簡単です。

インストール

基本的には Quick install - TeX Live - TeX Users Group に従います。Linux - TeX Wikiも参考になるでしょう。まずhttp://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz からインストーラをダウンロード。

tar zxvf install-tl-unx.tar.gz

で展開。あとは展開した場所に移動して、

sudo ./install-tl

インストーラを実行します。操作方法は表示されるので分かるでしょう。

それで最小構成にするために、schemebasicに変更します。私はcollectionも変更して、Chinese/Japanese/KoreanとJapaneseあたりを追加しておきましたが、これは必要ないのかも?あとはインストールです。

PATHの設定

インストールはこれで完了しますが、PATHは自動では設定されません。次を.bash_profileあたりに書く必要があります。

PATH=/usr/local/texlive/2014/bin/i386-linux:$PATH; export PATH
MANPATH=/usr/local/texlive/2014/texmf-dist/doc/man:$MANPATH; export MANPATH
INFOPATH=/usr/local/texlive/2014/texmf-dist/doc/info:$INFOPATH; export INFOPATH

書いたらターミナルを再起動するのが良いでしょう。

日本語設定

これで終わりかと思いきや、試してみるとまだ日本語を含む文書のタイプセットがうまく行きません。Homebrewで最小構成のTeX環境を構築する - WEB SALADを参考にして、必要なパッケージをインストールします。

sudo tlmgr install ptex ptex2pdf jfontmaps jsclasses japanese-otf

を実行。あとは、

sudo kanji-config-updmap-sys ipaex

を実行して、フォントを埋め込む設定をすると良いでしょう。

Emacsをカスタマイズした

時間があったので、Emacsをカスタマイズしてました。導入したのは、helmyasnippetです。どちらも有名なプラグインですが、今まで手が出せずにいました。

Helm

Helmは説明し辛いですが、M-xやC-x C-f等のインターフェースを便利にしてくれるものです。使い始めは何が良いのかさっぱり分かりませんでしたが、しばらく使ってみると便利です。説明はググればいっぱい出てくるので省略。

Yasnippet

Yasnippetは、スニペット機能を追加する物です。スニペットとは大ざっぱにいうと、よく使うコードの断片を保存しておき、必要なときにそれを挿入する機能です。これも使い方が分かると便利です。 Cのfor文を一発で入力したり、LaTeXの毎回入力する\documentclassから\begin{document}までの一連の流れを数回のキータイプで挿入できたり、無駄がなくなって良いです。使い方はemacs 最強スニペット展開プラグイン yasnippet.elのインストール! - プログラミングのメモあたりがいいかも。

最後に…

関係ないですが、最近はVimの方が流行っているということで、ちょっと惹かれています…ちょっと使ってみようかな。

Emacsのauto-java-completeをMacで使う

皆さんEmacsJava書きたいですよね。でもデフォルトのままだと、auto-completeを使ってても、補完がイマイチだったりします。

そこで、emacs-java/auto-java-complete · GitHubというものがあります。これは、auto-completeを強化してくれるものです。しかし、インストールでハマったので解決法をここに書いておきます。環境はOS X 10.9、Javaのバージョンは8です。

やり方

とりあえず、auto-java-completeはElpaに入ってないので、自分でgit cloneするとかして入れましょう。ですが、それだけではこれは動かず、インデックスファイルみたいなのを作成する必要があります。

git cloneしたディレクトリに移動します。それで、次を実行。

$javac Tags.java
$java -cp "/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home/jre/lib:." Tags

ディレクトリ名はJavaのバージョンによって違うでしょうから、そこは置き換えて。あとは、init.elに

(add-to-list 'load-path "~/.emacs.d/ajc-java-complete/")
(require 'ajc-java-complete-config)
(add-hook 'java-mode-hook 'ajc-java-complete-mode)
(add-hook 'find-file-hook 'ajc-4-jsp-find-file-hook)

とか書いておけば、動きます。

私がどこでハマったかというと、java Tagsを実行するところ。ここで、-cpオプションで正しくパスを教えてあげないと、うまく行かないわけですが、どこにJavaのクラスファイルがあるのか知らなかったのです。結論としては、rt.jarというファイルのパスを教えてあげれば良いみたいですね。Linuxの場合は、Emacs23でJavaクラス補完機能設定 - Qiitaによれば、/usr/lib/jvm/java/jre/lib/rt.jarとかにあるみたいです。

これでめでたしめでたし。

ちなみに

こういうGitにしかないプラグインは、Caskを使うと、管理が楽になって便利です。

Matplotlibのフォントが変更できない

MatplotlibはPythonでグラフが書けるやつですね。

api example code: font_family_rc.py — Matplotlib 1.3.1 documentationらへんのやり方でフォントを変更しようとしても、

Font family ['serif'] not found.

とか言われて失敗することがあります。こんなときは、 $HOME/.matplotlib/fontList.cacheを削除してやりましょう。バージョンによっては、fontList.py3k.cacheかも。私の場合、これで直りました。