Re: タブ文字のカテゴリーコードを変更したものの挙動について

名前: 北見 けん
日時: 2008-10-14 21:06:06
IPアドレス: 211.128.71.*

>>52136 ご教示ありがとうございます。 > - 末尾の改行文字を除去 > - その直前にある空白文字(空白・タブ、他も?)の連を除去 > (空白とかタブは文字そのもののことで catcode は無関係) 『TeXbook』の8章にある部分ですね。その解説を読むと、 除去するのは「空白文字(文字コード32)」という具合に解説されているので、 タブ文字(文字コード9)はどうなるのかわからなかったのでした。 ただ、『TeXbook』は解説の便宜のために多少の嘘を交えてあるとのことなので、 このあたりの説明は実際の動作と異なるのかもしれないですね。 ともあれ、行末の空白・タブはまとめて除去されて、トークン化の処理にはまわされない ということで納得することにします。ありがとうございました。 以下は蛇足です。 ZRさんは「タブ、他も?」と書かれていますが、 どこかにはっきりとした記述があったりするのでしょうか。 他に『TeX by topic』(\endlinecharの説明のあたり)も見てみたのですが、 やはり空白は除去されるという程度でした。 読み込みのところでタブが空白と一緒に除去されていることを確かめようと、 TeX のソースを見てみてみました。ソースを見ると、 文字コード0から32までの文字はそのまま除去されずに残されるように見えるのですが、 実験(バイナリエディタで32以下の文字コードを行末に書き込んだファイルを作って TeX に処理させてみました)してみると、 文字コード9,10,13だけが除去されているようなので、 またよくわからなくなってしまいました。 # ソースでは、行末の空白文字の塊を除去するルーチンは input_ln という関数だと思います。 # この中で buffer[last-1]<>" " という条件判断をしているところがありますが、 # buffer に収められるのは xord[f^] であって、読み込んだコード(f^)が直接 # 収められるのではないようです。xord[0]からxord[31]という配列は invalid_code という # 値で埋められているので、空白文字ではないという判断で残されるように見えます。

この書き込みへの返事:

お名前
題名 
メッセージ(タグは <a href="...">...</a> だけ使えます。適宜改行を入れてください)