我正在使用物理包除了 \dv 和 \pdv 命令(它们只是简写版本)之外,还添加了 \derivative 和 \partialderivative 命令。对于那些不熟悉的人来说,这些命令具有可变数量的参数,这使得它们更加有用。
\(
\dv{x} \\
\dv{f}{t} \\
\dv[2]{h}{x}
\)
这些命令默认为文本样式模式,但我试图将 \dv 和 \pdv 命令更改为默认显示样式。
这是我尝试过的。
\renewcommand{\pdv}{
\ensuremath{\displaystyle \partialderivative}
}
\renewcommand{\dv}{
\ensuremath{\displaystyle \derivative}
}
这几乎可以正常工作,但它会将行的其余部分设置为显示样式模式。我希望此命令不会改变其周围文本的样式。
例如,
\(
\dv{f} \qquad \frac{A}{b}
\)
将产生以下输出:
但我希望它产生这样的输出:
我还没有找到一种方法将命令放在它自己的块中,同时保持将可变数量的参数传递给 \derivative 和 \partialderivative 的能力。
答案1
显示样式中的方程的位置部分,我们需要使用 对其进行分组{...}
。要做到这一点并允许访问 的所有参数\derivative
,我们需要使用 来获取参数\dv
。加载physics
和使用\ShowCommand\derivative
为我们提供信息
> \derivative=document command:
#1:s
#2:o
#3:m
#4:g
#5:d()
获取参数很容易,但相当尴尬的形式意味着传递给\derivative
并不容易。我不会使用一组复杂的分支,而是选择\expanded
:
\RenewDocumentCommand\dv{somgd()}{%
{%
\displaystyle
\expanded{%
\derivative
\IfBooleanT{#1}{*}%
\IfNoValueF{#2}{[{\unexpanded{#2}}]}%
{\unexpanded{#3}}%
\IfNoValueF{#4}{{\unexpanded{#4}}}%
\IfNoValueF{#5}{({\unexpanded{#5}})}%
}%
}%
}
这里的想法是,除了强制性的 之外#3
,我们还要测试每个其他参数是否存在,并使用条件重新创建正确的形式。由于\derivative
不会展开\expanded
,但条件会展开,因此最终结果后面\derivative
跟着要传递的参数,所有这些都在 内设置{\displaystyle ...}
。