名前: トノ 日時: 2002-09-18 18:20:17 IPアドレス: 150.35.254.*
>>11042 とりあえず、 \uppercase{\xskipchar{20pt}{abcde}} とすれば、お望みの出力が得られるのだろうと思いますが、 これをさらに他のコマンドの引数に使うような場合は、 うまくいかないこともあるはずですね。残念ながらそこまで 対応できる解決策は思いつきません。 もとの \xskipchar{20pt}{\uppercase{abcde}} という記述でうまくいかないのは、\uppercase が展開される(あるいは 「展開可能な」)コントロール・シーケンスではないからでしょう。 \xskipchar の定義中で \edef\kari{#1/#2/} にあてはめた場合、 \edef\kari{20pt/\uppercase{abcde}/} となります。\uppercase が展開されるコントロール・シーケンスであれば、 この結果は \def\kanri{20pt/ABCDE/} のようになりそうなところですが、残念ながら展開されないため、 この部分は \def\kari{20pt/\uppercase{abcde}/} と同じになってしまいます。従って、\@xskipchar の呼び出しは \@xskipchar20pt/\uppercase{abcde}/\relax の形になり、#2 の部分を \@tfor で切り分けると、「\uppercase」と 「{abcde}」に分割されてしまいます。結局、\makebox の引数中に \uppercase が置かれ、その後ろに左ブレースが存在しないため、 エラーになるのでしょう。
この書き込みへの返事: