![扩展/修改 cool 包中的命令](https://linux22.com/image/328039/%E6%89%A9%E5%B1%95%2F%E4%BF%AE%E6%94%B9%20cool%20%E5%8C%85%E4%B8%AD%E7%9A%84%E5%91%BD%E4%BB%A4.png)
我开始用这个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)
。