2009年3月26日木曜日

LaTeX2e (dvipdfmx) のフォントを小塚明朝・ゴシックに

最近、ヒラギノフォントを埋め込んだ LaTeX で書かれた論文をときどき目にするようになりました。ヒラギノフォントは確かに美しいのですが、Mac OS X バンドルの明朝 W3 と角ゴシック W6 の組み合わせは、どうもバランスが悪いように思います。

Adobe Creative Suite 4 をインストールすると、小塚明朝・ゴシックが一式入るので、こちらを使用するようにしてみましょう。太さはそれぞれ 6段階あります。

まずは、LaTeX にフォントを認識させる準備です。/Library/Fonts/ にインストールされている小塚フォントのシンボリックリンクを作ります。

sudo mkdir -p /usr/local/share/texmf-var/fonts/opentype
cd /usr/local/share/texmf-var/fonts/opentype
ls /Library/Fonts/KozMinPro-* | sudo perl -MFile::Basename -ne 'chomp; symlink($_, basename($_));'
ls /Library/Fonts/KozGoPro-* | sudo perl -MFile::Basename -ne 'chomp; symlink($_, basename($_));'

dvipdfmx で小塚明朝・小塚ゴシックを埋め込む設定にします。/usr/local/share/texmf-var/fonts/map/dvipdfm/updmap/cid-x.map を以下のように変更します。ファイルがなければ作成します。

rml H KozMinPro-Regular.otf
gbm H KozGoPro-Medium.otf
rmlv V KozMinPro-Regular.otf
gbmv V KozGoPro-Medium.otf

最後に、作成したファイルを TeX が見つけられるようにしてあげます。

sudo mktexlsr

私は、TeX が持っている Computer Modern フォントとのバランスを考えると、小塚明朝 Light と小塚ゴシック Regular の組み合わせが、ゴシックの強調文字としての視認性としては、小塚明朝 Regular と小塚ゴシック Medium の組み合わせがベストと思いますが、皆様はいかがでしょうか?

2009年3月25日水曜日

MacBook Air の USB ポートの不足を補う

サンワサプライの USB充電タップ型ACアダプタ ACA-IP14を買いました。これはとてもいいです。カラーバリエーションは、左のブラックの他に、ACA-IP14W ホワイトACA-IP14SV シルバーACA-IP14R レッド があります。

USB ポートから電源だけ頂戴するという使い方が増えてきています。この製品には電源として使える USB ポートが 2つ、テーブルタップとして AC 100V のコンセントが 2つ付いています。

利用シーンは 2つ。出張先のホテルで iPod と携帯電話を USB ポートで充電しながら、MacBook Air と デジカメはテーブルタップから充電。そして、会議室でコンセントが足りない時にも、コンセントを自分だけで占有せずに、他の方にもお分けする…そんな使い方を考えています。出張に持っていくにも、とてもコンパクト (W71.5×D68×H20.5mm, 87g) です。

MacBook Air の USB ポートは確かに足りないんですが、用途をよくよく分析してみると、充電できれば OK という使い方が多くなってきました。MacBook Air と一体化するセルフパワーの USB ハブを組み合わせれば、かなりの部分は解決するのではないでしょうか。

2009年3月14日土曜日

date オブジェクト

date オブジェクトのリファレンスがどこにもないので、判明している点についてのメモ書きです。

date オブジェクトの作成方法

make new date with properties { ... } でうまく作成できません。

次のように作成します。

set s to "2009-03-14 13:05:49"
date s -- should be date "2009年 3月 14日 土曜日 1:05:49 PM"

日付だけでも OK

set s to "2009-03-14"
date s -- should be date "2009年 3月 14日 土曜日 0:00:00 AM"

プロパティ

判明しているプロパティは以下の通り。時・分・秒は取れないとしている資料がありますが、現行バージョンでは取れます。

year of (current date) -- 年
month of (current date) -- 月
month of (current date) as integer -- 月 (数字)
day of (current date) -- 日
weekday of (current date) -- 曜日
weekday of (current date) as integer
      -- 曜日 (数字: 1. Sunday .. 7. Saturday)
