![\newcommand 的默认参数](https://linux22.com/image/368492/%5Cnewcommand%20%E7%9A%84%E9%BB%98%E8%AE%A4%E5%8F%82%E6%95%B0.png)
我已经创建了一个命令来快速为我的 ODE 类插入导数运算符,但我想将四个字段中的两个字段默认为某些值,因为它们将是最常用的,但可能需要更改。
\newcommand{\dydx}[4]{\frac{d^{#1}{#2}}{d{#3}^{#4}}}
我希望 #2 和 #3 默认分别为 y 和 x,但可以在需要时进行更改\dxdy{2}{u}{t}{2}
答案1
如果你不介意改变语法,
\documentclass{article}
\usepackage{amsmath}
\usepackage{xparse}
\NewDocumentCommand{\dydx}{O{y}mO{x}}{%
\frac
{d\ifnum#2=1\else^{#2}\fi#1}
{d#3\ifnum#2=1\else^{#2}\fi}%
}
\begin{document}
\[
\dydx{2}+\dydx[u]{2}[t]+\dydx[v]{1}+\dydx{3}[t]
\]
\end{document}
也许您会喜欢下面的方式,并得到相同的输出。
\documentclass{article}
\usepackage{amsmath}
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand{\dydx}{O{}}
{
\group_begin:
\keys_set:nn { scott/dydx } { #1 }
\scott_dydx:
\group_end:
}
\keys_define:nn { scott/dydx }
{
x .tl_set:N = \l__scott_dydx_x_tl,
y .tl_set:N = \l__scott_dydx_y_tl,
n .tl_set:N = \l__scott_dydx_n_tl,
x .initial:n = x,
y .initial:n = y,
}
\cs_new_protected:Nn \scott_dydx:
{
\frac
{
d
\tl_if_empty:NF \l__scott_dydx_n_tl { ^{\l__scott_dydx_n_tl } }
\l__scott_dydx_y_tl
}
{
d
\l__scott_dydx_x_tl
\tl_if_empty:NF \l__scott_dydx_n_tl { ^{\l__scott_dydx_n_tl } }
}
}
\ExplSyntaxOff
\begin{document}
\[
\dydx[n=2]+\dydx[y=u,x=t,n=2]+\dydx[y=v]+\dydx[n=3,x=t]
\]
\end{document}