6 Macのユーザー辞書に数学用語を登録する

Mac 上で日本語入力をしていて、 かな漢字変換で時々希望する語がなかなか出て来なくてイライラするときがある。 面倒でも単語登録することにしているが、 今回ずっと以前 (Wnn を使っていた頃に) 作成した数学用語辞書の内容を登録してみることにした。

参考にしたのは Mac でユーザ辞書を書き出す/読み込む方法 というWWWサイト。

試しにユーザー辞書を書き出してみると
ユーザ辞書.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
        <dict>
                <key>phrase</key>
                <string>≦</string>
                <key>shortcut</key>
                <string>いか</string>
        </dict>
        <dict>
                <key>phrase</key>
                <string>≧</string>
                <key>shortcut</key>
                <string>いじょう</string>
        </dict>
        <dict>
                <key>phrase</key>
                <string>祐史</string>
                <key>shortcut</key>
                <string>まさし</string>
        </dict>
</array>
</plist>

なるほど、単純な構造をしていることが分かる。

今現在持っている ``mathdic.txt'' は次のような内容である。
% cat mathdic.txt
アーベル あーべる 人名
アーベル群 あーべるぐん 名詞
アイゼンシュタイン あいぜんしゅたいん 人名
アインシュタイン あいんしゅたいん 人名
(中略)
ワイエルシュトラス わいえるしゅとらす 人名
歪対称 わいたいしょう 名詞
和算家 わさんか 名詞

というわけで、
makeplist.awk
#!/opt/local/bin/gawk -f
BEGIN {
    printf("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
    printf("<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n");
    printf("<plist version=\"1.0\">\n");
    printf("<array>\n");
}
{
    str=$1;
    yomi=$2;
    hinshi=$3;
    printf("\t<dict>\n\t\t<key>phrase</key>\n\t\t<string>%s</string>\n\t\t<key>shortcut</key>\n\t\t<string>%s</string>\n\t</dict>\n", str, yomi);
}
END {
    printf("</array>\n</plist>\n");
}
という awk スクリプトを作って
% chmod +x makeplist.awk
% cat mathdic.txt | ./makeplist.awk > mathdic.plist

こうして出来た ``mathdic.plist'' を、 [システム環境設定] → [キーボード] → [ユーザ辞書] の ショートカットエリアにドラッグする。

ショートカットエリアというのは、 読みと文字列が並んで表示される領域のことを指すらしい。 想像だけれど、Mac を英語で使っているときは、 shortcut と読んでいる機能なのかも。

mathdic.txt の中身を久しぶりにチェックしてみたら、 数学用語以外のものも混じっていた。

mathdic.plist -- 内容には責任を持ちません。

桂田 祐史
2018-11-04