我经常发现我想创建一个宏,例如使用以下语法的派生宏:
\def\dd #1;#2;{ return... }
但是,我希望它检查它是否是内联数学,例如当数学被包裹在两个美元符号之间时$ ... $
,或者它是否在数学块中,例如\[...\]
或align
或equation
环境。如果是后者,那么我希望它排版
\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}