我想创建带有条件的自定义宏。例如,我想向我创建的宏添加“if 条件”,以便编写与单个变量相关的任意顺序的导数。这是我的宏的当前代码:
\newcommand{\df}{\mathrm{d}}
\newcommand{\drv}[3]{\dfrac{\df #2^#1}{\df #3^#1}}
第一个参数#1是导数的阶,第二个#2我们取导数的函数和第三个#3导出变量。例如,
\drv{n}{f}{x}
会给
我想改变这个代码,让它不显示派生顺序#1如果它等于 1。但我不知道语法,这就是为什么我需要你的帮助。我想写一些类似
\newcommand{\drv}[3]{
if #1=1
\dfrac{\df #2}{\df #3}
else
\dfrac{\df ^#1 #2}{\df #3^#1}
}
谢谢您的帮助,祝您有美好的一天。
答案1
很简单,使用xparse
:
\documentclass{article}
\usepackage{amsmath}
\usepackage{xparse}
\newcommand{\df}{\mathop{}\!d} % use \mathrm{d} if you really prefer it
\NewDocumentCommand{\drv}{omm}{%
\frac{\df\IfValueT{#1}{^{#1}\kern-\scriptspace}#2}
{\df#3\IfValueT{#1}{^{#1}}}%
}
\begin{document}
\[
\drv{f}{x}=f'(x),\qquad
\drv[n+1]{f}{x}=\drv{}{x}\drv[n]{f}{x}
\]
\end{document}
用o
可选参数表示;如果存在,\IfValueT{#1}
将返回 true 并使用所示的参数。
根据给定的定义,\df
在积分中也会表现得符合预期,并在必要时在其前面留下一个小空间。