Re: #{ 形式の引数のマクロとアラインメント

名前: 北見 けん
日時: 2002-09-05 14:59:11
IPアドレス: 211.128.71.*

>>10609 なかなか難しそうですね。 『TeX book』の「Appendix D: Dirty Tricks」の中に、 「5. Brace hacks.」という項目があります。この脚注に、 項目を読み始めるときはのグルーピングのレベルは、 テンプレートの uパートを読み込んだ時点で決まる。 と、だいたいそんなようなことが書いてあります。 これと、「Chapter 22: Alignment」の内容を合わせると、 以下のようなことが起こるのがわかります。 ## あくまでも、『TeX book』を読んだ限りでは、ということです。 ## こういうデリケートな問題は、TeXのソースを読んだほうが確実なんだと思います。 ## tex.web を weave して、できた tex.tex を TeX にかけて、 ## できあがった tex.dvi を読んでみましたが、知識不足でお手上げです。 ## もっと詳しい方の解説をお待ちしています。 例えば、 \def\Macro#1#{<#1>} と定義して、 \halign{\Macro{#}\cr と使えば、テンプレートの uパートは“\Macro{”です。 この時点でグルーピングレベルが決まります。 そのあと“\Macro{”が展開されて、生じた“<>{”が読み込まれます。 “>”のあとの“{”によってグルーピングのレベルがひとつ上がります。 つまり、項目のグルーピングレベルが決まってから、項目を読みに行くまでの間に、 グルーピングレベルがひとつ上がってしまうわけです。 従って、例えば次のようなのが機能するようです。 \def\Macro#1#{} \halign{\Macro{#}\cr A\iffalse}\fi\cr B\iffalse}\fi\cr C\iffalse}\fi\cr} でも、この仕様は使いづらくはないでしょうか? このマクロ“\Macro{”は、 これ以上引数を必要としませんから先を読まなくても展開可能で、 展開したら“{”が出てくるのはわかっているのですから。

この書き込みへの返事:

お名前
題名 
メッセージ(タグは <a href="...">...</a> だけ使えます)