Как отменить показатель степени в уравнении с помощью siunitx?

Как отменить показатель степени в уравнении с помощью siunitx?

Минимальный рабочий пример ниже демонстрирует проблему. У меня есть несколько уравнений, отформатированных как первое ниже, где, скажем, числитель имеет квадратные метры, а знаменатель — метры. Я хотел бы отменить показатель степени, но сейчас мне приходится говорить «м м» и отменять первое «м», что выглядит довольно глупо.

\documentclass{article}
\usepackage{siunitx}
\usepackage{cancel}
\begin{document}
    How can I cancel out the exponent in the numerator of the following equation?
    \begin{equation}
        W = \frac{\SI{32}{\square\meter}}{\SI{4}{\meter}} = \SI{8}{\meter}
    \end{equation}
    If instead of using \si{\square\meter} I use \si{\meter\meter}, it's easy:
    \begin{equation}
        W = \frac{\SI{32}{\cancel\meter\meter}}{\SI{4}{\cancel\meter}} = \SI{8}{\meter}
    \end{equation}
\end{document}

Очевидно, если бы это были кубические метры, деленные на метры, я бы хотел отменить 3 и поставить после нее 2, но у меня пока такой проблемы не было. Заранее спасибо!

решение1

Как сказал Мико, вероятно, проще просто пропустить siunitxвсе вместе и просто установить вручную. Если вы действительно хотите продолжать использовать siunitx, вы можете попробовать использовать кернинг, чтобы поместить \cancelв нужное место. Например, вы можете использовать пару макросов 1 ниже, чтобы вычеркнутьфиналнижний индекс в единице.

\usepackage{calc}

\newdimen{\KernAmount}

\newcommand{\cancelsup}[2]{%
  \setlength{\KernAmount}{\widthof{{\scriptsize \cancel{#1}}}*\real{-1}}%
  #2\kern\KernAmount\vphantom{}^{\cancel{\phantom{#1}}}}

\newcommand{\canceltosup}[3]{%
  \setlength{\KernAmount}{\widthof{{\scriptsize \cancel{#1}}}*\real{-1}}%
  #3\kern\KernAmount\vphantom{}^{\cancel{\phantom{#1}}}\vphantom{}^{^{#2}}}

Первый просто зачеркивает показатель степени, а второй также помещает заменяющую степень мелким текстом над сокращением. Например:

\[
    W = \frac{\cancelsup{2}{\SI{32}{\square\meter}}}{\SI{4}{\cancel\meter}} = \SI{8}{\meter}
\] \[
    W = \frac{\canceltosup{3}{2}{\SI{32}{\cubic\meter}}}{\SI{4}{\cancel\meter}} = \SI{8}{\square\meter}
\]

Скриншот вывода для кода выше

Обратите внимание, что в обоих случаях вам необходимо указать заполнитель для числа, которое вы собираетесь отменить. Это необходимо для того, чтобы убедиться, что отмена имеет правильную форму и положение.


1 Как и для каждого фрагмента кода, он был лишь поверхностно протестирован и может выйти из строя непредсказуемым образом.

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