Como cancelo um expoente em uma equação usando siunitx?

Como cancelo um expoente em uma equação usando siunitx?

O exemplo mínimo de trabalho abaixo demonstra o problema. Eu tenho uma série de equações formatadas como a primeira abaixo, onde digamos que o numerador tem metros quadrados e o denominador tem metros. Eu gostaria de cancelar o expoente, mas agora tenho que dizer "m m" e cancelar o primeiro "m", o que parece meio idiota.

\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}

Obviamente, se fossem metros cúbicos divididos por metros, eu gostaria de cancelar o 3 e seguir com 2, mas ainda não tive esse problema. Agradeço antecipadamente!

Responder1

Como Mico mencionou, provavelmente é mais fácil simplesmente pular siunitxtudo e configurá-lo manualmente. Se você realmente deseja continuar usando siunitx, você pode tentar usar algum kerning para colocá-lo \cancelno lugar certo. Por exemplo, você pode usar o par de macros 1 abaixo para riscar ofinalsubscrito em uma unidade.

\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}}}

O primeiro apenas risca o expoente, enquanto o segundo também coloca a potência de substituição em texto pequeno acima do cancelamento. Por exemplo:

\[
    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}
\]

Captura de tela da saída do código acima

Observe que ambos precisam que você forneça um espaço reservado para o número que deseja cancelar. Isso é para garantir que a forma e a posição corretas do cancelamento ocorram.


1 Assim como acontece com qualquer trecho de código, ele é apenas levemente testado e pode falhar de maneiras imprevisíveis.

informação relacionada