在版本 4 中,我曾经能够编写与 等效的\mathrm{d}^4 x
。\dl^4 x
但是在版本 5 中,我得到了“缺少 { 插入”的错误。有办法解决这个问题吗?
梅威瑟:
\documentclass[letterpaper,12pt]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage{diffcoeff}
\begin{document}
\begin{equation}
\dl^4 x
\end{equation}
\end{document}
答案1
在 v5 中,diffcoeff
微分作为一个整体可以进行幂运算,但要对运算符号 进行幂d
运算,则需要使用\difc
(`c' 表示紧凑形式导数)命令。这样就可以\difc[4]x{{}}
得到您想要的结果,但我想这会比预期使用更多的击键次数。要减少击键次数,请调用一个新宏(例如)\dfl
并写入
\NewDocumentCommand \dfl { E{^}{1} m } { \difc[#1]{#2}{{}} }
然后\dfl^4 x
会给出你想要的(并且\dfl x
会给出 dx)。
答案2
答案3
那么,你需要使用一个完全不同的命令\difc
来排版这个吗?这个包使用点作为参数分隔符(是的,我知道很多人对g
-type 参数有同样的感觉,但我不敢苟同)?这是一个我更喜欢 keyval 语法的经典示例,如下所示(我使用自己的包来制作它,但这应该被视为对diffcoeff
、derivative
和其他包的作者采用 keyval 语法的鼓励):
\documentclass{article}
\usepackage{semantex}
\NewVariableClass\DifferentialOperator[
bool provide=in pars,
define keys={
{in pars}{
use par=false,
bool set true=in pars,
set arg dots={\dotsc},
set arg sep={,},
},
{not in pars}{
use par=never,
bool set false=in pars,
set arg dots={\dotsm},
set arg sep={\,},
},
},
not in pars,
define keys[1]={
{pow}{upper={#1}},
},
prepend keys[1]={
{arg}{
bool if TF={in pars}
{
define arg keys[1]={
{default}{
sep={####1},
}
},
}{
return,
define arg keys[1]={
{default}{
set arg keys x={
other sep={%
\SemantexDataGetExpNot{arg sep}%
\SemantexDataGetExpNot{symbol}%
}{%
\SemantexExpNot{####1}%
}
},
}
},
},
}
},
]
\NewObject\DifferentialOperator\dl{d}
\NewObject\DifferentialOperator\dlpartial{\partial}
\begin{document}
\begin{gather*}
\dl
=
\dl{x}
=
\dl[pow=4]
=
\dl{x,y,z}
=
\dl[pow=4]{x,y,z}
=
\dl[u]{x,y,z}
=
\dl[u,pow=4]{x,y,...,z}
\\
\dlpartial
=
\dlpartial{x}
=
\dlpartial[pow=4]
=
\dlpartial{x,y,z}
=
\dlpartial[pow=4]{x,y,z}
=
\dlpartial[u]{x,y,z}
=
\dlpartial[u,pow=4]{x,y,...,z}
\\
\dl[in pars]
=
\dl[in pars]{x}
=
\dl[in pars,pow=4]
=
\dl[in pars]{x,y,z}
=
\dl[in pars,pow=4]{x,y,z}
=
\dl[u,in pars]{x,y,z}
=
\dl[u,in pars,pow=4]{x,y,...,z}
\\
\SetupObject\dl{in pars}
\dl
=
\dl{x}
=
\dl[pow=4]
=
\dl{x,y,z}
=
\dl[pow=4]{x,y,z}
=
\dl[u]{x,y,z}
=
\dl[u,pow=4]{x,y,...,z}
\end{gather*}
\end{document}