Macros \dv and \pdv eat the subsequent parenthesis argument

The package physics abuses the possibilities afforded by xparse to define commands having very weird syntax.

For instance, if you want to typeset the standard \frac{dx}{dt}, you have to type

\dv{x}{t}

If you want instead \frac{d}{dt}(f(t)) you type

\dv{t}(f(t))

which is where the syntax is weird: the variable you differentiate with respect to is no longer the second mandatory argument, but the first and a mandatory argument is missing altogether.

Of course this is achieved by actually making the second braced argument optional, which breaks all standard LaTeX conventions.

It is very counterintuitive having the independent variable first when the “long form” is desired and second for the “short (Leibniz) form”.

How can you do? My best advice is to keep at arm's length from physics. It seems to provide many bells and whistles for typesetting math, but this is at the expense of syntax clarity.

If you are tied to the package, simply add a no-op; a simple one in this context is \/:

\documentclass{article}
\usepackage{physics}

\begin{document}

\[
\dv{x}{t}\/(y^2-5) \qquad \dv{x}{t}\/ (y^2-5) \qquad \dv{x}{t}
\]

\end{document}

enter image description here


That's because \dv (which is a shorthand for \derivative) is defined as

\DeclareDocumentCommand\derivative{ s o m g d() }
{ % Total derivative
    % s: star for \flatfrac flat derivative
    % o: optional n for nth derivative
    % m: mandatory (x in df/dx)
    % g: optional (f in df/dx)
    % d: long-form d/dx(...)

Even if the optional g-type argument is given (as in your case) the command will scan further for an optional delimited d-type argument which is delimited by ( and ) (maybe not the best choice in a mathematical context). To circumvent this you have to redefine \derivative to always flush #5 if it is present.

\documentclass{article}
\usepackage{physics}

\DeclareDocumentCommand\derivative{ s o m g d() }
{ % Total derivative
    % s: star for \flatfrac flat derivative
    % o: optional n for nth derivative
    % m: mandatory (x in df/dx)
    % g: optional (f in df/dx)
    % d: long-form d/dx(...)
    \IfBooleanTF{#1}
    {\let\fractype\flatfrac}
    {\let\fractype\frac}
    \IfNoValueTF{#4}
    {
        \IfNoValueTF{#5}
        {\fractype{\diffd \IfNoValueTF{#2}{}{^{#2}}}{\diffd #3\IfNoValueTF{#2}{}{^{#2}}}}
        {\fractype{\diffd \IfNoValueTF{#2}{}{^{#2}}}{\diffd #3\IfNoValueTF{#2}{}{^{#2}}} \argopen(#5\argclose)}
    }
    {\fractype{\diffd \IfNoValueTF{#2}{}{^{#2}} #3}{\diffd #4\IfNoValueTF{#2}{}{^{#2}}}\IfValueT{#5}{(#5)}}
}

\begin{document}

\[\dv{x}{t}(y^2-5) \qquad \dv{x}{t} (y^2-5) \qquad \dv{x}{t} \]

\end{document}

enter image description here

At the same time I'd like to note that the physics package does not really help me writing physics formulae and I'm usually much better off typing the stuff by hand using the amsmath macros.