siunitx を使用して方程式の指数をキャンセルするにはどうすればよいですか?

siunitx を使用して方程式の指数をキャンセルするにはどうすればよいですか?

以下の最小限の動作例は、この問題を示しています。以下の最初の例のようにフォーマットされた方程式がいくつかあり、分子は平方メートル、分母はメートルです。指数をキャンセルしたいのですが、現時点では「m m」と言って最初の「m」をキャンセルする必要があり、これはちょっと馬鹿げているように見えます。

\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 乗をメートルで割る場合は、3 を消して 2 を続けます。ただし、今のところその問題は発生していません。よろしくお願いします。

答え1

siunitxMicoさんが言ったように、全部スキップして手動で設定する方が簡単かもしれません。 を引き続き使用したい場合はsiunitx、 を適切な場所に配置するためにカーニングを試してみてください。たとえば、以下のマクロ1\cancelのペアを使用してを消すことができます。最後の単位内の下付き文字。

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

最初の方法では指数を消すだけですが、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すべてのコード スニペットと同様に、これは軽くテストされているだけであり、予期しない方法で動作が中断される可能性があります。

関連情報