Вероятно, есть более чистый способ сделать s, но если это чисто для целей презентации, вы можете сделать что-то вроде
pdConv[f_, vv_] :=
Module[{v},
(HoldForm[
Evaluate@
TraditionalForm[((f /. Thread[vv -> #]) /.
Derivative[inds__][g_][vars__] :>
Apply[Defer[D[g[vars], ##]] &,
Transpose[{{vars}, {inds}}] /. {{var_, 0} :>
Sequence[], {var_, 1} :> {var}}])]] /.
Thread[# -> vv]) &@ Table[Unique[v], {Length[vv]}]]
Здесь дополнительный параметр vv
представляет собой список переменных в f
в том порядке, в котором вы хотите, чтобы появлялись частные производные. Чтобы использовать эту функцию, вы должны сделать что-то вроде
pdConv[Dt[d[x, c]], {x, c}]
По сути, это решение временно заменяет список переменных vv
списком фиктивных переменных в правильном лексикографическом порядке, применяет преобразование, а затем заменяет фиктивные переменные исходными переменными, сохраняя при этом желаемый порядок, заключив преобразованное выражение в HoldForm
.