我喜欢定义带有可选参数的宏。例如,考虑一个微分宏:
\documentclass[11pt]{article}
\usepackage{amsmath}
\usepackage{bm}
\newcommand\drm{\mathop{}\!\mathrm{d}}
\newcommand\Drm[1]{\mathop{}\!\mathrm{d^#1}}
\begin{document}
\begin{equation}
\int\limits_0^\infty \drm t \, f(t)
\end{equation}
\begin{equation}
\int\limits_0^\infty \Drm{3} r \, g(\bm{r})
\end{equation}
\end{document}
差速器的宏取自先前的帖子。除了我自己的问题,为什么\mathop{}
在微分的定义中有一个?但其次,我如何才能实现一个将它们放在一起的宏?就像 一样\sqrt
,你可以做\sqrt{x}
或\sqrt[3]{x}
。我喜欢做\drm
或\drm[3]
。
答案1
你确定要
\newcommand\Drm[1]{\mathop{}\!\mathrm{d^#1}}
而不是
\newcommand\Drm[1]{\mathop{}\!\mathrm{d}^{#1}}
我认为这会更常见(如果上标是数字则没有区别,但请尝试) ,如果可能有两位数字,n
则肯定需要{}
左右。#1
为了使参数可选,你可以使用
\newcommand\Drm[1][]{\mathop{}\!\mathrm{d}^{#1}}
但这样会产生^{}
空的情况,从而影响间距,所以更好的是
\newcommand\Drm[1][\relax]{%
\mathop{}\!\mathrm{d}\ifx\relax#1\relax\else^{#1}\fi}
在默认情况下省略上标。