制作宏来检查其数学模式的类型

制作宏来检查其数学模式的类型

我经常发现我想创建一个宏,例如使用以下语法的派生宏:

\def\dd #1;#2;{ return... }

但是,我希望它检查它是否是内联数学,例如当数学被包裹在两个美元符号之间时$ ... $ ,或者它是否在数学块中,例如\[...\]alignequation环境。如果是后者,那么我希望它排版

\frac{\mathrm{d} #1 }{\mathrm{d} #2 }

如果它是内联数学,那么$ ... $我希望它排版

\mathrm{d} #1 / \mathrm{d} #2.

我怎样才能做到这一点?

答案1

\mathchoice原语是为本次测试而设计的。

在此处输入图片描述

\documentclass{article}
\textwidth4cm

\def\zz#1#2{\mathchoice
{\displaystyle \frac{\mathrm{d} #1 }{\mathrm{d}#2}}%
{\textstyle \mathrm{d} #1 / \mathrm{d} #2}%
{\scriptstyle \mathrm{d} #1 / \mathrm{d} #2}%
{\scriptscriptstyle \mathrm{d} #1 / \mathrm{d} #2}%
}
\begin{document}

$\zz{x}{y}$

\[\zz{x}{y}\]

\end{document}

相关内容