hours of (current date) -- 時
minutes of (current date) -- 分
seconds of (current date) -- 秒
time of (current date) -- 0:00:00 AM からの経過秒数

month of は数字を使って書き換えても大丈夫。

set d to date "2009年 3月 1日 日曜日 0:00:00 AM"
set month of d to 4
d -- should be date "2009年 4月 1日 水曜日 0:00:00 AM"

日付に関する計算

date オブジェクトに対して、秒単位で加減算をすることで、n 秒前、n 秒後の日付を得ることができます。

set d1 to date "2008年 2月 29日 金曜日 0:00:00 AM"
set d1 to d1 + 60 * 60 * 24 * 10 -- 10日後
d1 -- should be date "2008年 3月 11日 火曜日 0:00:00 AM"

set d2 to date "2008年 2月 29日 金曜日 0:00:00 AM"
set d2 to d2 - 60 * 60 * 24 * 10 -- 10日前
d2 -- should be date "2008年 2月 19日 火曜日 0:00:00 AM"

日の加算はうまく行くようです。n日後とかを計算するのに便利です。

set d to date "2008年 2月 29日 金曜日 0:00:00 AM"
set day of d to (day of d) + 1 -- 1日後
d -- should be date "2008年 3月 1日 土曜日 0:00:00 AM"

day of に 32日 を設定しても大丈夫です。

set d to date "2008年 3月 31日 月曜日 0:00:00 AM"
set day of d to (day of d) + 1 -- 1日後
d -- should be date "2008年 4月 1日 火曜日 0:00:00 AM"

day of に 0 や マイナスの数値を設定するとエラーになります。n 日前を指定する時は、前述の秒単位の減算を使います。

set d to date "2009年 3月 1日 日曜日 0:00:00 AM"
set day of d to (day of d) - 1 -- 1日前

時間に関する計算

日付のように、各プロパティに関する設定はできないので、time of で計算します。

set d to date "2009年 3月 1日 日曜日 0:00:00 AM"
set time of d to (time of d) + 3600 -- 3600秒 (1時間後)
d -- shold be date "2009年 3月 1日 日曜日 1:00:00 AM"

オーバーフローしても大丈夫。

set d to date "2009年 3月 1日 日曜日 11:53:00 PM"
set time of d to (time of d) + 3600 -- 3600秒 (1時間後)
d -- shold be date "2009年 3月 2日 月曜日 0:53:00 AM"

time of に 0 や マイナスの数値を設定するとエラーになります。n 秒前を指定する時は、前述の秒単位の減算を使います。

set d to date "2009年 3月 1日 日曜日 0:00:00 AM"
set time of d to (time of d) - 1

日付の比較

日付はちゃんと比較できます。

set d1 to date "2009年 3月 14日 土曜日 0:00:00 AM"
set d2 to date "2008年 3月 14日 金曜日 0:00:00 AM"
d1 > d2

2009年3月8日日曜日

iPod touch 用の動画エンコード

VLC 1.0 以降に対応した版を公開しました。こちらは古い情報です。

VLC 0.8.6i をコマンドラインから動かして、iPod touch 用の動画を作成するための設定。主にテレビ番組の録画を想定していて、640x480でキャプチャしたムービーを iPod touch 用に変換します。画面の縦横比ごとに用意してあります。

4:3

#!/bin/bash
/Applications/VLC.app/Contents/MacOS/VLC $1 --sout "#transcode {vcodec=mp4v, vb=1536, canvas-aspect=1:1, width=430, height=320, acodec=mp4a, ab=128, deinterlace=enable}:standard {mux=mp4, url=$1.mp4, access=file}"

3:2

#!/bin/bash
/Applications/VLC.app/Contents/MacOS/VLC $1 --sout "#transcode {vcodec=mp4v, vb=1536, canvas-aspect=1:1, cropleft=16, cropright=16, croptop=34, cropbottom=38, width=480, height=320, acodec=mp4a, ab=128, deinterlace=enable}:standard {mux=mp4, url=$1.mp4, access=file}"

