Re: 付録、目次に関して

名前: .
日時: 2012-01-07 03:38:03
IPアドレス: 59.134.169.*

>>56533 \expandafter は「1 回しか」展開しません. \appendix 適用時(\def\@chapapp{\appendixname} となっている状態)では, \expandafter\ifx\@chapapp\appendixname は \ifx\appendixname\appendixname となり(これで \expandafter の処理は終了),この段階で \ifx の後に続いている 2 個のトークン \appendixname,\appendixname の比較を行います (それらは明らかに同一なので,比較結果は「真」となります). # 注意:\ifx 自身は何も展開しません(\if,\ifcat 等とは異なります). # 2 個のマクロが \ifx で比較される際には,それらのマクロの「置換テキスト」 # (および引数の数・書式指定,\long/\outer の有無)が比較されます. 「\def\@chapapp{\relax\relax 第}」とした場合についての動作(練習問題1)は まだ練習問題のままにしておきます. ・練習問題1のための準備問題(\expandafter について): 3 個のマクロ \macroA,\macroB,\macroC が \def\macroA#1{[#1]} \def\macroB{\macroC\macroC} \def\macroC{XYZ} のように定義されているとき,次の(a)〜(c)の記述はどのような出力を与えますか. 答えは実際にそれらの記述を用いた文書をタイプセットすればわかりますが, ここでは「思考実験」で結果を割り出してください. (a) \macroA\macroB (b) \expandafter\macroA\macroB (c) \expandafter\expandafter\expandafter\macroA\macroB # そろそろ,「『TeX のマクロ作成に関する文法事項』をまともに扱った解説書を # お読みください」と申し上げるべきでしょうか. # 何語で書かれたものでも構いませんよ(さすがに,日本語で読めるものに限定すると # (決して皆無ではありませんが)選択肢が限られすぎますので). なお, >(でもこれだと「余計なごみ」が入ってしまうのでしょうか…?) に関しては,私が「余計なごみが入る」と述べたのは 「\def\@chapapp{\relax\relax 第} という定義のもとで \expandafter\ifx\@chapapp 云々 を処理させた場合」(練習問題1の設定)についての話です. # 件の \checkifappendix の場合,\ifx のところでは余計なものは生じないでしょう. # もっとも,\edef\@tempb{\appendixname} の直後の行末(に由来する空白文字)が # ごみとなる可能性はありますが,それは別の話です.

この書き込みへの返事:

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