1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
|
%% LyX 2.3.2-2 created this file. For more info, see http://www.lyx.org/.
%% Do not edit unless you really know what you are doing.
\documentclass[english]{article}
\usepackage{lmodern}
\renewcommand{\sfdefault}{lmss}
\renewcommand{\ttdefault}{lmtt}
\usepackage[T1]{fontenc}
\usepackage[latin9]{inputenc}
\usepackage{color}
\usepackage{babel}
\usepackage{wrapfig}
\usepackage{booktabs}
\usepackage{calc}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{esint}
\usepackage[unicode=true,pdfusetitle,
bookmarks=true,bookmarksnumbered=true,bookmarksopen=true,bookmarksopenlevel=2,
breaklinks=true,pdfborder={0 0 1},backref=section,colorlinks=true,pdfpagemode=FullScreen]
{hyperref}
\hypersetup{
pdfborderstyle=}
\makeatletter
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LyX specific LaTeX commands.
%% Because html converters don't know tabularnewline
\providecommand{\tabularnewline}{\\}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Textclass specific LaTeX commands.
\newenvironment{example}%
{\begin{center}\ttfamily}{\end{center}}
\newenvironment{lyxcode}
{\par\begin{list}{}{
\setlength{\rightmargin}{\leftmargin}
\setlength{\listparindent}{0pt}% needed for AMS classes
\raggedright
\setlength{\itemsep}{0pt}
\setlength{\parsep}{0pt}
\normalfont\ttfamily}%
\item[]}
{\end{list}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% User specified LaTeX commands.
\usepackage{babel}
\usepackage[def-file=diffcoeff-doc]{diffcoeff}
\makeatother
\begin{document}
\title{\texttt{diffcoeff}~\\
a \LaTeX{} package to ease\texttt{ }the~\\
writing of differential coefficients \\
in all their variety\\
Version 3.1}
\author{Andrew Parsloe\\
{\small{}(ajparsloe@gmail.com)}}
\maketitle
\begin{abstract}
\noindent This package allows the easy and consistent writing of ordinary,
partial and other derivatives of arbitrary (algebraic or numeric) order.
For mixed partial derivatives, the total order of differentiation is calculated
by the package. Optional arguments allow for points of evaluation (ordinary
derivatives), or variables held constant (partial derivatives), and the
placement of the differentiand (numerator or appended). The package uses
\texttt{xtemplate,} allowing systematic fine-tuning of the display and
generation and use of variant forms, including derivatives built from $D$,
$\Delta$ or $\delta$. A command for differentials ensures the $\dl x$
(or $\dl.up.x$) used in integrals is consistent with the form used in
derivatives. The package requires the \LaTeX 3 bundles \texttt{l3kernel}
and \texttt{l3packages}.
\end{abstract}
\tableofcontents{}
\section{Introduction}
The \LaTeX{} package \texttt{diffcoeff.sty} is written in the expl3 language
of \LaTeX 3\texttt{ }and requires the bundles \texttt{l3kernel} and \texttt{l3packages}
(the latter for the \texttt{xparse}, \texttt{l3keys2e} and \texttt{xtemplate}
packages\texttt{)}. The package is invoked in the usual way by entering
\begin{lyxcode}
\textbackslash usepackage\{diffcoeff\}
\end{lyxcode}
in the preamble of your document. There are two package options. The first
is a switch, \texttt{ISO}, which turns on formatting conforming to ISO
recommendations:
\begin{lyxcode}
\textbackslash usepackage{[}ISO{]}\{diffcoeff\}
\end{lyxcode}
The effect of this is discussed in Section~\ref{sec:Changing-defaults}.
The second is a filename for a file of extension \texttt{.def} containing
definitions of variant forms of derivative:
\begin{lyxcode}
\textbackslash usepackage{[}def-file=<filename>{]}\{diffcoeff\}
\end{lyxcode}
This is discussed in Subsection~\ref{subsec:The-.def-file}. Of course
both options can be used in the same call if desired:
\begin{lyxcode}
\textbackslash usepackage{[}ISO,def-file=<filename>{]}\{diffcoeff\}
\end{lyxcode}
For the present document, the call is
\begin{lyxcode}
\textbackslash usepackage{[}def-file=diffcoeff-doc{]}\{diffcoeff\}
\end{lyxcode}
with the file \texttt{diffcoeff-doc.def} in the same directory as \texttt{diffcoeff.tex}.
\subsection{Version comparison}
Unlike version 1, version 2 and later are built on the the \texttt{xtemplate}
package (included in the \texttt{l3packages} bundle) which makes certain
facilities available which it would be silly not to exploit. Hence the
coding in the later versions is completely different and there are consequences.
\begin{enumerate}
\item The \texttt{\textbackslash diffset} command, formerly used to tweak the
display of derivatives, has been superseded by the \texttt{\textbackslash diffdef}
command. \texttt{\textbackslash diffset} now sends a message warning of
its obsolescence to the terminal and \LaTeX{} log but is otherwise functionless.
It should not interfere with the compilation of a document but any intended
fine-tuning of the display by means of the \texttt{\textbackslash diffset}
command\texttt{ }will not eventuate. The warning message is: \texttt{Obsolete
command: \textbackslash diffset has been superseded by the \textbackslash diffdef
command. See the diffcoeff documentation for further information.} The
\texttt{\textbackslash diffdef} command is discussed in Subsection~\ref{subsec:diffdef}.
\item The optional trailing argument used to indicate a point of evaluation or
variables held constant is now delimited by square brackets, \texttt{{[}}
and \texttt{{]}}, as other optional arguments are. For compatibility with
version 1, braces can still be used but their use to delimit an \emph{optional}
argument is now deprecated in \texttt{xparse} on which \texttt{diffcoeff}
depends. Presumably at some stage this provision will be removed from \texttt{xparse}.
For future-proofing documents use square brackets.
\item The commands \texttt{\textbackslash Diff}, \texttt{\textbackslash diffd}
and \texttt{\textbackslash Diffd} used to construct derivatives from $D$,
$\delta$ and $\Delta$ in version 1, are still available in versions 2
and 3, but deprecated. A new optional argument in the \texttt{\textbackslash diff}
command offers these and a host of other possibilities and is now the preferred
method of forming such variants; see Subsection~\ref{subsec:D-delta-Delta}.
\item Version 3 adds a command, \texttt{\textbackslash dl} (from \emph{d}ifferentia\emph{l})
to write differentials like $dx$ that occur in integrals and in other
contexts in a manner consistent with the form used in derivatives. After
all, if one is using upright `d's in derivatives, similarly upright `d's
should occur in these other contexts.\footnote{This rather obvious lack in version 2 was pointed out to me by Sergio Callegari.}
\item Version 3.1 enables the differential command to be used before forms like
\texttt{\textbackslash vec\{x\}} (an overlooked possibility causing an
error in version 3).
\item Version 3 also provides some simple spacing commands that can be useful
for tweaking standard spacing.
\end{enumerate}
\subsubsection*{Note on terminology}
I refer throughout to the quantity or function being differentiated as
the \emph{differentiand} (in line with \emph{integrand}, \emph{operand},
etc.).
\section{A Rogues' Gallery of derivatives}
\label{sec:Rogues'-gallery}Browsing through texts on statistical mechanics,
relativity and classical mechanics I find the following choice examples
of derivatives `disporting every which way'.
Multi-character variables of differentiation un-parenthesized:
\begin{equation}
\diffp{\frac{\psi}{\Theta}}{\frac{1}{\Theta}},\quad\diffp{E/T}{1/T},\quad\diffp{\ln f}{\ln x_{0}},\quad\diffp\psi{a_{i},\frac{1}{\Theta}},\quad\diffp{\mathcal{L}}{\eta_{,i}^{(r)}}\label{eq:eg1}
\end{equation}
Multi-character variables of differentiation parenthesized:
\begin{equation}
\diffp H{\displaystyle \diffp S{q_{k}}[]},\quad\diffp\varepsilon{(1/\Theta)},\label{eq:eg2}
\end{equation}
Higher-order derivatives where the parentheses do not or do include the
operator:
\begin{equation}
\diffp[2]q{\frac{1}{\Theta}},\quad\diffp[2]q{1/\Theta},\quad\diffp[2]\varepsilon{a_{i}},\quad\diff.wrapall.[2]{\phi^{i}(x^{i})}{x^{i}}.\label{eq:eg3}
\end{equation}
Should the $d$ or $\partial$ be included within the parentheses, as in
the last of (\ref{eq:eg3}), or not, as in the others? Logic says `yes';
practice suggests (generally) `no'.
Indicating a point of evaluation is similarly varied:
\begin{equation}
\diff.pvrule.\phi\varepsilon[\varepsilon=\varepsilon_{0}],\quad\diff.pvrule.[2]\phi\varepsilon[\varepsilon=\varepsilon_{0}],\quad\diff.psqbra.{b^{\beta}}{a^{\alpha}}[b=0],\quad\diff.paren.uv[v=0].\label{eq:eg4}
\end{equation}
ISO 80000-2 (item 2.11.13) favours the last of these -- parentheses --
for ordinary derivatives. Presumably, partial derivatives should follow
suit, although parentheses are also used to indicate variables held constant:
\begin{equation}
\diffp*{\frac{P}{T}}U[V],\quad\diffp S{N_{2}}[U,V,N_{1}],\quad\diffp S/T[V].\label{eq:eg5}
\end{equation}
Other symbols besides $d$ and $\partial$ are used to denote derivative-like
quantities. From introductory calculus, classical mechanics and thermodynamics
come $\delta$ and $\Delta$, from fluid mechanics comes $D$:
\begin{equation}
\diff.delta.yx,\quad\diff.D.\rho t,\quad\diff.pDelta.UT[V],\quad\diff.Delta.U/T,\quad\diff.delta.{\mathcal{L}}{\eta^{(r)}}.\label{eq:eg6}
\end{equation}
There are those, like the International Organization for Standardization
(ISO), who stipulate (or prefer) an upright `d' for their derivatives:
\begin{equation}
\diff.up.yx.\label{eq:eg11}
\end{equation}
When the differentiand is too big or awkward to sit in the numerator and
is appended to the operator, the $d$ or $\partial$ in the numerator is
generally centred -- but not always. In texts prior to the age of computerised
typesetting one will sometimes find the symbol pushed to the \emph{left}:
\begin{equation}
\diff.pleft.*{\diffp{x^{i^{*}}}{x^{k^{*}}}{}}{x^{l^{*}}},\quad\diff.left.*{\left(\frac{m\mathbf{q}_{x}}{\sqrt{1-q^{2}}}\right)}{t}.\label{eq:eg12}
\end{equation}
The observant will note an italic adjustment with the first expression,
so that the $\partial$ in the numerator and the $\partial$ in the denominator
line up in a slanting column, but no such adjustment for the $d$-s in
the second derivative.
And finally, the operator in the numerator may differ from that in the
denominator. For instance, in tensor calculus acceleration is sometimes
written
\[
\diff.nabla.{v^{i}}t=\diff{v^{i}}t+\Gamma_{k\hphantom{i}h}^{\hphantom{k}i}v^{h}\diff{y^{k}}t
\]
where $\nabla v^{i}$ is the `absolute differential' of the velocity $v^{i}$.
Version 2 or later of the \texttt{diffcoeff} package has the generative
power to cope with all these variations -- see Section~\ref{sec:Changing-defaults}
-- although it is unlikely an author should need to call on this capacity
to anything like the extent required for this Rogues' Gallery.
\section{Ordinary derivatives \label{sec:Ordinary-derivatives}}
Writing\textbf{ }\texttt{\textbackslash diff\{y\}\{x\}} will produce $\diff{y}{x}$
in text style (i.e., placed between \texttt{\$ \$}) or
\[
\diff{y}{x}
\]
in display style (i.e., placed between \texttt{\textbackslash{[} \textbackslash{]}}
). In fact \texttt{\textbackslash diff yx} (omitting the braces) will
produce these results, with a saving on keystrokes. The braces are needed
only when an argument -- differentiand, variable of differentiation --
is more than a single token.
\begin{itemize}
\item If you want upright `$\mathrm{d}$'s as default, as ISO 80000-2 recommends,
rather than the math-italic `$d$'s used here, this can easily be done;
see Section~\ref{sec:Changing-defaults} on changing default settings.
\end{itemize}
For inclusion in a line of text you might prefer to use a slash-fraction
form of derivative. That is achieved by inserting a slash, `/', between
numerator and denominator arguments: \texttt{\textbackslash diff\{\textbackslash ln
x\}/x} produces $\diff{\ln x}/x$. (Braces are required for the numerator
in this case since it contains more than one token.)
\subsection{Order of differentiation}
An optional first argument allows the order of differentiation to be specified.
The order need not be a number; an algebraic order of differentiation is
perfectly acceptable as is a mix of the two:
\begin{example}
\textbackslash diff{[}2{]}yx $\Longrightarrow\quad{\displaystyle \diff[2]yx,}$\medskip{}
\textbackslash diff{[}n+1{]}yx $\Longrightarrow\quad{\displaystyle \diff[n+1]yx}.$
\end{example}
As mentioned, the braces can be and have been omitted around the $x$ and
$y$; the square brackets around the optional argument, the order of differentiation,
are essential. For a first-order derivative, no optional argument is needed
and entering \texttt{1} as the optional argument has no effect:
\begin{example}
\textbackslash diff{[}1{]}yx $\Longrightarrow\quad{\displaystyle \diff[1]yx.}$
\end{example}
\noindent In slash style, \texttt{\textbackslash diff{[}2{]}y/x} produces
$\diff[2]y/x$, and \texttt{\textbackslash diff{[}n+1{]}y/x} produces
$\diff[n+1]y/x$.
\subsection{Multi-character variables of differentiation}
Differentiating a function of a function may involve a multi-character
differentiation variable. For instance, to differentiate $\ln\sin x$ in
$x$ means forming the product
\begin{example}
\textbackslash diff\{\textbackslash ln\textbackslash sin x\}\{\textbackslash sin
x\}\textbackslash diff\{\textbackslash sin x\}x $\Longrightarrow\quad{\displaystyle \diff{\ln\sin x}{\sin x}\diff{\sin x}x.}$
\end{example}
\noindent Forming the \emph{second} derivative of $\ln\sin x$ will now
involve forming (among other quantities)
\begin{example}
\noindent \textbackslash diff{[}2{]}\{\textbackslash ln\textbackslash sin
x\}\{\textbackslash sin x\} $\Longrightarrow\quad{\displaystyle \diff[2]{\ln\sin x}{\sin x}.}$
\end{example}
\noindent Parentheses have been inserted automatically by \texttt{diffcoeff}
around $\sin x$ in the denominator to avoid any visual hint that we are
differentiating in the sine of the square of $x$.
The question is: are the parentheses in the right place? Logically, no.
They should include the $d$: $(d\sin x)^{2}$ -- it is the differential
$d\sin x$ that is of the second order. But as the examples in the Rogues'
Gallery show -- see particularly (\ref{eq:eg3}) -- the inclination seems
to be to do otherwise. This may be because one wants, in any case, to parenthesise
the variable. A second, outer pair of parentheses then seems too fussy
and detracts from comprehending the symbol `at a glance':
\[
\diff.wrapall.[2]{f(x)}{(1/x)}.
\]
Customary but illogical notations are familiar in mathematics -- think
of the position of the superscripts in an identity like $\sin^{2}\theta+\cos^{2}\theta=1$.
But, like other features of the derivative, the manner of this wrapping
in parentheses of long variables for \emph{higher order} derivatives is
customisable; see Section~\ref{sec:Changing-defaults}.
For first order derivatives, parenthesising does not occur. If you want
the variable of differentiation to be parenthesised, you need to insert
them yourself:
\begin{example}
\textbackslash diff \{f(x)\}\{1/x\}, \textbackslash quad\textbackslash diff
\{f(x)\}\{(1/x)\} $\Longrightarrow\quad{\displaystyle \diff{f(x)}{1/x},\quad\diff{f(x)}{(1/x)}.}$
\end{example}
\subsubsection{Minutiae of spacing}
You may find the spacing between the `d' and the `f' in the last example
uncomfortably close. The \texttt{diffcoeff} package offers four simple
spacing commands to fine-tune the display. These are
\begin{description}
\item [{\texttt{\textbackslash negmu}}] insert spacing of $-1$ mu
\item [{\texttt{\textbackslash nilmu}}] insert spacing of $0$ mu
\item [{\texttt{\textbackslash onemu}}] insert spacing of $1$ mu
\item [{\texttt{\textbackslash twomu}}] insert spacing of $2$ mu
\end{description}
Thus for the last example, inserting \texttt{\textbackslash nilmu} and
\texttt{\textbackslash onemu} in the appropriate places produces
\begin{example}
\textbackslash diff \{\textbackslash nilmu f(x)\}\{\textbackslash onemu
1/x\}, \textbackslash quad \textbackslash diff \{\textbackslash nilmu
f(x)\}\{(1/x)\} $\Longrightarrow\quad{\displaystyle \diff{\nilmu f(x)}{\onemu1/x},\quad\diff{\nilmu f(x)}{(1/x)}.}$
\end{example}
\subsection{Appending the differentiand: \texttt{\textbackslash diff{*}}}
Some differentiands are too big or awkward to be placed neatly in the numerator
of a derivative and it is natural to append them to a preceding differential
operator. One way to do this is to leave the numerator argument empty in
the \texttt{\textbackslash diff} command and follow the command with the
differentiand. A better way is to star the \texttt{\textbackslash diff}
command. This tells \texttt{diffcoeff} to append the differentiand. Thus
suppose the differentiand is a polynomial, say $ax^{2}+bx+c$. Add a star
(an asterisk) to the \texttt{\textbackslash diff} command:
\begin{example}
\textbackslash diff{*}\{(ax\textasciicircum 2+bx+c)\}x $\Longrightarrow\quad{\displaystyle \diff*{(ax^{2}+bx+c)}x.}$
\end{example}
A virtue of using an asterisk is that if one isn't sure whether a differentiand
should be appended or not, it is an easy matter to simply insert or delete
the asterisk to compare the results. For example, a second derivative is
an iterated derivative -- one in which a derivative forms the differentiand
of another derivative:
\begin{example}
\textbackslash diff{[}2{]}yx = \textbackslash diff{*}\{\textbackslash diff
yx\}x $\Longrightarrow\quad{\displaystyle \diff[2]yx=\diff*{\diff yx}x},$
\end{example}
\noindent which is more elegant to my eye than
\begin{example}
\noindent \textbackslash diff{[}2{]}yx = \textbackslash diff\{\textbackslash diff
yx\}x $\Longrightarrow\quad{\displaystyle \diff[2]yx=\diff{\diff yx}x},$
\end{example}
\noindent although whether the \emph{meaning} is clearer is moot.\emph{
}It is easy to switch between the two forms on the right, simply by inserting
or removing the asterisk.
In slash style with the star option, the polynomial example becomes
\begin{example}
\textbackslash diff{*}\{(ax\textasciicircum 2+bx+c)\}/x $\Longrightarrow\quad\text{\ensuremath{{\displaystyle (\diff{}/{x})(ax^{2}+bx+c)}}, }$
\end{example}
\noindent where the parentheses around the differential operator are automatically
inserted by \texttt{diffcoeff}. Like other elements of automatic formatting,
this is user-adjustable; see Section~\ref{sec:Changing-defaults}.
\subsection{Point of evaluation\label{subsec:Point-of-evaluation}}
If you want to specify a point at which the derivative is evaluated, append
a final optional argument. Note that there \emph{must be no space} before
the left square bracket of the argument:
\begin{example}
\textbackslash diff{[}2{]}yx{[}0{]} $\Longrightarrow\quad{\displaystyle \diff[2]yx[0]}$
\end{example}
\noindent If a space does slip in before the final optional argument, it
will not cause a \LaTeX{} error. Instead, the argument will be treated as
a square-bracketed mathematical expression following the derivative, and
typeset as such.
\begin{itemize}
\item If you prefer to use subscripted \emph{parentheses} around the derivative
to indicate a point of evaluation -- as ISO 80000-2 recommends -- then
this can easily be done; see Section~\ref{sec:Changing-defaults} on changing
default settings. Or use the \texttt{ISO} package option; see the introduction.
\end{itemize}
Because the slash form spreads the derivative out horizontally, parentheses
are preferred here to indicate a point of evaluation:
\begin{example}
\textbackslash diff\{\textbackslash ln sin x\}/\{sin x\}{[}x=\textbackslash pi/6{]}
$\Longrightarrow\quad{\displaystyle \diff{\ln\sin x}/{\sin x}[x=\pi/6]}$
\end{example}
\noindent A vertical rule (or `pipe') can become too remote from the opening
$d$ of the differential coefficient: $\diff.svrule.{\ln\sin x}/{\sin x}[x=\pi/6]$;
parentheses tie the whole cluster of symbols together.
\subsubsection{Superscripts}
It is easy to add a superscript to a derivative to indicate evaluation
at two points and the difference between the values:
\begin{example}
\textbackslash diff \{\textbackslash sin x\}x{[}0{]}\textasciicircum\{\textbackslash pi/2\}
${\displaystyle \Longrightarrow\quad\diff{\sin x}x[0]^{\pi/2}}$
\end{example}
\noindent If you want only the superscript, no subscript, include the final
optional argument but leave it empty. Thus, for a particle of mass $m$
moving along a line, distance $x$ at time $t$, the kinetic energy is:
\begin{example}
\noindent \textbackslash tfrac 12 m \textbackslash diff x/t{[}{]}\textasciicircum 2
$\Longrightarrow\quad{\displaystyle \tfrac{1}{2}m\diff x/t[]^{2}}.$
\end{example}
\section{Partial derivatives\label{sec:Partial-derivatives}}
\noindent \begin{flushleft}
Partial derivatives follow the same pattern as ordinary derivatives, with
some extensions. The command this time is \texttt{\textbackslash diffp}.
Thus \texttt{\textbackslash diffp\{F\}\{x\}}, or, with a saving on keystrokes,\texttt{
\textbackslash diffp Fx}, produces $\diffp Fx$ in text style and
\[
\diffp{F}{x}
\]
in display style. (As for \texttt{\textbackslash diff}, the omission of
braces is possible when the differentiand or the differentiation variable
are single tokens.) As for \texttt{\textbackslash diff}, there is a slash
form, generally preferred for inline use, \texttt{\textbackslash diffp
F/x}, displaying as $\diffp F/x$. Given that \texttt{\textbackslash partial}
takes 8 keystrokes to type, the slash form \emph{does }economise on keystrokes
for a partial derivative.
\par\end{flushleft}
\begin{flushleft}
Again an optional argument allows the specification of the order of differentiation
and it may be numeric or algebraic or a mix of the two:
\par\end{flushleft}
\begin{example}
\textbackslash diffp{[}3{]}F/x , \textbackslash quad \textbackslash diffp{[}n{]}F/x
$\Longrightarrow\quad{\displaystyle {\displaystyle {\displaystyle \diffp[3]F/x}},\quad{\displaystyle \diffp[n]F/x.}}$\medskip{}
\textbackslash diffp{[}n+1{]}Fx $\Longrightarrow\quad{\displaystyle {\displaystyle \diffp[n+1]Fx,}}$
\end{example}
\subsection{Variables held constant}
In a subject like thermodynamics, there is a need to indicate which variable
or variables are held constant when the differentiation occurs. To show
this, append a final square-bracketed optional argument and ensure that
it follows \emph{immediately} on the preceding mandatory argument. A space
here will detach the argument from the derivative and result in it being
treated as a mathematical expression following the derivative. Thus to
differentiate the entropy $S$ in temperature $T$ while holding the volume
$V$ constant, write
\begin{example}
\textbackslash diffp ST{[}V{]} $\Longrightarrow\quad{\displaystyle \diffp ST[V]}$
\end{example}
\noindent In slash form the same expression looks like
\begin{example}
\noindent \textbackslash diffp S/T{[}V{]} $\Longrightarrow\quad{\displaystyle \diffp{S}/{T}[V]}.$
\end{example}
This use of a parenthesised, subscripted form to indicate a variable or
variables held constant, leaves open the question: how do we represent
a point of evaluation? ISO 80000-2 makes no recommendation for \emph{partial}
derivatives; presumably we follow the same practice as their recommendation
for ordinary derivatives:
\begin{example}
\textbackslash diffp \{F(x,y)\}x{[}(0,0){]} $\Longrightarrow\quad{\displaystyle \diffp{F(x,y)}x[(0,0)]}$
\end{example}
However, you may prefer (as many do) to use a vertical rule for this purpose:
\[
\diff.pvrule.{F(x,y)}x[(0,0)]
\]
Making this possibility available is discussed in Section~\ref{sec:Changing-defaults}.
An empty final argument produces a parenthesised derivative with no subscript:
\begin{example}
\textbackslash diffp yx{[}{]}${\displaystyle \Longrightarrow\quad\diffp yx[]}.$
\end{example}
\noindent This can be useful sometimes, e.g. for writing Lagrange's equations
of motion in analytic mechanics:
\begin{example}
\noindent \textbackslash diffp L\{q\_k\}-\textbackslash diff{*}\{\textbackslash diffp
L\{\textbackslash dot\{q\}\_k\}{[}{]}\}t = 0 $\Longrightarrow\quad{\displaystyle \diffp L{q_{k}}-\diff*{\diffp L{\dot{q}_{k}}[]}t}=0.$
\end{example}
\subsubsection{Text-style derivatives}
The \texttt{diffcoeff} package assumes that derivatives formed as `numerator
over denominator' will be used in display-style expressions, and that the
slash form will be used for inline use (text style). This is the familiar
practice in the literature. If one \emph{does} use the first form in an
inline expression where a variable is held constant, say \texttt{\textbackslash diffp
ST{[}V{]}} as here $\diffp ST[V]$, the result is unsatisfactory, the subscript
too tight on the closing parenthesis and too much space between parentheses
and derivative. The matter is easily resolved using `variant forms' --
see Subsection~\ref{subsec:Text-and-script-style} below -- giving, for
our example, $\diff.ptxt.ST[V]$.
\subsection{Appending the differentiand\label{subsec:Partial-appending}}
For a long or awkward differentiand, it is generally better to \emph{append}
it to a preceding differential operator, rather than create a fractional
form with the long expression in the numerator. As with ordinary derivatives,
this is achieved by adding an asterisk to (i.e. by starring) the \texttt{\textbackslash diffp}
command.
\begin{example}
\textbackslash diffp{*}{[}2{]}\{\textbackslash Phi(x,y,z)\}x $\Longrightarrow\quad{\displaystyle \diffp*[2]{\Phi(x,y,z)}x.}$
\end{example}
\noindent Alternatively you could leave the first mandatory argument empty
and manually append the differentiand, but by deleting or inserting an
asterisk, it is easy to compare the two forms, differentiand-in-the-numerator,
differentiand-appended, and see which is preferable.
In slash form, parentheses are automatically inserted around the differential
operator when the differentiand is appended,
\begin{example}
\textbackslash diffp{*}{[}n{]}\{f(x)\}/x $\Longrightarrow\quad{\displaystyle \diffp*[n]{f(x)}/x,}$
\end{example}
\noindent although this behaviour can be changed (Section~\ref{sec:Changing-defaults}
again).
If you wish to both append the differentiand \emph{and} indicate variables
held constant, then the starred form is much the easier way to achieve
this. Thus, to express a relation in thermodynamics,
\begin{example}
\textbackslash diffp{*}\{\textbackslash frac PT\}U{[}V{]} = \textbackslash diffp{*}\{\textbackslash frac
1T\}V{[}U{]} $\Longrightarrow\quad{\displaystyle \diffp*{\frac{P}{T}}U[V]=\diffp*{\frac{1}{T}}V[U]}$
\end{example}
\noindent where the starring automatically takes care of the parentheses
and subscripts.
\subsection{Mixed partial derivatives}
The new thing with partial derivatives, not present with ordinary derivatives,
is \emph{mixed} partial derivatives, where there is more than one variable
of differentiation. If each variable is differentiated only to the first
order, then it is easy to specify the derivative. Suppose $F$ is a function
of three variables, $x$, $y$ and $z$. Then
\begin{example}
\textbackslash diffp F\{x,y,z\} $\Longrightarrow\quad{\displaystyle \diffp F{x,y,z}}.$
\end{example}
The variables of differentiation are listed in order in a comma list forming
the second mandatory argument. The total order of differentiation (3 in
this example) is inserted automatically -- \texttt{diffcoeff} does the
calculation. There is also a slash form:
\begin{example}
\textbackslash diffp F/\{x,y,z\} $\Longrightarrow\quad{\displaystyle \diffp F/{x,y,z}}.$
\end{example}
If we want to differentiate variables to higher order, then their orders
need to be specified explicitly. To do so use a comma list for the optional
argument:
\begin{example}
\textbackslash diffp{[}2,3{]}F\{x,y,z\} $\Longrightarrow\quad{\displaystyle \diffp[2,3]F{x,y,z}.}$
\end{example}
\noindent Notice that the overall order of the derivative -- 6 -- is
again automatically calculated and inserted as a superscript on the $\partial$
symbol in the numerator. In this example, the comma list of orders has
only two members, even though there are three variables. It is assumed
that the orders given in the comma list apply in sequence to the variables,
the first order to the first variable, the second to the second variable,
and so on, and that any subsequent orders not listed in the optional argument
are, by default, 1. Thus we need to specify only 2 and 3 in the example;
the order of differentiation of $z$ is 1 by default. But you \emph{cannot}
use an order specification like \texttt{{[} , ,2{]}}. Instead write \texttt{{[}1,1,2{]}}.\textbf{
}It is only the \emph{tail} of an order specification which can be omitted.
\subsubsection{Minutiae of spacing (again)\label{subsec:Minutiae-of-spacing}}
In Chapter 18 of the \emph{The\TeX book}, Knuth suggests inserting a thin
space, \texttt{\textbackslash ,} (or 3 mu), between differentials in appropriate
contexts, giving as an example $dx\,dy=r\,dr\,d\theta$. In the denominator
of a derivative, however, that degree of extra spacing seems too great
(to my eye), interfering with seeing the derivative `as a whole',
\[
\diff.pwide.F{x,y,z},
\]
especially for the slash-form of derivative: $\diff.pwide.F/{x,y,z}$.
Some spacing is desirable, but less; by default \texttt{diffcoeff} inserts
2 mu between the differentials in the fraction form of derivative and 1
mu in the slash form.
Should a differentiation occur to higher order and so a variable acquire
a superscript, an adjustment is made to the extra spacing. By default 1
mu is subtracted from the default spacing. Thus in
\[
\diffp[2]F{x,y,z},
\]
2 mu of spacing is inserted between the $\partial y$ and $\partial z$,
but because the superscript already provides some separation between them,
only 1 mu is inserted between $\partial x^{2}$ and $\partial y$.
The values used for the spacing and its adjustment in the presence of a
superscript can be adjusted by the user; see Section~\ref{sec:Changing-defaults}.
Some other minutiae of spacing are discussed below in Subsection~\ref{subsec:Comma-list-of-vars}
when the variables themselves are super- or subscripted (as happens in
tensor calculus, for instance).
\subsubsection{Algebraic orders of differentiation}
Calculation of the overall order of differentiation still occurs even when
some or all of the individual orders are algebraic variables rather than
numbers. For example, differentiating in three variables to orders \texttt{1,
m+1, m-1},
\begin{example}
\textbackslash diffp{[}1,m+1,m-1{]}\{F(x,y,z)\}\{x,y,z\} $\Longrightarrow\quad{\displaystyle \diffp[1,m+1,m-1]{F(x,y,z)}{x,y,z}.}$
\end{example}
\subsubsection{Error messages}
Should you specify \emph{more} orders in the comma list of the order specification
than there are variables, compilation will fail and an error message will
be sent to the terminal and \LaTeX{} log . For example, if on line 53 (say)
of my document I specify \texttt{{[}1,m-1,m+1,2{]}} for the orders of differentiation
but list only \texttt{\{x,y,z\}} for the variables, the message will be
\begin{lyxcode}
!~Package~diffcoeff~Error:~4~orders~of~differentiation~
specified~for~3~variables;~orders~{[}1,m+1,m-1,2{]}
(on~line~53)~for~variables~x,y,z.
\end{lyxcode}
Should you try using a \emph{number} raised to a power in an order specification,
it will cause an error. For example, if on line 53 (say) of my document
I try to form \texttt{\textbackslash diffp{[}2\textasciicircum 2{]}f\{x,y,z\}}
compilation will fail with the message
\begin{lyxcode}
!~Package~diffcoeff~Error:~number~followed~by~\textasciicircum ~in~the~
order~specification~{[}2\textasciicircum n,1,1{]}~on~line~53.~Diffcoeff~
cannot~calculate~the~overall~order~of~differentiation~
in~this~case.~Use~the~order-override~option~to~enter~
the~overall~order.
\end{lyxcode}
Similarly, you cannot use multiplication (\texttt{\textbackslash times}
or \texttt{{*}})\texttt{ }or division (\texttt{/} or \texttt{\textbackslash div})
signs after \emph{numbers} in an order specification; only \texttt{+} or
\texttt{-} or a left parenthesis (see below) are allowed.
\subsubsection{The order-override option}
\noindent Perhaps the differentiations are to orders \texttt{{[}2km,m-1,m+1{]}}:
\begin{example}
\noindent \textbackslash diffp{[}2km,m-1,m+1{]}\{F(x,y,z)\}\{x,y,z\} $\Longrightarrow\quad{\displaystyle \diffp[2km,m-1,m+1]{F(x,y,z)}{x,y,z}.}$
\end{example}
\noindent Here the overall order is presented as \texttt{2km+2m}. You might
prefer this to be presented as \texttt{2m(k+1)}. Although \texttt{diffcoeff}
takes some steps to present the overall order appropriately, it is not
a computer algebra system and does not factorise expressions. If you want
to present the order in a manner distinct from that presented by \texttt{diffcoeff},
use the \emph{order-override option}.
This is a second optional argument immediately following the order specification.
For our last example, filling the override option with \texttt{2m(k+1)}
gives the desired result:
\begin{example}
\textbackslash diffp{[}2km,m-1,m+1{]}{[}2m(k+1){]}\{F(x,y,z)\}\{x,y,z\}
$\Longrightarrow\quad{\displaystyle \diffp[2km,m-1,m+1][2m(k+1)]{F(x,y,z)}{x,y,z}}.$
\end{example}
\noindent As another example, left to its own devices, \texttt{diffcoeff}
produces
\begin{example}
\noindent \textbackslash diffp{[}m/2+n/2,m/2,n/2{]}F\{x,y,z\} $\Longrightarrow\quad{\displaystyle \diffp[m/2+n/2,m/2,n/2]F{x,y,z},}$
\end{example}
\noindent whereas we would like the total order to be presented as $m+n$.
Using the override option,
\begin{example}
\noindent \textbackslash diffp{[}m/2+n/2,m/2,n/2{]}{[}m+n{]}F\{x,y,z\}
$\Longrightarrow\quad{\displaystyle \diffp[m/2+n/2,m/2,n/2][m+n]F{x,y,z}}.$
\end{example}
The order-override option does exactly that: overrides the presentation
of the calculated order with the manually given one. In fact the calculation
algorithm does not get called at all when the override option is used so
that one can in this way present the total order in whatever manner one
wishes or, indeed, add essentially arbitrary material as a superscript
to the $\partial$ symbol in the numerator.
\subsubsection{Comma list of variables of differentiation\label{subsec:Comma-list-of-vars}}
In tensor calculus the differentiations are almost always in terms of super-
or subscripted coordinates. In many other contexts this is the case too
-- the reciprocal of the temperature in thermodynamics or generalized
cooredinates in analytical mechanics. This is why a comma list is used
in \texttt{diffcoeff} for specifying variables of differentiation for mixed
partial derivatives. Although it would be nice to write the minimal \texttt{\{xy\}}
rather than \texttt{\{x,y}\} when two variables $x$ and $y$ are involved,
the extra writing is trivial and the comma list allows a simpler handling
of multi-character variables. For instance in tensor calculus we get expressions
like
\begin{example}
\textbackslash diffp\{A\_i\}\{ x\textasciicircum j,x\textasciicircum k
\} $\Longrightarrow\quad{\displaystyle \diffp{A_{i}}{x^{j},x^{k}}.}$
\end{example}
\noindent It is easier to write \texttt{\{x\textasciicircum j,x\textasciicircum k\}}
here than, say, \texttt{\{\{x\textasciicircum j\}\{x\textasciicircum k\}\}}
to distinguish the variables. It does mean that should the variable of
differentiation include a comma then that comma needs to be enclosed in
braces. There are plenty of instances of this out in the world (see, e.g.,
the last equation of (\ref{eq:eg1})) but it is overall a rare occurrence.
\paragraph*{Minutiae of spacing (yet again):}
In Subsection~\ref{subsec:Minutiae-of-spacing} above, I discussed a slight
reduction in the space inserted between the terms occurring in the denominator
of a mixed partial derivative when a higher order differentiation is involved.
The superscript appearing on a differentiation variable in that case \emph{of
itself} introduced a spacing adjustment between the terms. But the present
discussion involves only first order differentiations and no such reduction
is automatically made by \texttt{diffcoeff}. However it is still possible
to explicitly make such an adjustment with the \texttt{\textbackslash negmu}
command, which inserts \texttt{-1 mu} of spacing. For our example,
\begin{example}
\textbackslash diffp\{A\_i\}\{ x\textasciicircum j\textbackslash negmu,x\textasciicircum k
\} $\Longrightarrow\quad{\displaystyle \diffp{A_{i}}{x^{j}\negmu,x^{k}},}$
\end{example}
\noindent the \texttt{\textbackslash negmu} decreasing the spacing between
the terms from the default 2 mu to 1 mu.
\subsubsection{Overkill territory}
Two previous examples illustrate limitations of the algorithm that calculates
the overall order of differentiation: \texttt{2m/2+2n/2} is not simplified
to \texttt{m+n} and \texttt{2km+2m} is not factorised to \texttt{2m(k+1)}.
But there is much that the algorithm \emph{can} handle -- for instance,
the simple use of parentheses:
\begin{example}
\textbackslash diffp{[}2m-(k+1),2(k+1)-m{]}\{F(x,y,z)\}\{x,y,z\} $\Longrightarrow\quad{\displaystyle \diffp[2m-(k+1),2(k+1)-m]{F(x,y,z)}{x,y,z}}.$
\end{example}
\paragraph*{Dynamic use of parentheses}
\noindent For parenthetic expressions to be evaluated as in this example
-- the \emph{dynamic} use of parentheses -- the left parenthesis must
be preceded at most by a sign or a number; the right parenthesis must be
followed at most by a sign.
If a right parenthesis is followed by a \emph{variable}, say by \texttt{m}
as in the order spec. \texttt{{[}(2n+1)m,(2n-1)m{]}}, it will throw an
error and halt compilation. A message will be sent to the terminal and
the \LaTeX{} log like the following (which assumes the order spec. was on
line 53 of the document):
\begin{lyxcode}
!~Package~diffcoeff~Error:~)~followed~by~m~in~the~
order~specification~{[}(2n+1)m,(2n-1)m{]}~on~line~53.~
Diffcoeff~cannot~calculate~the~overall~order~of~
differentiation~in~this~case.~Use~the~order-override~
option~to~enter~the~overall~order.
\end{lyxcode}
This is a limitation on the dynamic use of parentheses -- but they \emph{can}
be nested.
\paragraph*{Static use of parentheses}
If a left parenthesis is preceded by a \emph{variable} (i.e., not a sign
or a number) this signals to \texttt{diffcoeff} the \emph{static} use of
parentheses. No attempt is made to evaluate what is between them and they
are treated simply as an extension of the variable. For example,
\begin{example}
\textbackslash diffp{[}f(k+1)+1,f(k-1)-1{]}\{F(x,y)\}\{x,y\} $\Longrightarrow\quad{\displaystyle \diffp[f(k+1)+1,f(k-1)-1]{F(x,y)}{x,y}}.$
\end{example}
\noindent In the static case you \emph{can} follow the right parenthesis
by a variable without generating an error.\emph{ }You can nest them, and
you can include static parentheses within a dynamic pair; for example,
\begin{example}
\noindent \textbackslash diffp{[}2(3+f(k))+1,1-3(f(k)-2){]}\{F(x,y)\}\{x,y\}
$\Longrightarrow\quad{\displaystyle \diffp[2(3+f(k))+1,1-3(f(k)-2)]{F(x,y)}{x,y}}.$
\end{example}
\noindent However, the reverse is not possible: you can't have dynamic
parentheses within a static pair.
\paragraph*{Other refinements}
Exponents and subscripts on a \emph{variable} are fine in an order specification,
so long as the exponent or subscript consists of a \emph{single} token:
\begin{example}
\textbackslash diffp{[}m\textasciicircum 2+2(k-1),m\textasciicircum 2-(k+1){]}F\{x,y,z,w\}
$\Longrightarrow\quad{\displaystyle \diffp[m^{2}+2(k-1),m^{2}-(k+1)]F{x,y,z,w}}.$
\end{example}
\noindent Braced arguments containing \emph{multiple} tokens as exponents
or subscripts to variables will generally not halt compilation but will
usually give nonsensical results, as will \emph{signs} treated as superscripts
or subscripts. Neither circumstance is checked for by \texttt{diffcoeff}.
\paragraph*{Override}
There are limitations on what order specifications the \texttt{diffcoeff}
package can `digest'; equally, it can digest a wide variety of such constructs,
but it is \emph{not} a computer algebra system. In all those cases where
it fails to calculate or present a correct total order, the order-override
option is available. Yes, this is not as convenient as having the overall
order calculated automatically but (let's remind ourselves) we are deep
in overkill territory. Mixed partial derivatives are used far less often
than the pure derivatives, and when they \emph{are} used it is nearly always
to orders 1 or 2 in the variables. Mixed partial derivatives to exotic
orders of differentiation are rarely used, so that the limitations of the
calculational algorithm are of little real moment -- and the override
option is always available for such cases.
\subsection{Parentheses around multi-character variables}
In thermodynamics and statistical mechanics one may want to differentiate
in the reciprocal of the temperature, $1/T$ (or $1/\Theta$):
\begin{example}
\textbackslash diffp{[}2{]}q\{\textbackslash frac 1\textbackslash Theta\}
$\Longrightarrow\quad{\displaystyle \diffp[2]q{\frac{1}{\Theta}}.}$
\end{example}
\noindent In this case and for other \emph{higher order} derivatives of
multi-character variables of differentiation, the parentheses are inserted
automatically by \texttt{diffcoeff}. Precisely where parentheses should
be placed is moot. The placement in this example is not strictly logical,
although it feels intuitive, but the placement can be customised (Section~\ref{sec:Changing-defaults}).
Parentheses are automatically inserted like this only for higher order
derivatives. When the differentiation is to first order, parenthesising
is up to the user:
\begin{example}
\textbackslash diffp q\{(\textbackslash frac 1\textbackslash Theta),V\}
$\Longrightarrow{\displaystyle \quad\diffp q{(\frac{1}{\Theta}),V}.}$
\end{example}
\subsection{Jacobians}
\texttt{diffcoeff} provides a command \texttt{\textbackslash jacob} for
constructing Jacobians. For example
\begin{example}
\textbackslash jacob\{u,v,w\}\{x,y,z\} $\Longrightarrow\quad{\displaystyle \jacob{u,v,w}{x,y,z}.}$
\end{example}
The comma lists can contain any number of variables. \texttt{\textbackslash jacob}
does \emph{not} check that the two arguments contain the same number of
variables, so it is perfectly possible to form an object like \texttt{\textbackslash jacob\{u,v,w\}\{x,y\}}
which as far as I know has no meaning.
\section{Changing defaults; variant forms\label{sec:Changing-defaults}}
\begin{wraptable}[22]{o}{0.5\columnwidth}%
\vspace{-4.5ex}
\caption{{\small{}Defaults (ordinary derivatives})\label{tab:Ordinary-derivatives}}
\abovetopsep=.5ex{}%
\begin{tabular}{lr}
\toprule
{\small{}key} & {\small{}default}\tabularnewline
\midrule
{\small{}op-symbol } & \texttt{\small{}d}\tabularnewline
{\small{}op-symbol-alt} & \texttt{\small{}= op-symbol}\tabularnewline
{\small{}op-order-sep } & \texttt{\small{}1 mu}\tabularnewline
{\small{}{*}-op-left } & \texttt{\small{}false}\tabularnewline
{\small{}{*}-italic-nudge} & \texttt{\small{}3 mu}\tabularnewline
{\small{}{*}/-op-wrap} & \texttt{\small{}true}\tabularnewline
{\small{}long-var-wrap } & \texttt{\small{}d(v)}\tabularnewline
{\small{}denom-term-sep} & \texttt{\small{}2 mu}\tabularnewline
{\small{}/-denom-term-sep } & \texttt{\small{}1 mu}\tabularnewline
term-sep-adjust & \texttt{-1 mu}\tabularnewline
{\small{}left-delim} & \texttt{\small{}\textbackslash left .}\tabularnewline
{\small{}right-delim} & \texttt{\small{}\textbackslash right |}\tabularnewline
{\small{}elbowroom} & \texttt{\small{}0 mu}\tabularnewline
{\small{}subscr-nudge } & \texttt{\small{}0 mu}\tabularnewline
{\small{}/-left-delim} & \texttt{\small{}(}\tabularnewline
{\small{}/-right-delim } & \texttt{\small{})}\tabularnewline
{\small{}/-elbowroom} & \texttt{\small{}0 mu}\tabularnewline
{\small{}/-subscr-nudge } & \texttt{\small{}0 mu}\tabularnewline
\bottomrule
\end{tabular}\end{wraptable}%
To write the range of different examples displayed in the Rogues' Gallery
(Section~\ref{sec:Rogues'-gallery}) I have had to make extensive use
of forms of derivative other than the default. \texttt{Diffcoeff} is built
on the facilities offered by the \texttt{xtemplate} package (included in
the \LaTeX 3 bundle \texttt{l3packages)}. These facilities are harnessed
by means of a command, \texttt{\textbackslash diffdef}, and a further
optional argument of the \texttt{\textbackslash diff} command.\texttt{ }
How a derivative is displayed in a document is determined by specifying
values in a `key = value' list. This is done with the \texttt{\textbackslash diffdef}
command, which also allows a name to be associated with the list. By using
that name as an argument in the \texttt{\textbackslash diff} command,
a derivative is formed shaped by those values. Examples will make the process
clear.
\subsection{Default values: ordinary derivatives}
Table~\ref{tab:Ordinary-derivatives} lists the keys available for forming
derivatives and the default values\footnote{Note that a mu is a `math unit', 1/18 of an em in the math font used.}
they have been assigned. These default values have been chosen to coincide
with those relevant for \emph{ordinary} derivatives -- apart from the
keys \texttt{denom-term-sep}, \texttt{/-denom-term-sep} and \texttt{term-sep-adjust
}which are ignored for ordinary derivatives but apply to the case of mixed
partial derivatives when there is more than one variable of differentiation.
Keys with an opening slash, /, apply only to the slash form of the derivative;
keys with an opening asterisk, {*}, apply only when the differentiand is
appended.
Note that these settings are, in general, font dependent. The values given
are (in the author's opinion) appropriate for the default \LaTeX{} math
fonts. There are also likely to be variations required for whether a derivative
is used in a display-style or text-style or script-style expression. That
matter is discussed below in Subsection~\ref{subsec:Text-and-script-style}.
All values specifying a space require the unit (\texttt{mu}) to be given;
a number alone does not suffice.
\begin{description}
\item [{op-symbol}] the operator symbol; for ordinary derivatives, generally
one of \texttt{d} or \texttt{\textbackslash mathrm\{d\}}, \texttt{D} or
\texttt{\textbackslash mathrm\{D\}}, \texttt{\textbackslash delta} or
\texttt{\textbackslash Delta}; for partial derivatives \texttt{\textbackslash partial};
default = \texttt{d}
\item [{op-symbol-alt}] if different from \textbf{op-symbol} then used in the
denominator while \textbf{op-symbol} is used in the numerator; e.g. for
$\diff.nabla.{v^{i}}t$, \texttt{op-symbol = \textbackslash nabla} and
\texttt{op-symbol-alt = d}; otherwise (and usually) defaults to \textbf{op-symbol}
\item [{op-order-sep}] extra horizontal space added between the op-symbol and
the superscripted order of differentiation in higher order derivatives;
compare $d^{2}$ with $d^{\mkern1mu 2}$, $\partial^{2}$ with $\partial^{\mkern1mu 2}$
where the first symbol in each case has no extra space and the second has
an extra 1 mu; default = \texttt{1 mu}
\item [{{*}-op-left}] a choice of \texttt{true} or \texttt{false} indicating
whether the op-symbol is left-aligned or not when the differentiand is
appended; generally it is centred; does not apply to slash forms of the
derivative; default = \texttt{false}
\item [{{*}-italic-nudge}] if \textbf{{*}-op-left} is \texttt{true}, makes an
italic adjustment in the numerator, so that the op-symbols in numerator
and denominator align in the same slanting column; for an upright \texttt{d}
this would be set to \texttt{0 mu}; default = \texttt{3 mu}
\item [{{*}/-op-wrap}] a choice of \texttt{true} or \texttt{false} for slash
forms of the derivative when the differentiand is appended, dictating whether
the derivative is wrapped in parentheses, as here $\diffp*{F(x,y)}/x$,
or not; default = \texttt{true}
\item [{long-var-wrap}] to avoid ambiguity in higher order derivatives it may
be advisable to wrap multi-token variables of differentiation in parentheses;
default = \texttt{d(v)}; the choices are
\begin{description}
\item [{\texttt{dv}}] no wrapping, e.g. $dx_{i}^{2}$ or $d\frac{1}{\Theta}^{2}$,
$\partial x_{i}^{2}$ or $\partial\frac{1}{\Theta}^{2}$,
\item [{\texttt{d(v)}}] wrap the variable only, e.g. $d(x_{i})^{2}$ or $d(\frac{1}{\Theta})^{2}$,
$\partial(x_{i})^{2}$ or $\partial(\frac{1}{\Theta})^{2}$
\item [{\texttt{(dv)}}] wrap the op-symbol and variable, e.g. $(dx_{i})^{2}$
or $(d\frac{1}{\Theta})^{2}$, $(\partial x_{i})^{2}$ or $(\partial\frac{1}{\Theta})^{2}$
\end{description}
\item [{denom-term-sep}] (mixed partial derivatives only) horizontal spacing
inserted between the differentials in the denominator of a mixed partial
derivative to avoid a solid cluster like $\partial x\partial y\partial z$;
with the default 2 mu this is $\dl.p.x\dl.p.2y\dl.p.2z$; default = \texttt{2
mu}
\item [{/-denom-term-sep}] (mixed partial derivatives only) horizontal spacing
inserted between the differentials in the denominator of a slash-form mixed
partial derivative; because a slash-form derivative is already spread out
horizontally, the default spacing is less than for the \texttt{\textbackslash frac}
form derivative; default = \texttt{1 mu}
\item [{term-sep-adjust}] (mixed partial derivatives only) adjustment (i.e.
reduction) to \textbf{(/-)denom-term-sep} when differentiation in a variable
occurs to an order other than 1; if, e.g., $\dl.p.x^{2}\dl.p.1y\dl.p.2z$
is the denominator of a mixed partial derivative in three variables, because
of the superscript the spacing between $\partial x^{2}$ and $\partial y$
is reduced by\textbf{ term-sep-adjust} from the spacing between $\partial y$
and $\partial z$; default = \texttt{-1 mu}
\item [{left-delim}] the left member of a delimiter pair wrapping the derivative,
the right member of which is subscripted to indicate a point of evaluation
or variables held constant; default = \texttt{\textbackslash left .}
\item [{right-delim}] the right member of a delimiter pair wrapping the derivative
and subscripted to indicate a point of evaluation or variables held constant;
default = \texttt{\textbackslash right |}
\item [{elbowroom}] adjustment to the whitespace between the left and right
delimiters and the enclosed derivative; negative values reduce the space;
default = \texttt{0 mu}
\item [{subscr-nudge}] horizontal adjustment of the subscript's placing relative
to the \textbf{right-delim}iter, e.g., a negative value compensates for
the curving inwards of a large right parenthesis; may be font dependent;
default = \texttt{0 mu}
\item [{/-left-delim}] for the slash form of derivative, the left member of
a delimiter pair wrapping the derivative and subscripted to indicate a
point of evaluation or variables held constant; default = \texttt{(}
\item [{/-right-delim}] for the slash form of derivative, the right member of
a delimiter pair wrapping the derivative, the right member of which is
subscripted to indicate a point of evaluation or variables held constant;
default = \texttt{)}
\item [{/-elbowroom}] adjustment to the whitespace between the left and right
delimiters and the enclosed slash-form derivative; default = \texttt{0
mu}
\item [{/-subscr-nudge}] for the slash form of derivative, horizontal adjustment
of the subscript's placing relative to the /-\textbf{right-delim}iter;
may be font dependent; default = \texttt{0 mu}
\end{description}
\subsection{ISO defaults}
You may not like the default settings that come with \texttt{diffcoeff}.
The package does not follow ISO 80000-2 -- it does not use upright `d's
nor does it wrap an ordinary differential coefficient in subscripted parentheses
to indicate a point of evaluation. Both `defects' can be remedied by calling
the package with the option \texttt{ISO}:\footnote{One can also use \texttt{ISO=true} to turn the option on and \texttt{ISO=false
}to turn the option off. }
\begin{lyxcode}
\textbackslash usepackage{[}ISO{]}\{diffcoeff\}
\end{lyxcode}
\begin{wraptable}[9]{o}{0.4\columnwidth}%
\centering{}\vspace{-4ex}
\caption{{\small{}ISO default changes}\label{tab:ISO-setting-changes}}
\abovetopsep=.5ex %
\begin{tabular}{lr}
\toprule
{\small{}key} & {\small{}default}\tabularnewline
\midrule
{\small{}op-symbol} & \texttt{\small{}\textbackslash mathrm\{d\}}\tabularnewline
{\small{}op-order-sep} & \texttt{\small{}0 mu}\tabularnewline
{\small{}left-delim} & \texttt{\small{}\textbackslash left (}\tabularnewline
{\small{}right-delim} & \texttt{\small{}\textbackslash right )}\tabularnewline
{\small{}subscr-nudge} & \texttt{\small{}-6 mu}\tabularnewline
\bottomrule
\end{tabular}\end{wraptable}%
The uppercase is essential -- an option \texttt{iso} is not recognised.
The \texttt{ISO} option results in changes to the default settings of Table~\ref{tab:Ordinary-derivatives}
as listed in Table~\ref{tab:ISO-setting-changes}. Any settings not mentioned
in Table~\ref{tab:ISO-setting-changes} retain the values presented in
Table~\ref{tab:Ordinary-derivatives}. Note that the subscript nudge figure
specified here is \emph{not} part of the standard, which makes no recommendation
about the subscript's positioning. But: the \texttt{-6 mu} figure with
a default or latin modern font gives a better representation of what is
displayed in the standard than a zero figure.
Because the `d' is upright with the \texttt{ISO} option, no extra space
is required between the symbol and the superscript in a higher order derivative.
Hence the zero value for the \texttt{op-order-sep}. ISO recommends subscripted
parentheses to indicate a point of evaluation. Hence the other entries
in the table. Because a large right parenthesis (penultimate setting) bends
inwards, to the left, a negative value for the last entry ensures the subscript
does not become detached from the derivative, looking lost in a sea of
whitespace.
Note that the \texttt{ISO} option will also produce upright `D's in derivatives
formed from `D'; see Subsection~\ref{subsec:D-delta-Delta} below.
\subsection{Partial derivatives}
\begin{wraptable}{o}{0.4\columnwidth}%
\centering{}\vspace{-4.5ex}
\caption{{\small{}Default changes: partial derivatives}\label{tab:Partial-deriv-defaults}}
\abovetopsep=.5ex %
\begin{tabular}{lr}
\toprule
{\small{}key} & {\small{}default}\tabularnewline
\midrule
{\small{}op-symbol } & \texttt{\small{}\textbackslash partial}\tabularnewline
{\small{}left-delim} & \texttt{\small{}\textbackslash left (}\tabularnewline
{\small{}right-delim} & \texttt{\small{}\textbackslash right )}\tabularnewline
{\small{}subscr-nudge } & \texttt{\small{}-6 mu}\tabularnewline
\bottomrule
\end{tabular}\end{wraptable}%
The default values given in Table~\ref{tab:Ordinary-derivatives}, when
they are relevant, apply to \emph{ordinary} derivatives. For partial derivatives,
the defaults are those of Table~\ref{tab:Partial-deriv-defaults}. All
other keys take the default values listed in Table~\ref{tab:Ordinary-derivatives}.
The last three entries here are not an attempt at ISO compatibility but
reflect the use of subscripted parentheses with partial derivatives to
indicate variables held constant, for instance in the Maxwell relations
of thermodynamics, one of which is
\[
\diffp SV[T]=\diffp PT[V].
\]
\subsection{Setting your own defaults: \texttt{\textbackslash diffdef\label{subsec:diffdef}}}
Versions 2 and later of the \texttt{diffcoeff} package provide a command,
\texttt{\textbackslash diffdef}, that enables users to set their own defaults.\texttt{ }For
example, if you wish to use upright `d's but not follow the ISO's use of
subscripted parentheses to indicate a point of evaluation, enter in the
preamble of your document the command\vspace{-2ex}
\begin{lyxcode}
\noindent %
\noindent\begin{minipage}[t]{1\columnwidth}%
\begin{lyxcode}
\textbackslash diffdef~\{\}~~~~
\begin{lyxcode}
\{~~~~~~
\begin{lyxcode}
op-symbol~~~~=~\textbackslash mathrm\{d\},~~~~
op-order-sep~=~0~mu
\end{lyxcode}
\}
\end{lyxcode}
\end{lyxcode}
%
\end{minipage}
\end{lyxcode}
\noindent Since a list of settings, like this one, is a comma-\emph{separated}
list, no comma is required for the last entry. That entry is a consequence
of the first: upright symbols do not require any extra separation between
the `d' and the superscript in a higher order derivative.
The other point to note is the empty pair of braces after the \texttt{\textbackslash diffdef}
command. \emph{They matter}. Their emptiness is what determines that it
is the \emph{default} values that are changed. If they contain some content,
then that content provides a \emph{name} for the particular set of values
in the following list. The \texttt{diffcoeff} package exploits this facility
to cope with the wide variety of forms displayed in the Rogues' Gallery
of Section~\ref{sec:Rogues'-gallery}.
\subsection{Variant forms}
For this package I needed to have a number of variant forms available to
illustrate the wide variety of ways in which derivatives are displayed.
The \texttt{\textbackslash diffdef} command in which the first argument
is \emph{filled} provides one half of the means of doing this. I've given
the single-letter name \texttt{p} to the following settings:
\noindent %
\noindent\begin{minipage}[t]{1\columnwidth}%
\begin{lyxcode}
\textbackslash diffdef~\{~p~\}
~~\{
~~~~op-symbol~~~~=~\textbackslash partial~,
~~~~left-delim~~~=~\textbackslash left~(~~,
~~~~right-delim~~=~\textbackslash right~)~,
~~~~subscr-nudge~=~-6~mu
~~\}
\end{lyxcode}
%
\end{minipage}
The second half of providing variant forms is to insert this name, \texttt{p},
between dots (periods, full stops) as the \emph{first} argument of the
\texttt{\textbackslash diff} command. Thus, repeating an example at the
end of Subsection~\ref{subsec:Partial-appending},
\begin{example}
\textbackslash diff.p.{*}\{\textbackslash frac PT\}U{[}V{]} = \textbackslash diff.p.{*}\{\textbackslash frac
1T\}V{[}U{]} $\Longrightarrow\quad{\displaystyle \diff.p.*{\frac{P}{T}}U[V]=\diff.p.*{\frac{1}{T}}V[U]}$
\end{example}
\noindent The effect is exactly the same as previously, when the \texttt{\textbackslash diffp}
command was used. Indeed, \texttt{diffcoeff} identifies \texttt{\textbackslash diffp}
with \texttt{\textbackslash diff.p.}, saving a few keystrokes and maintaining
compatibility with version 1 of the package. In \LaTeXe{} synatx,
\begin{lyxcode}
\textbackslash newcommand~\{~\textbackslash diffp~\}~\{~\textbackslash diff.p.~\}
\end{lyxcode}
Note that this identification of \texttt{\textbackslash diffp} with \texttt{\textbackslash diff.p. }means
there is no equivalent dot-delimited argument available for \texttt{\textbackslash diffp}.
The dot-delimited argument applies only to \texttt{\textbackslash diff}.
For example, to illustrate the upright-d form of derivative, without changing
the default math-italic form (which I prefer), one might enter in the preamble
\begin{lyxcode}
\noindent %
\noindent\begin{minipage}[t]{1\columnwidth}%
\begin{lyxcode}
\textbackslash diffdef~\{~up~\}~
~~\{
~~~~op-symbol~~~~=~\textbackslash mathrm\{d\},
~~~~op-order-sep~=~0~mu
~~\}
\end{lyxcode}
%
\end{minipage}
\end{lyxcode}
Apart from the key = value settings, the critical feature here is the name,
\texttt{up} (which is at your discretion and could equally be \texttt{upright}
or \texttt{roman} or even \texttt{Fred} if you so fancied). This ensures
that the changed settings apply only to this particular variant and do
not `infect' the overall defaults. To use this variant, all that is needed
is to add the name, between dots, to the \texttt{\textbackslash diff}
command:
\begin{example}
\textbackslash diff.up.yx $\Longrightarrow\quad{\displaystyle \diff.up.yx}.$
\end{example}
\noindent Each variant derivative inherits all the default values that
it does not explicitly countermand. Thus a point of evaluation is indicated
by a vertical rule which is the \texttt{diffcoeff} default\footnote{\noindent But not the ISO recommendation.}:
\begin{example}
\noindent \textbackslash diff.up.{*}\{\textbackslash frac\{F(x)\}\{G(x)\}\}x{[}x=1{]}
$\Longrightarrow\quad{\displaystyle \diff.up.*{\frac{F(x)}{G(x)}}x[x=1]}$
\end{example}
\noindent Dot-delimited arguments must always be the \emph{first} argument
of the \texttt{\textbackslash diff} command, even preceding an asterisk
(star) as in this example.
As another example, suppose for the subscripted indication of variables
held constant in a partial derivative that you want to see what things
look like if the subscript is \emph{not }nudged in towards the right parenthesis.
In that case define a variant form
\begin{lyxcode}
\textbackslash diffdef~\{~padrift~\}~\{~subscr-nudge~=~0~mu~\}
\end{lyxcode}
I have attached a name, \texttt{padrift},\texttt{ }to this setting,
\begin{example}
\textbackslash diff.padrift.Fx{[}y{]} $\Longrightarrow{\displaystyle \diff.padrift.Fx[y]}$
\end{example}
\noindent since, to my eye, the subscript seems detached from the expression
it qualifies -- is it perhaps a typo? -- and `adrift in a sea of whitespace'.
This is to be compared with the default
\begin{example}
\noindent \textbackslash diffpFx{[}y{]} $\Longrightarrow{\displaystyle \diffp Fx[y]}$
\end{example}
\noindent where the subscript is tucked in close to the right parenthesis
and is clearly connected to it and the expression it delimits.
Some might want to distinguish notationally a point of evaluation for a
partial derivative from variables held constant, perhaps using a vertical
rule for the former and (the default) parentheses for the latter. It would
suffice then to add to the preamble
\begin{lyxcode}
\noindent %
\noindent\begin{minipage}[t]{1\columnwidth}%
\begin{lyxcode}
\textbackslash diffdef~\{~pvrule~\}~\{~op-symbol~=~\textbackslash partial~\}~
\end{lyxcode}
%
\end{minipage}
\end{lyxcode}
(or some other name of your choosing). This gives
\begin{example}
\textbackslash diff.pvrule.\{F(x,y)\}x{[}x=1{]}$\Longrightarrow{\displaystyle \diff.pvrule.{F(x,y)}x[x=1]}$
\end{example}
\subsubsection{Text-style and script-style derivatives\label{subsec:Text-and-script-style}}
As noted earlier, the \texttt{diffcoeff} package assumes that derivatives
of fraction-like form will be used in display-style expressions and that
the slash form will be used for inline use (text style). This is the usual
practice. But if one does want to use the fraction form in an inline expression,
say \texttt{\textbackslash diffp ST{[}V{]}} displaying as $\diffp ST[V]$,
then some tweaking of settings is necessary: the subscript is obviously
too close to the right parenthesis and, to my eye, there is too much `elbowroom'
between the derivative and the enclosing parentheses. Hence define
\noindent %
\noindent\begin{minipage}[t]{1\columnwidth}%
\begin{lyxcode}
\textbackslash diffdef~\{~ptxt~\}~
~~\{
~~~~op-symbol~~~~~~=~\textbackslash partial,
~~~~denom-term-sep~=~1~mu~~~~,
~~~~left-delim~~~~~=~\textbackslash left~(~,
~~~~right-delim~~~~=~\textbackslash right~),
~~~~elbowroom~~~~~~=~-2~mu~~~,
~~~~subscr-nudge~~~=~-3~mu~~~
~~\}
\end{lyxcode}
%
\end{minipage}
This gives, for the same example, \texttt{\textbackslash diff.ptxt.ST{[}V{]}}
displaying as $\diff.ptxt.ST[V]$, where the subscript is better positioned
and there is a better fit between parentheses and derivative.
\subsubsection{Derivatives from D, \textbackslash delta, \textbackslash Delta\label{subsec:D-delta-Delta}}
In addition to \texttt{\textbackslash diff.p.},\texttt{ diffcoeff} has
three other \emph{built-in} variant forms that are commonly used: \texttt{\textbackslash diff.D.},
\texttt{\textbackslash diff.delta.}, and \texttt{\textbackslash diff.Delta.},
corresponding to derivatives formed from $D$, $\delta$ and $\Delta$
respectively.
In fluid dynamics the \emph{material }or \emph{substantive} derivative
uses an uppercase $D$ in place of $d$. For example, the continuity equation
is,
\begin{example}
\textbackslash diff.D.\{\textbackslash rho\}t=\textbackslash diffp\textbackslash rho
t + \textbackslash mathbf\{u\textbackslash cdot\}\textbackslash nabla\textbackslash rho
$\Longrightarrow{\displaystyle \diff.D.\rho t=\diffp\rho t+\mathbf{u\cdot}\nabla\rho}$
\end{example}
\noindent where \texttt{\textbackslash diff.D.} produces the D-derivative.
If you want upright `D's, then the \texttt{ISO} package option will produce
that effect. Alternatively, \vspace{-2ex}
\begin{lyxcode}
\noindent %
\noindent\begin{minipage}[t]{1\columnwidth}%
\begin{lyxcode}
\textbackslash diffdef~\{~Up~\}~
~~\{
~~~~op-symbol~~~~=~\textbackslash mathrm\{D\},
~~~~op-order-sep~=~0~mu
~~\}
\end{lyxcode}
%
\end{minipage}
\end{lyxcode}
\noindent provides a variant with upright `D's.
In introductory calculus texts the simple $\delta$-derivative is used.
This is achieved with the \texttt{\textbackslash diff.delta.} command
\begin{example}
\textbackslash diff.delta.yx $\Longrightarrow{\displaystyle \diff.delta.yx}.$
\end{example}
\noindent This form also features in analytical mechanics (in the Rogues'
Gallery, the final example at (\ref{eq:eg6})).
Similarly, \texttt{\textbackslash diff.Delta.} forms a derivative from
$\Delta$:
\begin{example}
\textbackslash diff.Delta.y/x $\Longrightarrow{\displaystyle \diff.Delta.y/x,}$
\end{example}
\noindent where the slash form of the derivative is shown in this instance.
Higher order forms of these derivatives, points of evaluation, appending
the differentiand with a star argument, all follow exactly as for the `pure'
\texttt{\textbackslash diff} command.
\paragraph{The commands \textbackslash Diff, \textbackslash diffd, \textbackslash Diffd}
For compatibility with version 1 of \texttt{diffcoeff}, the commands \texttt{\textbackslash Diff},
\texttt{\textbackslash diffd} and \texttt{\textbackslash Diffd} are available
and also produce the $D$, $\delta$ and $\Delta$ derivatives. Just as
\texttt{\textbackslash diffp} is identified with \texttt{\textbackslash diff.p.}
for partial derivatives, these commands are identified with \texttt{\textbackslash diff.D.},
\texttt{\textbackslash diff.delta.}, and \texttt{\textbackslash diff.Delta}
through commands equivalent to\footnote{In fact the actual commands in \texttt{diffcoeff.sty} use the syntax of
the \texttt{xparse} package, e.g. \texttt{\textbackslash NewDocumentCommand
\{ \textbackslash Diff \} \{ \} \{ }\textbackslash diff.D. \}, and similarly
for the others.}
\begin{lyxcode}
\textbackslash newcommand\{\textbackslash Diff\}\{\textbackslash diff.D.\}
\textbackslash newcommand\{\textbackslash diffd\}\{\textbackslash diff.delta.\}
\textbackslash newcommand\{\textbackslash Diffd\}\{\textbackslash diff.Delta.\}
\end{lyxcode}
Unless one is using such variant forms frequently, it seems simpler to
remember that they are available as dot-delimited arguments to the \texttt{\textbackslash diff}
command, using the obvious name in each case, rather than having to remember
the precise camel-case form of name of the \texttt{\textbackslash Diff},
\texttt{\textbackslash diffd} and \texttt{\textbackslash Diffd} commands.
\subsection{The \texttt{.def} file\label{subsec:The-.def-file}}
This mechanism of variant formation is how I have been able to illustrate
in the Rogues' Gallery, Section~\ref{sec:Rogues'-gallery}, the wide variety
of different usages culled from the literature. But the thought arises:
if a variant is to be used only once or twice, isn't this a lot of bother?
Why not just construct the variant derivative `by hand' out of \texttt{\textbackslash frac}
and \texttt{\textbackslash mkern} for example? The reason for making such
definitions is that they can be transferred from document to document.
For instance, definitions placed in the preamble can be copied to the preamble
of another document.
But that is hardly optimal. Instead, \texttt{diffcoeff} allows such definitions
to be placed in a text file with the the extension \texttt{.def} and a
name of your choosing. For the present document the file is called \texttt{diffcoeff-doc.def}
and has been placed in the same directory as \texttt{diffcoeff.tex}. To
use these definitions, the \texttt{diffcoeff} package is called with the
command
\begin{lyxcode}
\textbackslash usepackage{[}def-file=diffcoeff-doc{]}\{diffcoeff\}
\end{lyxcode}
But even this process still means copying a definition file from directory
to directory as one works on different documents. The solution is to make
a definition file available for \emph{all} documents and the way to do
that is by placing it in the texmf tree, preferably not the one created
by your \TeX{} distribution (perhaps MiKTeX or TexLive), but your own \emph{personal}
texmf tree.
\texttt{\vspace{2ex}
}
\noindent %
\noindent\fbox{\begin{minipage}[t]{1\linewidth - 2\fboxsep - 2\fboxrule}%
\textbf{Personal texmf tree? }
This is a directory for `waifs and strays' of the \TeX{} system that are
not included in standard distributions like MiK\TeX{} or \TeX Live. For
instance, it is the place for personal packages designed for your own particular
circumstances or preferences, and is structured like the standard MiK\TeX{}
or \TeX Live hierarchy but placed in another location so that there is
no chance of its being overwritten when MiK\TeX{} or \TeX Live are updated.
However, those distributions need to be alerted to its existence. For MiK\TeX ,
open the MiK\TeX{} console, click on \textsf{Settings} and then the \textsf{Directories}
tab. Click the \textsf{+} button and navigate to your personal texmf tree
to add it to the MiK\TeX{} search path. Having added it, you will then need
to refresh the filename database by clicking on the \textsf{Tasks} menu
and selecting the obvious entry. I am not familiar with \TeX Live but presume
a similar process will apply there.%
\end{minipage}}
\medskip{}
\noindent Provided your \LaTeX{} distribution knows about your personal
texmf tree, then a \texttt{.def} file placed within it, will be accessible
to all documents.
\subsubsection{Structure of the \texttt{.def} file}
The best way to see what a \texttt{.def} file looks like is to view \texttt{diffcoeff-doc.def
}in a text editor.\footnote{This file should be in the same directory as \texttt{diffcoeff.pdf} and
\texttt{diffcoeff.tex} in your \LaTeX{} distribution.}
If you want your variant definitions to use defaults different from those
supplied with the \texttt{diffcoeff} package, then the first definition
in the \texttt{.def} file should be the one setting the new defaults, with
an \emph{empty} first argument to the \texttt{\textbackslash diffdef}
command:
\begin{lyxcode}
\noindent %
\noindent\begin{minipage}[t]{1\columnwidth}%
\begin{lyxcode}
\textbackslash diffdef~\{\}~~~~
\begin{lyxcode}
\{~~~~~~
\begin{lyxcode}
key-1~=~value-1,~~~~
key-2~=~value-2,
...
key-n~=~value-n
\end{lyxcode}
\}
\end{lyxcode}
\end{lyxcode}
%
\end{minipage}
\end{lyxcode}
The key-value list is a comma-separated list; hence the last entry doesn't
need to end with a comma. Nudge and separation values need to include the
unit, \texttt{mu}; a numerical value alone will result in error.\texttt{ }Because
a \texttt{.def} file\texttt{ }is a \LaTeX{} file, comments need to start
with a \texttt{\%} character.
\subsubsection{\texttt{diffcoeff.def}}
Note that if the \texttt{diffcoeff} package is invoked without an explicit
\texttt{def-file= <filename>} option statement, as here,
\begin{lyxcode}
\textbackslash usepackage\{diffcoeff\}
\end{lyxcode}
then it will search in the texmf tree (the \LaTeX{} distribution's and your
personal one) and the document directory for a file \texttt{diffcoeff.def}
and if found will load that. This file should contain definitions of those
variants you are likely to use in multiple documents. In my personal texmf
tree (which I've put at \texttt{D:\textbackslash texmf\textbackslash}
on a Windows machine) the file \texttt{diffcoeff.def} is located in the
directory \texttt{D:\textbackslash texmf\textbackslash tex\textbackslash latex\textbackslash diffcoeff\textbackslash}.
(The backslashes are replaced by forward slashes on linux machines.)
Variants likely to be of value only to a specific document should be added
to the preamble of that document. Alternatively, they could be added to
\texttt{diffcoeff.def} but that added-to file saved to the document directory
under a \emph{different} name -- e.g. I've saved the variants required
for the present document under the name \texttt{diffcoeff-doc.def}. Many
of these variants were created solely to illustrate points in the present
document and I have no intention of using them in my own work. Consequently
my \texttt{diffcoeff.def} file is smaller, containing only a selection
from \texttt{diffcoeff-doc.def}.
\section{Differentials in integrals, etc.}
Forms like $dx$ occur not only in derivatives but also in other contexts,\footnote{I thank Sergio Callegari for drawing my attention to this rather obvious
point, and its omission from previous versions of \texttt{diffcoeff}.} for example, the expression for a total differential like
\[
\dl P=\diffp Px\dl x+\diffp Py\dl y+\diffp Pz\dl z,
\]
or an integral like $\int\sin x\dl2x$, or a multi-variable integral like
\[
\iiintop_{-\infty}^{\infty}V(x,y,z)\dl3x\dl2y\dl2z.
\]
Surely we want the `d's in these expressions to correspond to their form
(upright or math italic) in derivatives? If, for instance, the \texttt{ISO}
package option has been set, one doesn't want to be writing \texttt{\textbackslash mathrm\{d\}}
in every (or indeed any) integral. To this end, \texttt{diffcoeff} provides
a command \texttt{\textbackslash dl} to write the `d' in a differential
in a manner consistent with the default form used in derivatives. In the
present document, the default form is math-italic and so
\begin{example}
\textbackslash dl x $\Longrightarrow\dl x.$
\end{example}
\noindent It is also possible\footnote{\noindent From version 3.1 of \texttt{diffcoeff}; version 3.0 of the package
produced a \LaTeX{} error.} to use the command before \texttt{\textbackslash vec\{x\}} or \texttt{\textbackslash mathbf\{x\}}:
\begin{example}
\textbackslash dl \textbackslash vec\{x\} $\Longrightarrow\dl\vec{{x}},$
~~~~\textbackslash dl \textbackslash mathbf\{x\} $\Longrightarrow\dl\mathbf{x}.$
\end{example}
\subsection{Options}
There are two options available with the differential command.
The first is the dotted name option discussed in Section~\ref{sec:Changing-defaults}.
Thus, to illustrate a differential with an upright `d', write
\begin{example}
\textbackslash dl.up.x $\Longrightarrow\dl.up.x.$
\end{example}
\noindent This presumes that a variant derivative with upright `d's has
been defined and the definition is available, either in the preamble or
in an accessible \texttt{.def} file, as discussed in the previous section.
Alternatively, if you have defined your default derivative to use upright
`d's (perhaps with the \texttt{ISO} option) then \texttt{\textbackslash dl}
alone will suffice to produce an upright `d'.
Since the variant \texttt{\textbackslash diff.p.} is defined in \texttt{diffcoeff.sty}
itself, \texttt{\textbackslash dl.p.} is always available and at 6 keystrokes
offers a slightly shorter way of writing \texttt{\textbackslash partial}
(8 keystrokes). But the only reason one might use this variant `in earnest'
is because of the convenience offered by the second option to the \texttt{\textbackslash dl}
command.
This second option inserts spacing before the `d'. If \texttt{\textbackslash dl}
is followed by a digit (0, 1, 2, ..., 9) it will insert a horizontal space
of that number of mu before the `d'; (\texttt{\textbackslash dl0x} has
the same effect as \texttt{\textbackslash dl x}.)\texttt{ }Thus, an alternative
way of writing an example in Chapter~18 of \emph{The \TeX book} is
\begin{example}
\textbackslash dl x\textbackslash dl3y=r\textbackslash dl3r\textbackslash dl3\textbackslash theta
$\Longrightarrow\dl x\dl3y=r\dl3r\dl3\theta.$
\end{example}
\noindent To my eye this is too much space; I prefer
\begin{example}
\noindent \textbackslash dl x\textbackslash dl2y=r\textbackslash dl2r\textbackslash dl2\textbackslash theta
$\Longrightarrow\dl x\dl2y=r\dl2r\dl2\theta$
\end{example}
\noindent I used \texttt{\textbackslash dl3x\textbackslash dl2y\textbackslash dl2z}
when writing the triple integral above, \emph{no} extra spacing when writing
the total differential expression, since the differentials are already
distinct from the preceding fraction forms $\diff.ptxt.Px$ etc., and \texttt{\textbackslash dl2x}
when writing $\int\sin x\dl2x$.
As remarked above, the \texttt{\textbackslash dl.p.} alternative to \texttt{\textbackslash partial
}is unlikely to be of use except for a document, like the present one,
illustrating various points of usage. Thus, to illustrate spacing in the
denominator of a mixed partial derivative, I have earlier used \texttt{\textbackslash dl.p.x\textbackslash dl.p.2y\textbackslash dl.p.2z},
and the variation to that spacing when a higher-order differentiation occurs:
\begin{example}
\textbackslash dl.p.x\textasciicircum 2\textbackslash dl.p.1y\textbackslash dl.p.2z
$\Longrightarrow\dl.p.x^{2}\dl.p.1y\dl.p.2z.$
\end{example}
\noindent Note here that the spacing digit option \emph{follows} the dot-delimited
name option.
\section{Rationale}
Version 1 of the \texttt{diffcoeff} package arose from a need to simplify
the parsing of differential coefficients for another program I was working
on which was struggling to `read' all the possible permutations of \texttt{\textbackslash frac}
or \texttt{\textbackslash tfrac} or \texttt{\textbackslash dfrac} or
slash forms of the derivative, of \texttt{d} or \texttt{\textbackslash mathrm\{d\}}
or \texttt{\textbackslash partial} or \texttt{D} or \texttt{\textbackslash mathrm\{D\}}
or \texttt{\textbackslash nabla},\texttt{ }and of points of evaluation
delimited by vertical rules or parentheses.\texttt{ }Although regular expressions
coped with most of these cases, it was \emph{messy}.
There are other packages which have commands for the derivative (e.g.,
\texttt{bropd}, \texttt{commath},\texttt{ esdiff}, \texttt{physymb}) but
none quite gave what I wanted -- although they probably cope with most
users' needs. \texttt{esdiff} came closest to what I was seeking but failed
when it came to combining algebraic and numeric orders of differentation
in a mixed partial derivative (and made heavier use of braces than I would
like in that case too).
\subsection{\texttt{diffcoeff.sty}}
I have tried to make using \texttt{diffcoeff} intuitive. Looking at the
other packages mentioned, writing something like \texttt{\textbackslash diff{[}n{]}\{f\}\{x\}}
(which can be trimmed to \texttt{\textbackslash diff{[}n{]}fx} for single-token
arguments) seems `natural' -- only \texttt{physymb} deviates from the
pattern.
\begin{itemize}
\item It seems consistent with this pattern to use a comma list for specifying
the orders of differentiation of the variables in a higher order mixed
partial derivative (and its suppression when all are of order 1)
\item Having specified the orders, surely the program itself should calculate
the overall order? \texttt{esdiff} does this for numerical orders; \texttt{diffcoeff}
does this for both numeric and algebraic orders,
\end{itemize}
\begin{example}
\textbackslash diffp{[}m-(k+1),m+(k-1){]}\{F(x,y,z)\}\{x,y,z\}
$\Longrightarrow{\displaystyle \diffp[m-(k+1),m+(k-1)]{F(x,y,z)}{x,y,z}},$
\end{example}
\begin{itemize}
\item and where it fails, either to calculate at all or to present the result
in a preferred form, offers the order-override option:
\end{itemize}
\begin{example}
\textbackslash diffp{[}m+(k+1),m+(k-1){]}{[}2(m+k+1){]}\{F(x,y,z,w)\}\{x,y,z,w\}
$\Longrightarrow{\displaystyle \diffp[m+(k+1),m+(k-1)][2(m+k+1)]{F(x,y,z,w)}{x,y,z,w}}.$
\end{example}
\begin{itemize}
\item I wished to avoid the unnecessary writing of superscripts, subscripts and
brace pairs. In the examples just given, no superscript tokens \texttt{\textasciicircum}
are written by the user despite the higher-order differentiation in $x$
and $y$, and only the two inescapable brace pairs are required.
\item The use of a comma list for the second mandatory argument in a partial
derivative -- the list of variables -- makes differentiations in super-
or subscripted symbols (as occurs prolifically in tensor calculus) easier
to both write and read by avoiding unnecessary brace pairs.
\end{itemize}
\begin{example}
\textbackslash diffp\{A\_i\}\{ x\textasciicircum j,x\textasciicircum k
\} $\Longrightarrow\quad{\displaystyle \diffp{A_{i}}{x^{j},x^{k}}.}$
\end{example}
\begin{itemize}
\item Should a point of evaluation or variables held constant be considered part
of the derivative? Thermodynamic usage was decisive here. The partial derivative
alone is ambiguous -- the parentheses and subscript are essential to understand
what is being stated:
\[
\diffp ST[V]
\]
Hence provision for these extra elements was included in the derivative
commands.
\item Given the position of the subscripted symbol in the displayed derivative,
it's positioning as the \emph{final} argument in the derivative commands
feels inevitable.
\item Version 1 of \texttt{diffcoeff} used braces for this argument to avoid
any possible confusion with a following mathematical expression. That use
of braces is now deprecated in \texttt{xparse}. Consequently later versions
of the package use square brackets, conforming with familiar \LaTeX{} practice.
The only special remembering needed is avoidance of a space before the
argument -- and if it does slip in, it won't cause a \LaTeX{} error. It
will be treated as part of a following mathematical expression and displayed
as such.
\item The star option also prompted the question: is it needed? After all, one
can always leave the first mandatory argument empty and append the differentiand
`by hand'. But once the provision for points of evaluation or variables
held constant was incorporated into the derivative commands, the star option
became the simplest way of handling appended differentiands since the parentheses
for a variable held constant must wrap around the differential operator
\emph{and} differentiand. Once available, it provides a simple way of switching
between (and comparing) the appearance of differentiand-in-the-numerator
and differentiand-appended.
\item The slash option was added to the derivative commands after seeing how
widely such forms are used in texts at all levels. The placement of the
slash, between the two mandatory arguments, seems more-or-less self-evident.
\item The final option added to \texttt{\textbackslash diff} (and not present
in version 1) was the dot-delimited name option. Once \texttt{xtemplate}
was used as the basis of the package this seemed the most straightforward
way of making available, ready to hand, the wealth of variants that \texttt{xtemplate}
makes possible. (It's just a pity that the second dot is needed, and a
single-dot naming scheme can't be used, but \texttt{xparse} forces my hand
here.)
\item Having added the dot-delimited name option, the use of a \texttt{.def}
file to store variants or preferred defaults is more-or-less forced, otherwise
one is faced with making these definitions anew for each new document (or
locating a previous document and copying from that to the new one).
\item To handle possible differences between display-style and text-style (and
script-style) derivatives (see Subsection~\ref{subsec:Text-and-script-style})
I considered using \TeX 's \texttt{\textbackslash mathchoice} command.
This command takes four arguments, corresponding to display-, text-, script-
and scriptscript-styles and would require forming four derivatives each
time a derivative is used, `just in case'. In fact fraction-form derivatives
are used overwhelmingly in display-style expressions, the slash form being
used for inline use. Given the ease of defining a fraction-form variant
for text-style use, and the rareness of such use, employing variants seemed
the way to go. It is the one adopted and avoids the computational burden
associated with the use of \texttt{\textbackslash mathchoice}.
\item After version 2 of the package appeared on CTAN, it was pointed out to
me that there was an issue of consistency between the form of `d' used
in a derivative (upright or math-italic) and the form used in an integral.
I had overlooked this matter completely and in version 3 of the package
remedied the omission with the differential command \texttt{\textbackslash dl}.
A spacing option for \texttt{\textbackslash dl} was almost inevitable.
The demands of writing the present document forced another, the dot-delimited
name option.
\end{itemize}
\section{Commands}
\begin{description}
\item [{\texttt{\textbackslash diff}}] options:
\begin{enumerate}
\item .\emph{name}. for the given settings
\item {*} append-differentiand switch
\item {[}\emph{order}{]} or {[}\emph{comma-list of orders}{]} of differentiation
\item {[}\emph{order-override}{]}
\item \{\emph{differentiand}\} (mandatory)
\item / slash-form switch
\item \{\emph{comma list of differentiation variables}\} (mandatory)
\item {[}\emph{point of evaluation/variables held constant}{]}
\item \{as for previous, but using braces\} (deprecated)
\end{enumerate}
\item [{\texttt{\textbackslash diffdef}}] options:
\begin{enumerate}
\item \{\emph{name}\}
\item \{\emph{key=value comma list}\}
\end{enumerate}
\item [{\texttt{\textbackslash diffp}}] \texttt{= \textbackslash diff.p.}
\item [{\texttt{\textbackslash dl}}] options:
\begin{enumerate}
\item .\emph{name}. (as for \texttt{\textbackslash diff})
\item \emph{digit} (insert spacing of this number of mu before the `d')
\end{enumerate}
\item [{\texttt{\textbackslash negmu}}] insert a $-1$ mu space
\item [{\texttt{\textbackslash nilmu}}] insert a $0$ mu space
\item [{\texttt{\textbackslash onemu}}] insert a $1$ mu space
\item [{\texttt{\textbackslash twomu}}] insert a $2$ mu space
\end{description}
Deprecated:
\begin{description}
\item [{\texttt{\textbackslash Diff}}] preferred form: \texttt{\textbackslash diff.D.}
\item [{\texttt{\textbackslash diffd}}] preferred form \texttt{\textbackslash diff.delta.}
\item [{\texttt{\textbackslash Diffd}}] preferred form\texttt{ \textbackslash diff.Delta.}
\end{description}
\end{document}
|