Я использую следующее какулучшение внешнего вида\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
.