TeX

MathJaxを試してみる

MathJaxが良くなっているらしいということで、ちょっこし試してみた。mimetexと同じく、LaTeXで表記すればよい。
\$\sqrt{2}\$ と書けば、$\sqrt{2}$となるし、
\$p=x^2+y^2 \Longleftrightarrow p\equiv 1 \pmod{4}\$ と書けば、
$p=x^2+y^2 \Longleftrightarrow p\equiv 1 \pmod{4}$

ディスプレイ数式も、この通り。
\[ \Gamma(s)=\int_{0}^{\infty} e^{-x}x^{s-1}\,dx \]

数式の画像をリアルタイムで作っているようなので、表示されるまで、ややもたつきが見られるが、mimetexと比べても、格段に美しい!LaTeXRenderに匹敵すると思う。これを javascript で実現しているとは驚きであるなあ。

ということで、これからはMathJaxで数式を書こうと思う。以下、簡単に導入メモ。

MathJaxのサイトから一式をDLして解凍したのち、自分のサイトにアップ。ファイルの個数が多いのでUploadには時間が掛かる。サーバー上で解凍できるならその方がベターかなあ。次に、MathJaxをWordPressで使う為のプラグイン、MathJax-LaTeXをダウンロードする。これをWordPressのpluginフォルダーにアップしてプラグインを有効化する。

プラグインの設定では、MathJaxをアップしたディレクトリーを指定する。あとはそのままでも良いのだが、ワタシの場合、\$…\$ でインライン数式を書きたいので、少し変更。default.js というファイルを開き、tex2jax の部分で、コメントアウトされているところを外す。何故か、[‘\$’,’\$’] がコメントアウトされているので、そのままではダラーで囲んだところが組版されないのだ。個人的な不満はここだけだった。ここを修正して default.js を選べば、設定は完了。

PDF ViewerのSkimでTeXのdviファイルを見る

Mac OS X標準のPDFビューアーは Preview.app であるのだが,これ以外にも Skim というのがある。動作も軽快で機能も多い。さらに最近のヴァージョンではTeXが生成するdviファイルもPDFに変換して表示できるので,昔のdviファイルを見るときなど,なかなか便利なのである。

ところが,久しぶりに dviファイルをSkimで開こうとしたら,PDFに変換出来ませんとのメッセージが。おかしいなと思い,ちょっと調べてみた。

分かったことはSkim本体でdviをレンダリングするのではなく,dvipdfmxを利用してPDFに変換してから表示している,ということ。dvipdfmxの場所は通常の /usr/local/bin とかにあることが仮定されているらしい。ワタシの環境は自前で uptex を導入している関係でdvipdfmx の場所が違うので,変換できなかったらしい。

dvipdfmxの場所をSkimに知らせるには,ターミナルから次のように入力すればよいらしい。例として,/Users/foo/bar/dvipdfmx がパスとすると,

defaults write -app Skim SKDviConversionCommand -string /Users/foo/bar/dvipdfmx

のように。これを行ってから,改めて dviファイルをSkimで開くと,あっという間にPDFに変換されて,普通に見ることが出来た。メデタシメデタシ。

WindowsでのTeX環境

普段はMacだし、たまにUbuntu上で作業するくらいで、WindowsでTeXをすることがほとんどなかった。ちょっと事情があって、Windows上にTeXシステムを導入しているのだが、最新のシステムは以前と違うことが色々あるのでメモ。

以前は、Windows上のTeXと言えば、文書の文字コードはShift-JIS、dviのプレビューはdvioutというのが定番だった。もちろん今でもそれで作業している人が多いようだが、その他の選択肢が可能になっている。

文字コードに関しては、UTF-8も使える。文字コードの自動判別はしないので、コンパイル時に指定する必要があるが。これで、Macと同じファイルが使える。

Windows上のTeXと言えばdvioutが定番のプレビューアーであるが、実は使いたくない事情がある。TeXシステムは外付けのHDDに入れて、ポータブルに使いたいのである。dvioutはシステムのレジストリーをいじるので、ポータブルに使えないのだ。ということで、 dvipdfmx あるいは dvips を用いて PDF を作成することになる。これらも Mac 上と同じく Map ファイルを設定すれば問題なく使える。

さて、以上の作業をエディター上で簡単に行うには、いわゆる統合環境が便利。ここで少々問題が発生。候補としてはWinShellとTeXWorksがあるのだが、WinShellは文字コードShift-JISのみをサポートしていて、UTF-8での編集ができない(多分)。(【訂正】オプションのフォントから文字コードを選択できた。UTF-8も可能。)
一方のTeXWorksはUTF-8が標準で、Shift-JISはサポートされていない。ううむ。

まあ、Macと同じUTF-8が使えるTeXWorksをメインにしますか。実はTeXWorksはMacのTeXShopを範としてクロスプラットフォーム用に開発されたもので、Windows用だけでなくLinux用、Mac OS X用もある。PDFプレビュー機能もあるから、Adobe Readerを頼ることなく、TeXWorks内でコンパイルからプレビューまで行える。(日本語フォントを埋め込むようにMapファイルを設定するこが前提だが。) このあたりの使い心地は TeXShop とほとんど同じ。

それにしても、文字コードはいつになっても悩みの種。自分だけならUTF-8で良いのだが、同僚は未だにShift-JIS派が多い。困ったもんだ。

MacTeX導入 & Asymptoteでアニメーション

Asymptoteでアニメーション

AsymptoteでGIFアニメが作れるらしいので、少し実験。といっても、サンプルをダウンロードしてきてコンパイルしただけなのだが。しかし、animate.sty というLaTeX スタイルファイルを利用するものは、e-TeX 拡張された pdfTeX その他が必要らしく、日本語化されたpTeXではコンパイルできなかった。

しばし迷った末に決断 :mrgreen:MacTeXを一式ダウンロードした。これは最新のTeX Live 2009をMac OS X向けにビルドしたもので、普通のマックユーザーが簡単にインストールできるようなパッケージとなっている。実際には、/usr/local/texlive/2009/ 以下にどどっとファイル群が入るのだが、そこは知らなくても良いことになっている。その代わりと言ってはなんだが、一切合切が入っている為か、ダウンロードするファイルは1個で1.3Gバイト。ギガですよ、旦那 :mrgreen:

これでTeXを始める人はそれで良いのだが、ワタシの場合、既にpTeXを導入していて、しかも通常の/usr/local/tetex/ (だったっけ?)以下ではなく独自の場所にインストールしているから、以下の情報は大切。メモしておこう。

まず、/etc/path.d/TeX と /etc/manpath.d/TeX というファイルが書き込まれる。これで、PATHとMANPATHの末尾にMacTeXで使うディレクトリーが追加される。追加されるPATHは /usr/texbin なのだが、これは /usr/local/texlive/2009 へのシンボリック・リンクである。そして、システム環境設定に新たに追加された TeX Distribution から、どのTeXシステムを使うのかを選択できるようになっている。例えば、MacPortsで入れたものを選択すると、/usr/texbin のリンク先が /opt/local/bin になる(試してないけど多分・・・)とかいう仕組みのようだ。(一部未確認なので要注意) まあ、あらかたこんな感じになっている。

全部で1.3Gという大富豪的TeXパッケージなのだが、何とTeXShopやTeXWorksといった統合環境エディターや、LaTeXit、おまけに asymptote まで全部入っている。これに日本語化されたpTeXとUTF拡張のupTeX、さらにe-TeX拡張された upTeXが入っていれば、日本でも利用者がどっと増えるだろうに・・・。

ということで、とりあえず、自分でビルドしたものは一切使わずに、PATHの最初の項目を /usr/texbin にし、MacTeXのasyとpdflatexで、アニメーションGIFを作ってみた。(冒頭のGIF動画がそれ)

Flickr! サイトではJPEGになってしまって動かないのだが、最大サイズを選べば GIF のままで、ちゃんと動く。

しかし・・・、2つのTeXシステムを行き来するのは面倒ではある。毎回PATHを変えるのもなあ。何か良い方法はないものか。

TeXShopでAsymptoteを使う方法

TeXShopをAsymptote用の統合環境として使うことが出来るようだ。TeXShopだけで、AsymptoteをコンパイルしてTeXに取り込めば、シームレスな作業が出来て便利ではある。参考にしたのは、次のページ。

Asymptoteに関する覚え書き – パイ生地みたいにふくらんで。 – livedoor Wiki(ウィキ)

まずは、ターミナル(シェル)で次のように入力する。

  defaults write TeXShop OtherTeXExtensions -array-add "asy" 

次に、~/Library/TeXShop/Engines/Asymptote.engines というファイルを作り、中身を次のようにする。(中身は各々の環境によって変わると思う。)

#!/bin/tcsh

# パスの設定。必要に応じて。
# set path= ($path /usr/texbin /usr/local/bin)
set asy_source = $argv[1]:r
asy $asy_source.asy

ワタシの場合、asy がPDFを出力するように、~/.asy/config.asyに書き込んでいるから、このようにしているが、上記サイトの設定では、epsf を pdf に変換する処理を行っている。まあ、このあたりはそれぞれの環境に応じて適当に。

最後に、このファイルの属性を実行可能に変更する。以上で、TeXShopをasymptoteの統合環境として使うことが出来る。

asymptoteで描いた図版をTeXに取り込む

昨日ちょっと頑張って幾つか図版を描き、ようやくAsymptote (MetaPost後継の図版作成用プログラム言語) に慣れてきた。まだ、Shellから asy hogehoge.asy と入力しているのだが、図版が多くなると少々面倒。LaTeXに取り込むための asylatex というのもあるようだが、自家用には次の述べるようなものでも実用的だと思うので、メモ。

方法は簡単で、TeXの \write18 を使う。これは、引数をシェルに渡して実行させる。だから、それが可能なように –shell-escape オプションを付けてTeXを起動しなくてはならない。自分で作成した文書の場合は危険性はないからね。

画像を挿入する箇所の前に、
\write18{asy hogehoge.asy}
と書いておけば、シェルが起動されて hogehoge.pdf が出来る。これを取り込めばよい。

%\write18{asy hogehoge.asy}
\includegraphics{hogehoge.pdf}

と書いておいて、1行目は図版作成のときだけコメントをはずし、図版完成の後はコメントアウトしておけば、無駄に asy が起動されなくて効率がよい。

TeX文書の文字コードを一括してUTF8に変換する(2)

前に書いた

Sukarabe’s Easy Living » TeX文書の文字コードを一括してUTF8に変換する

の改良版。このまま実行したら、まず、ファイルの数が多すぎると文句言われた。そこで、xargs が一度に処理するファイルの数を制限することにした。例えば -n 10 とすれば、一度に10個ずつになる。ところが今度はいくつかのファイルが見つからないというエラーに遭遇。日本語ファイル名の場合、上手く行かないケースがあるようだが、検索するファイル名をSingle quotationではなくDouble quotationで括ることで解決。さらに、空白をファイル名の区切りとしないように設定。僕自身は空白を含むファイル名を使うことはないが、念のため。空白の代わりにヌル文字を区切りと使う。そのために、find に対して、-print0 というオプションで、ファイル名の最後にヌル文字を加える。そして、xargs のオプションとして -0 とすることで、ヌル文字を区切りと解釈する。

最終的には次のようになった。これは、カレント以下の hogehoge.tex たちを一括して UTF8 (BOMなし) に変換するもの。

find . -name "*.tex" -type f -print0 | xargs -n 10 -0 nkf -w -Lu --overwrite

これで、文字コードの変換に関しては一件落着かな。

BBEditでTeXを使うプラグイン

[備忘録 ] BBEditからTeXを呼び出すプラグインを見つけた。次のサイトからダウンロードする。

BBEdit and TextWrangler TeX integration scripts

まずは、指示通りに~/Library/Application Support/BBEdit/ 以下にフォルダーを設置する。すると、BBEditからApple Script経由でUNIX shell scriptが呼び出され、TeXのコンパイルが出来る。

