带索引的 Diffcoeff \dl 命令

带索引的 Diffcoeff \dl 命令

我正在尝试使用 diffcoeff 包排版微分形式。但是,当我尝试排版带有索引的变量时,出现了错误。以下是一段不起作用的代码片段:

\documentclass{article}
\usepackage{diffcoeff}
\begin{document}
\[ \dl{u_{ij}} \]
\end{document}

我收到的错误是:

! Missing number, treated as zero.
<to be read again>
                   u
l.4 \[ \dl{u_{ij}}
                   \]

使用时可以正常工作\dl0,但这似乎是一种解决方法。这是软件包中的错误还是有方法可以正确排版?

答案1

问题是由 周围的括号引起的 u_{ij}。省略它们,您的示例就可以编译:

\documentclass{article}
\usepackage{diffcoeff}
\begin{document}
\[ \dl u_{ij} \]
\end{document}

正如其他人所指出的,有一个更新的版本 (v5) diffcoeff。在旧版本中,差速器的代码是事后才想到的(而且有点令人尴尬)。在版本 5 中,它已正确集成到代码中。

[稍后添加] 请注意,\usepackage{diffcoeff}示例中指的是v4.(\dl{x,y,z}在 v5 中可行,但在 v4 中不行。)我知道在多标记参数(如u_{ij}或)周围加上括号是很自然的\vec{x},但在 v4 中这会导致问题。\dl在 v4 中吞下下一个标记或括号组并测试它是数字还是减号。不幸的是,如果括号组本身包含一个括号参数,则测试会失败,因此\dl {u_{ij}}会失败,因为\dlgraspsu_{ij}本身包含一个括号组,但\dl u_{ij}会成功,因为 onlyu被 抓住了\dl。出于同样的原因,\dl {\vec{x}}测试会失败但\dl \vec{x}会成功。

问题在于,v4 代码\dl使用了条件\tl_if_in:NnTF。如果将其更改为\str_if_in:NnTF自然地用括号括住多标记参数,则可以接受。(如果您有权访问代码,请随意这样做。)

v5 相对于 v4 用户界面有很多变化。(我提议给新包起一个不同的名字,但 CTAN 维护人员改变了我的想法。)其中一个变化是,差分的多标记参数现在(v5)应该用大括号括起来。

相关内容