16:9

#!/bin/bash
/Applications/VLC.app/Contents/MacOS/VLC $1 --sout "#transcode {vcodec=mp4v, vb=1536, canvas-aspect=1:1, cropleft=4, cropright=8, croptop=60, cropbottom=60,  width=480, height=270, acodec=mp4a, ab=128, deinterlace=enable}:standard {mux=mp4, url=$1.mp4, access=file}"

ピクセルのアスペクト比まで厳密に合わせていないので、厳密に iPod touch でベスト、とは言い難いかもしれません…。もう少し調整が必要なように思います。

2009年3月1日日曜日

MacBook Air と一体感のある USB ハブ

Ray-out RT-MBA3H1/S 。MacBook Air と一体感のある USB ハブです。

バスパワー方式の 3ポート USB ハブです。3ポート合計で 300mA しか保証されていないので、利用可能なデバイスは限られます。それでも、この手のピンポイントな商品は、うまくニーズにハマれば便利なものになると思います。

MacBook Air 自体が、元々そういうコンセプトの商品ですから、ぴったりではないでしょうか?

ブログ開設のご挨拶

当ブログをご訪問いただきありがとうございます。

私のホームページから Mac OS X 関係の情報を独立させ、ブログ化しました。やや古くなっている情報などは、移行時に見直して、最新の事情に合うように変更してあります。JAIST を去って久しいので、ホームページを今後どうしていくかという問題は発生しているところですが、とりあえずコンテンツを減らして、問題そのものを小さくしています…。

このブログでは、Mac OS X と iPhone / iPod touch を使っていく上で発生した問題とその解決策、運用ノウハウなどを公開して行く予定です。今後ともよろしくお願いいたします。

Mac OS X のスリープモードの変更 (sudoers)

Mac OS X のスリープモードの変更には /usr/bin/pmset を使う。管理者権限が必要なので、GUI レイヤーから行おうとすると、若干の問題が生じる。そこで、スリープモードの変更に限って、管理者パスワードなしで行えるように設定する。

以下には、お使いの Macintosh を安全でない設定に変更する方法が書かれています。Mac OS X のスリープモードの違いを理解した上で、自己責任で設定を変更してください。

設定

sudo の設定ファイルである /etc/sudoers を編集する。sudoers に構文エラーがあると、sudo が実行できなくなるので、必ず以下に示すように visudo を使って編集する。visudo は編集終了後に構文検査を実行し、エラーがある場合は、更新するかどうか確認を求めてくる。

% sudo visudo

vi の操作については、ここでは解説しない。/etc/sudoers のファイルに、次の 1行を追加する。追加する場所は、サンプルの手前。

user ALL=NOPASSWD:/usr/bin/pmset -a hibernatemode ?

userには、スリープモードの変更を許可したいユーザ名を指定する。

この設定により、次のようにスリープモードの変更ができる。

% sudo pmset -a hibernatemode 0

スリープユーティリティ

スリープモードの変更が可能になったので、次のようなスクリプトがユーザモードで実行可能である。

スリープさせるスクリプト catnap は以下の通りである。

#!/bin/sh
/usr/bin/sudo /usr/bin/pmset -a hibernatemode 0
/usr/bin/pmset sleepnow

セーフスリープさせるスクリプト safesleep は以下の通りである。

#!/bin/sh
/usr/bin/sudo /usr/bin/pmset -a hibernatemode 3
/usr/bin/pmset sleepnow

ハイバネーションさせるスクリプト hibernate は以下の通りである。

#!/bin/sh
/usr/bin/sudo /usr/bin/pmset -a hibernatemode 1
/usr/bin/pmset sleepnow

後は、これらのスクリプトを GUI レイヤーから呼べるようにすればよい。その方法は様々であるが、清野はクラシカルなアップルメニューが好きなので、FruitMenu (US $12.00) を使用している。

FruitMenu の設定により、このようなアップルメニューが得られる。