ただしこのプラグインは欧文のLaTeX、具体的にはpdflatexを呼び出すように出来ている。そこで、日本語LaTeX用に少しだけ変更をする。pdflatexを呼び出している箇所を探し、自前のShell Scriptを呼び出すように変更。自前のShell Scriptと言っても、単にuplatexを起動し、続いて dvipdfmx を起動するという単純なもの。最後にPDFのプレビューアーを呼び出すのだが、Mac標準のPreviewではなく Skim というPDF Viewerにした。まだ試してないけど、PDFとLaTeXソースとのシンクロナイズ (SyncTeX) にはこのViewerが良いのだという。

問題が一つ。個人的に、LaTeX流の \begin{hoge} ... \end{hoge} があまり好きではなく、Plain TeX 流、あるいは、以前の AMS-TeX 流と言いますか、\hoge ... \endhoge と書くのが好きなのです。実はLaTeXだって、この形にマクロを展開しているんですがね 😉 。しかし、 \begin{hoge} ... \end{hoge} でないとコードの折り畳み (Code folding) が出来ないみたい。ここをハックする元気もないしなあ・・・。まあ、仕方ありません。これからは、LaTeX流に直しますかね。

ということで、BBEditの購入はほぼ決定です。普段はオープンソースの無料ソフトばかり使っているので、久々のソフト購入です。

三重苦

いや、どれも頑張れば解決できるとは思うけど。

その1。D-Deckでは市販のレジストデーター(プロテクトされたもの)の移動すらできない!これには驚いた。先日、ヤマハであちこちに分散していたレジストを一つのUSBメモリーに移してもらったのだが、フォルダーの位置はあとで移動させればいいからと、配置の最適化まではやってもらわなかった。ところが、Stageaではできるプロテクトデータの移動(コピーではなく移動ですよ、ええ)が、D-Deckではできないのだ。多分・・・。そんなことってありか? もう、まったく・・・。

その2。Ubuntuを8.04から8.10に上げたら、日本語入力できなくなってしまった。プロセスを見てみると、SCIMがロードされていないみたい。ううむ。日本語の表示はされるのだけど。つらつら考えるに、ブート用のCDが8.04専用になっているのが原因のようだ。8.04に戻すのもしゃくなので、最新の9.10をクリーンインストールしているところなのだが、家のマシンはUSBブートできないので、ブート用CDを別途作らなくてはならない。8.04とは微妙に違うみたいで、現在悪戦苦闘中。あーあ。

その3。マックで動くBBEditというテキストエディターがとてもよさそう(Code Foldingできるのが、ツボ :mrgreen: )なので、これをTeXで使いたいのだが、BBEditからUNIX Shellスクリプトに文書名を渡すパラメーターのやり方が分からない。仕方なく、Apple Script 経由でトライしているが、Apple Script って最低!(笑)とか思ってしまう。この中途半端な自然言語っぽい文法は何とかならないのかね。あーあ。

ということで、楽しい週末(苦笑)になりそうです 😉 。トホホ。

MacBook ProのJISキーボード配列をいじる

前の機種がUSキーボードだったせいもあって,すっかり指がASCII配列(?)になれてしまっている。MacBook Proは,コントロールキーがAの左にあることを優先してJISキーボードにしたのだが,右端の括弧が上下に配列されているのが,どうしても馴染めない。左右に並んでいるASCIIの方が絶対に良いって。

ということで,あれこれ調べた結果,~/Library/Keyboard Layouts/ に hogehoge.keylayout というXMLファイルを置いてこれを読み込ませるようにすれば,キーボードの配列は好きにできることが分かった。Dvorakだってできるというわけですよ :mrgreen: 。実際にオフィシャルの選択肢にもあるし。

TeXで多用するバックスラッシュをリターンの左に持ってきて,括弧はASCII配列にならって左右に置いて,などなど,あれこれカスタマイズしてみた。数日使用した結果,TeXの特化しすぎると普段の入力に不便だなあというわけで,過激なカスタマイズは止めることにした(笑)。

結局,バックスラッシュとブラケット,中括弧の位置を変更,それに伴ってアットマークとバッククオート,それからチルダーの位置を変更するくらいに止めた。これでもJIS配列のままよりずっと使いやすい。