\caption против нового setminus

\caption против нового setminus

Я использую следующее какулучшение внешнего вида\setminus:

\newcommand\rsetminus{\mathbin{\mathpalette\rsetminusaux\relax}}
\newcommand\rsetminusaux[2]{\mspace{-4mu}
\raisebox{\rsmraise{#1}\depth}{\rotatebox[origin=c]{-20}{$#1\smallsetminus$}}
 \mspace{-4mu}
}
\newcommand\rsmraise[1]{%
  \ifx#1\displaystyle .8\else
    \ifx#1\textstyle .8\else
      \ifx#1\scriptstyle .6\else
        .45%
      \fi
    \fi
  \fi}

\rsetminusВ математическом режиме работает нормально, но внутри подписи к рисунку в математическом режиме выдает ошибку, что «аргумент \@captionимеет лишний }».

Я добавил \protect перед \rotatebox. Никакого эффекта. У меня есть другая команда, которая перемещает \raiseboxгреческую букву хи вверх на обычную линию. Она имеет перед \protectи \raiseboxотлично работает внутри подписи к рисунку в математическом режиме.

Я также пробовал с \ensuremathдо \protect. Совет?

решение1

Ошибка, такая как

argument of \@caption has an extra }

обычно означает «у вас есть хрупкая команда в аргументе к \caption. Поскольку \mathbinне является хрупким, виновником должен быть \mathpaletteили \rsetminusauxи действительно этот использует \raiseboxкоторый является хрупким.

Решение:

\DeclareRobustCommand\rsetminus{\mathbin{\mathpalette\rsetminusaux\relax}}

вместо \newcommand.

Связанный контент