名前: ZR 日時: 2007-10-29 11:57:44 IPアドレス: 124.102.69.*
>>49981 そもそも何故そのような回りくどそうな方法を用いるのかが分かりませんが... # \thesection が "\thechapter.\@arabic\@secion" と決まっているのなら # "." の後ろにあるのは "\@arabic\@section" (つまり \arabic{section}) # に決まっているし、もし \thesection が変動する状況を想定しているなら # そもそも "." が存在するかも不明ですし。 原因を説明しておきます。 \expandafter\部分をとる{\ref{王}} では、"\部分をとる" の展開が遅延されて、次の "{" を展開しようとしますが、 これは展開不能なので、結局、状況は \部分をとる{\ref{王}} に戻ってしまって、失敗します。 そこで、 \expandafter\部分をとる\expandafter{\ref{王}} とすると、最初に "\ref" が展開されるので上手くいきそうですが、次の理由 で失敗するでしょう。 - "\ref" の展開結果がいきなり "1.2" になる訳ではない。 (\ref の定義を確認してください) - 仮に、"\部分をとる{1.2}" という状況に持ち込めたとしても、今のマクロ 定義では "1.2" が #1 になって意図と合わない。 この場合、次のようなものが必要でしょう。 - \edef - 終端トークンのマッチング (LaTeX ソースの \@nil の使い方を参照)
この書き込みへの返事: