2007年12月26日水曜日

TeX — upLaTeX のインストール

upLaTeX をインストールしてみた.
僕が現在 MacOS X で使っている日本語 TeX の構成は teTeX-3.0/ASCII pTeX-3.1.8.1.
場所は/usr/local/teTeX/
まずは,このディレクトリの名前を変えて退避させておく.
 sudo mv /usr/local/teTeX /usr/local/teTeX-stable
 また,自分のホームに.texmf-config,.texmf-var などのディレクトリがあれば,それも名前を変えて退避させておく.
 mv ~/.texmf-var ~/.texmf-var-stable
 mv ~/.texmf-config ~/.texmf-config-stable

 upLaTeX のインストール後は,upLaTeX のディレクトリと teTeX-stable を適宜切替えて使えるようにしよう.

以下の記述において,$TEXMF=/usr/local/teTeX/share/texmf である.

■ インストール
 インストールしたのは uptex-0.19.
 まずuptex-0.19.tar.gz(patch本体), uptex_font-0.19.tar.gz(フォントのバイナリー)をダウンロード.
 インストールの手順は,先の uptex-0.19.tar.gz を展開して得られる 00readme_jis.txt に書かれている.特段トラブルもなくインストールは完了した.以下,その手順.

■必要なファイルの準備
uptex-0.19.tar.gz(patch本体)
uptex_font-0.19.tar.gz(フォントのバイナリー)
ptetex3-20071214.tar.gz
tetex-src-3.0.tar.gz
tetex-texmf-3.0po.tar.gz
cm-super.zip
cbfonts.zip
unicode.zip

■インストール
以下の記述において $WORK はユーザーの作業用ディレクトリを指す.また,ダウンロードしたファイルは全て $WORK にあり,以下の作業は $WORK の中にいる状態で始めるものとする.
ptetex3-20071214.tar.gz
uptex-0.19.tar.gz
 → 2つとも作業用ディレクトリ $WORK に展開
  ↓ $ tar zxvf ptetex3-20071214.tar.gz
  ↓ $ tar zxvf uptex-0.19.tar.gz
 → $WORK/uptex-0.19/patchの中身を移動
  ↓ $ mv uptex-0.19/patch/* ptetex3-20071214/.
 → my_option を編集
  ↓ $ cd ptetex3-20071214
  ↓ $ mv my_option.sample my_option
  ↓ $ vi my_option
  ↓ “35Gx”と打ち,35行目を有効化〔漢字コードをSJISに〕
  ↓ “:wq”と打ち,エディタを保存終了
 → コンパイルしてインストール
  ↓ $ unset TEXMFCNF
  ↓ $ ./0uptex.sh
  ↓ $ make font
  ↓ $ sudo make install

■ 動作確認
 サンプルは aozora-utarticle-utf8.texuptex-0.19.tar.gzに同梱)
 $ uplatex aozora-utarticle-utf8.tex # dviファイルが生成
  ⇒ コンパイル成功.
  ⇒ Mxdvi では日本語が表示されない.
  ⇒ xdvi では正常に表示される.
 $ dvips aozora-utarticle-utf8.dvi
  ⇒ コンパイル成功.
  ⇒ gv では表示が乱れる.
    なお,横書(aozora-ujarticle-utf8.tex)の方は正常に表示された.
 $ dvipdfmx aozora-utarticle-utf8.dvi
  ⇒ 以下の警告が出るものの通る.
   ** CMap has higher supplement number than CIDFont: GothicBBB-Medium
   ** Some chracters may not be displayed or printed.
   ** CMap has higher supplement number than CIDFont: Ryumin-Light
   ** Some chracters may not be displayed or printed.
  ⇒ Acrobat Reader で正常に閲覧可.


uptex-0.18/font/map/for_dvipdfmx を uptex-dvipdfmx.map と変名し,
$TEXMF/fonts/map/dvipdfm の下にコピー

以下2つの中身は同じ
/usr/lib/X11/fonts/TTF
/usr/X11R6/lib/X11/fonts/TTF

■ ・・・・
UniJIS-UTF16-H などの CMap ファイルが
 /usr/local/share/ghostscript/8.53/Resource/CMap       ・・・(A)
の中に無かったので,TeX Wiki: OTF の 導きにより
 ftp://ftp.oreilly.com/pub/examples/nutshell/cjkv/adobe/
から aj16.tar.Z 頂戴し,展開したファイルを上記のディレクトリ CMap 内に格納.
 《補足》このサイトには ag15.tar.Z, ac15.tar.Z, ak12.tar.Z など,中国語や韓国語の CMap ファイルも置いてある.いずれ使う機会があれば参考に.

 “aj16”にはなんとなく見覚えがあるので調べてみると,やはりあった.内山氏の方法で teTeX/pTeX をインストールするとき,dvipdfmx の導入段階で使ったファイルだった.
 このときは,$TEXMF/dvipdfm/CMap の中に入れよとの指示だったのでそうしたが,uplatex のパッケージでは,CMap ファイルが (A) の中にあることを前提に,このディレクトリへのシンボリックリンクを ghostscript という名で $TEXMF/fonts/cmap の中に置いている.それで UniJIS-UTF16-H などが行方不明になった訳か.

 やはり CMap ファイルは ghostscript サイドで管理するのが妥当だなと思う.そこで,teTeX-stable の方も $TEXMF/dvipdfm/CMap の中へ直に CMap ファイルを置くのは止める事にしよう.リンクで対応すべし《宿題》.




README
insomnia: upTeX/upLaTeX 0.10 インストール

% ディレクトリ $PREFIX/share/texmf/dvipdfm 内の dvipdfmx.cfg を編集し,
% 最後の行に f otf-hiragino.map f hiraginox.map を追加
 cd $PREFIX/share/texmf/dvipdfm
 cp dvipdfmx.cfg dvipdfmx.cfg.org
 $PREFIX/share/texmf/dvipdfm/dvipdfmx.cfg

 サンプルに aozora-ujarticle-utf8.texuptex-0.18.tar.gzに同梱)を用いてコンパイルしてみる.
  $ uplatex aozora-ujarticle-utf8.tex
  $ dvips aozora-ujarticle-utf8.dvi
  $ dvipdfmx aozora-ujarticle-utf8.dvi

【試行1】まず,insomnia に書かれている方法を試してみた.

 % cd $HOME/src/uptex-0.18/font/map
 % cp for_dvipdfmx uptex-dvipdfmx.map
 % cp for_dvips uptex-dvips.map
 % sudo mkdir $PREFIX/share/texmf/fonts/map/dvips/uptex
 % sudo cp *.map $PREFIX/share/texmf/fonts/map/dvips/uptex/.
 % sudo mktexlsr
 % sudo updmap --nomkmap --enable KanjiMap=uptex-dvipdfmx.map
 % sudo updmap --nomkmap --enable KanjiMap=uptex-dvips.map
 % sudo updmap

 《動作チェック》
 $ uplatex aozora-ujarticle-utf8.tex
  ⇒成功.しかし Mxdvi では日本語が表示されない.
 $ dvips aozora-ujarticle-utf8.dvi
  ⇒成功.しかし gv ではエラーが発生して表示できない.
 $ dvipdfmx aozora-ujarticle-utf8.dvi
  ⇒以下の警告が出るものの通る.できた PDF は Acrobat Reader で閲覧可.
   CMap has higher supplement number than CIDFont: GothicBBB-Medium
   Some chracters may not be displayed or printed.
   CMap has higher supplement number than CIDFont: Ryumin-Light
   Some chracters may not be displayed or printed.

 《原因調査》
cat uptex-dvipdfmx.map
$ cat uptex-dvipdfmx.map
urml UniJIS-UTF16-H !Ryumin-Light
urmlv UniJIS-UTF16-V !Ryumin-Light
ugbm UniJIS-UTF16-H !GothicBBB-Medium
ugbmv UniJIS-UTF16-V !GothicBBB-Medium

uprml-h UniJIS-UTF16-H !Ryumin-Light
uprml-v UniJIS-UTF16-V !Ryumin-Light
upgbm-h UniJIS-UTF16-H !GothicBBB-Medium
upgbm-v UniJIS-UTF16-V !GothicBBB-Medium
uprml-hq UniJIS-UCS2-H !Ryumin-Light
upgbm-hq UniJIS-UCS2-H !GothicBBB-Medium

upstsl-h UniGB-UTF16-H !STSong-Light
upstsl-v UniGB-UTF16-V !STSong-Light
upstht-h UniGB-UTF16-H !STHeiti-Regular
upstht-v UniGB-UTF16-V !STHeiti-Regular
upmsl-h UniCNS-UTF16-H !MSung-Light
upmsl-v UniCNS-UTF16-V !MSung-Light
upmhm-h UniCNS-UTF16-H !MHei-Medium
upmhm-v UniCNS-UTF16-V !MHei-Medium
uphysmjm-h UniKS-UTF16-H !HYSMyeongJo-Medium
uphysmjm-v UniKS-UTF16-V !HYSMyeongJo-Medium
uphygt-h UniKS-UTF16-H !HYGoThic-Medium
uphygt-v UniKS-UTF16-V !HYGoThic-Medium






■ Mac で ps2pdf を使うときの CIDFmap 設定例
  →~taiji at gyve
■ 複数の TrueTypeフォントを切替えて使う方法
  →ワープロユーザーのためのLaTeX入門 by 大友康寛(「LaTeX組版ハンドブック」の著者)

2007年12月25日火曜日

TeX — 日本語名のファイルを扱いたい

 巷では,TeX 文書のソースファイル名を日本語にするなんてことは余り推奨されていない.しかしそれはあくまで TeX 自体と OS の技術的都合から派生する問題である.エンドユーザーにとっては,ファイルの名前は日本語にしておいた方が圧倒的に管理しやすい.日本語ならファイル名が短くても内容を的確に表現することができるし,検索もしやすい(*1).だからユーザーにとっては日本語ファイル名を使う方が生産的であり,望ましい.そこで,僕は Mac OS9 や Windows で TeX を使うときは実際そのようにしている.

 ところが,MacOS X になってから日本語のファイル名が使えなくなってしまった.具体的には,TeX のソースファイルの中で ¥includegraphic¥input などのコマンドにより外部ファイルを読込む場合,ファイル名やパス名に日本語が入っているとファイルが見つけられず,コンパイルができない.

 その理由は,Mac OS X が複数の文字コードを状況によって使い分けていることにある.OS X はファイル名を UTF-8 で管理しているが,テキストファイルの中身は Shift JIS になっている.
 例として,次の記述:
 ¥input{漢字.tex}
を含む,Shift JIS でエンコードされたソースを Shift JIS ベースの TeX コンパイラにかけた場合について考えよう.

 ファイル名 “漢字.tex” は Shift JIS によって
  8A BF 8E 9A 2E 74 65 78 
   (16進表記;下線部が「漢字」に相当)
とエンコードされているので,コンパイラはこのデータ列をOS X に渡してファイルを開くようリクエストする.ところが OS X は “漢字.tex” という名前を UTF-8 で
  E6 BC A2 E5 92 97 2E 74 65 78 
   (16進表記;下線部が「漢字」に相当)
とエンコードし,このデータ列を名前として登録しているから,両者が一致せず,ファイルは存在しないものと見なされてしまう.

 コンパイルの最中に外部ファイルを読込む必要が生じたとき,ファイルの名前がコンパイラ内部で UTF-8 形式になっていれば,問題は解決する.したがって, UTF-8 で内部処理が行える TeX コンパイラがあれば良い.そこで,そのようなブツが存在するのか探索した.調査の結果はTeX — utf-8 への対応にまとめた通りである.

 ここでは,各プログラムが本懸案の打開策となり得るかどうか整理しておこう(pTeX の Unicode 化に向けた動きのコンセプトからは大きく逸脱した用途ではあるけれども).

■ pteTeX3
 platex のオプション -kanji=UTF8 を指定すると,UTF-8 形式のソースがコンパイルできる.内部では UTF-8 を EUC に変換してから組版を行う.したがって,ここで意図する目的には使用できない.

■ XeTeX
 もともと Mac OS X 用に開発された UTF-8 ベースの TeXシステム.日本語も一応扱えるようだが,日本語の組版ルールをよく知っているわけではない等,扱いは不完全で,現状ではまだまともではない模様。よって見送る.

■ Utf82TeX
 本家の説明に「Utf82TeX は,UTF-8 文字テキストを pTeX で利用可能な形式に変換するプログラム」とある.プリプロセッサ的な役割を果たすという事であろうか.組版を行うのが pTeX なのであれば,やはりここで考えている目的には使えない.

■ upLaTeX
 本家の冒頭に「ASCII pTeX の内部コードを Unicode にする実験」とある.少し分かり難い表現だが,説明を読むと,UTF-8 形式のソースをそのまま内部処理して組版を行えるということのようだ.ビンゴ! これこそ探し求めていたものに他ならない.

 それでは早速 upLaTeX をインストールしてみよう.その記録は次項で.

(*1)
 英語だと,まず名前を付ける時点で無駄な時間を要してしまう.内容を的確に表す英語名を付けるにはそれなりの素養が必要だ.いい名前が思い浮かばない時はあきらめてつい適当な名前をつけてしまうが,これだと後日そのファイル名を見ても中身が何なのかさっぱり分からない.逆に,ファイルを検索するときには,適切な名前が付いていないファイルが候補に挙がらなくなってしまう.あれこれと検索語を変えて見つかるまで探し続けざるを得ない.さらに,もしその時付けた英語名にスペルミスでもあろうものなら,検索しても絶対に引っかからない.膨大なファイルの中から目的のファイルが見つけられないときのストレスと無駄な時間は仕事にとって大きな損失だ.だからファイル名は日本語に限る.
さらに,日本語なら一瞥するだけで名前の意味を了解できるが,英語だと文字をある程度読まなければならない.これは漢字が表意文字であることから来る大きなメリットだ.

2007年12月22日土曜日

TeX — utf-8 への対応

ptetex3
土村氏が2006/05/24 以降の ptetex3 でUTF-8への対応を試みている.→UTF-8対応(2)
これに関する奥村氏のコメント:
UTF-8への移行
EUC-JPからUTF-8への移行をためらう最大の原因は,pTeXが未対応なためであった。ところがptetexでptex -utf8,platex-utf8のコマンドができたので,(ほとんど)ためらう理由はなくなった。Mac OS XのターミナルをUTF-8にし,Linuxでもexport LANG=ja_JP.utf8し,.emacs.elもeuc-jpをすべてutf-8に変換した。


このパッケージは,utf-8 のコードを読込んで内部で EUC に変換する方法をとっている.従って,¥input{<file_name>}などのファイル名も EUC にしたあとでファイルを読込もうとするから,ファイル名が一致せず読込めない.

Utf82TeX

XeTeX
 →TeX wikiに解説あり.

upLaTeX
ASCII pTeXの内部コードをUnicodeにする実験.

Doc. Labo
Iimori's home page
MacOS X WorkShop の使い方

【参考記事】
\と¥の区別 backslash と円マークを表す内部コードがエンコーディングによってどう違うかを一覧表にしてまとめてある.

terminal — 日本語表示

Mac OS Xではファイル名はUTF-8、Unixに由来する部分では日本語EUC、従来のMac OSに由来する部分ではShift-JISと、複数の文字コードが混在して使用されている。〔出典:Mac OS X ターミナルでの日本語の扱いについて

ls コマンドにはオプション -v を付加する.
~/.bashrcなどの初期実行ファイルに
 alias ls='ls -v'
と書いておけば楽.

~/.inputrcに以下の記述を追加.
 set meta-flag on
 set convert-meta off
 set input-meta on
 set output-meta on


~/.bashrcに以下の記述を追加
 export LANG=ja_JP.UTF-8 # ←ここは en_US.UTF-8 でもよい
 export LESSCHARSET=utf-8


引用元:
古橋貞之の日記:開発環境としてのMac OS Xカスタマイズ
 Terminal の他,iTerm,SSHKeychain 等の記述もある
groundwalker.com:Terminalの日本語環境設定

plist の編集

Mac OS X:プロパティリスト(.plist)を上手に編集する方法
 /Developer/Applications/Property List Editor をつかう
 Terminal 上で pico などのエディタを使う
 エンコーディングを UTF-8 で開けばテキストエディットなどでも編集可.

plist の内容は defaults コマンドで閲覧・編集できる.
以下,Studio OneRoadの記事を引用.
OS X の Terminal から
 defaults write com.apple.Terminal TerminalOpaqueness .7
とすると、
 ~/Library/Preferences/com.apple.Terminal.plist

 TerminalOpaqueness
 .7
という行が追加される。

2007年12月21日金曜日

OS X に ApplWindow の代替品はないのか?

OS X は開いたフォルダへのアクセスがし難くてしようがない.Finder のウィンドウメニューへアクセスするにはふた手間かけなければいけないから面倒だ.また,F9 や F10 の機能は確かに面白いが,フォルダの数が増えてくるとアクセシビリティが悪くなる.

OS 9 には ApplWindow というアプリがあって,ホットスポット(事前に登録した画面上の場所;左下角,右側など)にマウスをもっていくだけで開いているフォルダの一覧を表示させることができたが,OS X 版はないようだ.

そこで代替品を探すことに.

■ Quicksilver

ランチャーとして一番もてはやされているのはどうやらこのアプリらしい.

BLACKTREE 本家サイト
オープンソースになった.色々いじってる人もでてきた→Cleaning up Quicksilver

「マイコミジャーナル:クリエーターのためのライフハック」の解説記事
(24) コマンドランチャーだけではもったいない強力フリーウェア
(25) キーボードとマウス操作を駆使してさらに便利に活用しよう
(26) プラグインでカスタマイズ、自分だけのQuickSilverを作ろう

「Macの手書き説明書」の解説記事
ブログ「J.S. Mach」の紹介記事
kei3.jp | head -n 10 diaryの紹介記事
Quicksilver で日本語入力を可能にする Automator ワークフロー

確かに作者のコンセプトはすばらしく,さまざまな可能性を持っていることは間違いないと思う.しかし,日本語に対応していないため,日本語名のフォルダを一発で引き出す事ができない.残念ながらこれでは困る.

■ DragThing
 →The official Drag Thing Home Page

■ 机の隅つつき
 →隅つつきページ

「関心空間」の口コミ

■ ASM
 →vercruesse|de

遂に見つけた! これこそ僕が欲しかった機能を具現化したものだ!!

教えてくれたのはHoshi's Mac OS X Page Thanks!

メニューバーの右端に,起動中のアプリケーションをリストアップしたプルダウンメニューが追加される.各アプリのウィンドウもサブメニューとして表示され,任意のウィンドウへ楽々移動できる.こりゃ嬉しい(^_^)
特別機能のClassicウィンドウモードをオンにすると,Finder のウィンドウかデスクトップをクリックすると,Finder で開いている全てのウィンドウが表示される.やっぱりこっちの方が使いやすいや.なぜこれがOS Xの標準ではないのか……極めて不思議.


参考記事
私のランチャーの使い方について
Mac買ったらすぐにいれるフリーソフトウェア まとめ:ランチャ

2007年12月19日水曜日

引っ越して来ました

楽天ブログは過去記事の閲覧機能が余りにもチープなので,こっちに移行することに決定!
やっぱり google が提供するサービスは情報の管理がしやすくていいや.
あっちに書き貯めた記事も,ちまちまとこっちに転記してゆくことにしよう…

2007年12月18日火曜日

TeX Tools for mi の副作用

 OS X Tiger で TeX 文書を作成するにあたり,mi と TeX Tools for mi を使う事にしたのだが,ある時突然,妙な事が起こるようになってしまった.

 TeX Tools for mi は自動的に Terminal のシェルを立ち上げて platex コマンドを実行するが,その際シェルに与えられた設定(ウィンドウの色と透明度や実行するコマンド)がいつのまにか Terminal のディフォルトになってしまったのだ.ウィンドウの色や透明度の設定は Terminal の「ウィンドウ設定」で元に戻す事ができたが,新しいシェルを起動した時に自動実行されるコマンド群の設定が削除できない.つまり,シェルを起動するたびに,とある TeX のソースが一々コンパイルされるという大変馬鹿げた状況が回避できなくなってしまったのだ.

 .bash_profile や .bashrc など,シェルが起動される度に呼ばれるファイルをチェックしてみたが,別段変更された形跡はない.また,Terminal のメニューから設定できる項目をいくら探してもそれらしいものは見当たらない.TeX Tools for mi 側の設定ファイルを削除してみたりもしたが,無駄だった.
 原因が分からないまま,Terminal を起動するたびに platex が実行される間抜けな状況に甘んじる日々が一週間程も続いた頃,ようやく原因が分かった.~/Library/Preferences の下にある Terminal の設定ファイル com.apple.Terminal.plist が,TeX Tools for mi によって書き換えられていたのだ.

 この事は,'*.plist' の中身が defaults というコマンドで編集できるという情報を得た結果,分かった.Terminal で
  defaults read com.apple.Terminal
を実行すると,com.apple.Terminal.plist に設定されているパラメータが一覧できる.その中に,ExecutionString というキーがあって,そこにシェルを起動した際実行されるコマンドのリストが設定されていたのだ.そこで,
  defaults delete com.apple.Terminal ExecutionString
を実行して,このキーを削除したところ,問題が解決された.めでたしめでたし.

なお,この問題は mi + Terminal 以外の場合にも発生する模様.例えば ここ.他に,2ch でも同様のトラブルで困った,という投稿有り.

ブックマーク
TeX on Mac OS X:GNU Stow を使って teTeX + pTeX をインストールする手順
このページの存在を知っていれば,TeX のインストールがもっと楽になっていただろう…(涙