クールなパッケージからのコマンドの拡張/変更

クールなパッケージからのコマンドの拡張/変更

cool私は数学、特に積分、また三角関数のためにこのパッケージを使い始めました。例えば、 \Sin[2]{x}yieldingのようなコードを使用して、正弦二乗関数のようなものを取得したいと思いますsin²(x)。また、関数を追加したいのですsincが、例えば、コマンドを再定義するだけで済むことはわかっています\Sinが、パッケージとの一貫性を保ちたいと思っていますcool

coolパッケージ実装ドキュメントに従う1愚かにも、私は次のことを試しましたが、うまくいきませんでした。

\documentclass{article}
\usepackage{cool}
\renewcommand{\Sin}[2][]{\sin^{#1}\COOL@decide@paren{Sin}{#2}}
\newcommand{\COOL@notation@SincParen}{p}
\DeclareMathOperator{\SincSymb}{Si}
\newcommand{\Sinc}[1]{\SincSymb\COOL@decide@paren{Sinc}{#1}}
\begin{document}
  \begin{align}
    \Sin{x} \\ % should produce the normal cool sin
    \Sin[2]{x} \\ % should produce sin^2
    \Sinc{x} % should produce sinc
  \end{align}
\end{document}

もちろん、次のステップもsinc²可能になるでしょう。

どうしてこんなことが可能なのでしょうか?

答え1

まず、\makeatletterと を忘れてしまいました\makeatother。その後は簡単です:

\documentclass{article}
\usepackage{cool}

\makeatletter
\renewcommand{\Sin}[2][]{%
  \sin\if\relax\detokenize{#1}\relax\else^{#1}\fi\COOL@decide@paren{Sin}{#2}%
}
\newcommand{\COOL@notation@SincParen}{p}
\DeclareMathOperator{\sinc}{sinc}
\newcommand{\Sinc}[2][]{%
  \sinc\if\relax\detokenize{#1}\relax\else^{#1}\fi\COOL@decide@paren{Sinc}{#2}%
}
\makeatother

\begin{document}

\begin{gather*}
\Sin{x}    \\ % should produce the normal cool sin
\Sin[2]{x} \\ % should produce sin^2
\Sinc{x}   \\ % should produce sinc
\Sinc[2]{x}   % should produce sinc^2
\end{gather*}

\end{document}

どこに優位性があるのか​​分かりません\sinc^{2}(x)

ここに画像の説明を入力してください

関連情報