summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/pittetd/pittetd.dtx
blob: 10594986ad95d8faec335813d473ee6ccd14931d (plain)
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
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
% \iffalse meta-comment
%
% pittetd - University of Pittsburgh ETD (Electronic Theses and Dissertations) LaTeX class
% Copyright 2003-4 Federico Garcia (feg8@pitt.edu)
% -------------------------------------------
% 
%
% This program can be redistributed and/or modified under the terms
% of the LaTeX Project Public License distributed from CTAN archives
% in the directory macros/latex/base/lppl.txt; either version 1 of
% the License, or (at your option) any later version.
%
%
%<*driver>
% \fi
\ProvidesFile{pittetd.dtx}[2004/08/17 v1.618 Pitt ETD]
% \iffalse
\documentclass[11pt]{ltxdoc}
\usepackage{array}
\usepackage{xspace}
\usepackage{latexsym}
\usepackage[hyperindex=false,colorlinks,bookmarks,dvipdfm,%
    citecolor=blue,urlcolor=blue,bookmarksnumbered,bookmarksopen]{hyperref}
\GetFileInfo{pittetd.dtx}
\EnableCrossrefs
\title{Electronic Theses and Dissertations\\ at Pitt\\ (a \LaTeXe\ class)}
\date{2004/08/17}
\author{Federico Garcia \thanks{University of Pittsburgh, Electronic Theses and Dissertations (ETD) Working Group.}}
\setcounter{IndexColumns}{2}
\IndexPrologue{\section*{Index}\addcontentsline{toc}{section}{Index} Numbers written in italics refer to the page where the corresponding entry is described. A list of mentioned packages is found under `packages mentioned;' of environments under `environments;' of \pittetd options under `options to \pittetd.'}
\CodelineIndex
%\OnlyDescription
\hypersetup{pdftitle=ETD at Pitt (a LaTeX class),%
    pdfauthor=Federico Garcia}
\begin{document}
\maketitle
\DocInput{\filename}
\end{document}
%</driver>
% \fi
%\makeatletter\def\lowBibTeX{{\reset@font\rmfamily B\kern-.05em%
%    \raise.0ex\hbox{\scshape i\kern-.025em b}\kern-.08em%
%    T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}}
%\def\BibTeX{\protect\lowBibTeX}\makeatother
%\newcommand\pdf{{\small PDF}\xspace}
%\newcommand\PDF{{\small PDF}\xspace}
%\newcommand\FG{{\small FG}\index{FG (Format Guidelines)}\xspace}
%\newcommand\ETD{{\small ETD}\xspace}
%\newcommand\pittetd{\textsf{pittetd}\xspace}
%\newcommand\ex{\begingroup\unskip\nobreak\hfil\penalty50\hskip1em\hbox{}\nobreak\hfil\small\textbf{Ex.:\ }}
%\newcommand\ample{\parfillskip0pt \par\endgroup}
%\newcommand\package[1]{\index{packages mentioned:>#1=\texttt{#1}}\index{#1=\texttt{#1} package}}
%\newcommand{\option}[1]{\index{options to \pittetd:>\texttt{#1}}\index{pittetd=\pittetd>options}\index{#1=\texttt{#1} option}}
%\DoNotIndex{\',\.,\@M,\@@input,\@Alph,\@alph,\@addtoreset,\@arabic,\@auxout}
%\DoNotIndex{\@dblarg,\@dotsep,\@dottedtocline,\@empty,\@firstoftwo,\@float,\@gobble,\@gobbletwo,\@ignoretrue}
%\DoNotIndex{\@ifstar,\@ifundefined,\@input,\@ixpt,\@m,\@minus,\@mkboth}
%\DoNotIndex{\@ne,\@nil,\@noitemerr,\@nomath,\@plus,\@roman,\@Roman,\@set@topoint}
%\DoNotIndex{\@tempboxa,\@tempcnta,\@tempdima,\@tempdimb,\@tempcsa,\@tempswa,\@tempskipa}
%\DoNotIndex{\@tempswafalse,\@tempswatrue,\@viipt,\@viiipt,\@vipt}
%\DoNotIndex{\@vpt,\@warning,\@xiipt,\@xipt,\@xivpt,\@xpt,\@xviipt}
%\DoNotIndex{\@xxpt,\@xxvpt,\\,\ ,\addpenalty,\addtolength,\addvspace}
%\DoNotIndex{\advance,\ast,\begin,\begingroup,\bfseries,\bgroup,\box}
%\DoNotIndex{\cdot,\centering,\cite,\clearpage,\closeout,\CodelineIndex,\cr,\csname,\day,\DeclareOption}
%\DoNotIndex{\def,\DisableCrossrefs,\divide,\DocInput,\documentclass}
%\DoNotIndex{\DoNotIndex,\egroup,\ifdim,\else,\fi,\em,\edef,\endcsname,\endinput,\endtrivlist}
%\DoNotIndex{\EnableCrossrefs,\end,\end@dblfloat,\end@float,\endgroup}
%\DoNotIndex{\endlist,\everycr,\everypar,\ExecuteOptions,\expandafter}
%\DoNotIndex{\filedate,\filename,\fileversion,\fontsize,\framebox,\gdef}
%\DoNotIndex{\global,\halign,\hangindent,\hbox,\hfil,\hfill,\hrule}
%\DoNotIndex{\hsize,\hskip,\hspace,\hss,\immediate,\if@tempswa,\ifcase,\or,\fi,\fi}
%\DoNotIndex{\ifhmode,\ifvmode,\ifnum,\iftrue,\ifx,\fi,\fi,\fi,\fi,\fi}
%\DoNotIndex{\input}
%\DoNotIndex{\kern,\leavevmode,\let,\leftmark}
%\DoNotIndex{\list,\llap,\long,\m@ne,\m@th,\mark,\markboth,\markright}
%\DoNotIndex{\mbox,\month,\newcommand,\newcounter,\newenvironment}
%\DoNotIndex{\NeedsTeXFormat,\newdimen}
%\DoNotIndex{\newlength,\newpage,\nobreak,\noexpand,\noindent,\normalfont,\null,\number}
%\DoNotIndex{\numberline,\OldMakeindex,\OnlyDescription,\openout,\p@}
%\DoNotIndex{\par,\paragraphmark,\parfillskip}
%\DoNotIndex{\penalty,\PrintChanges,\PrintIndex,\ProcessOptions}
%\DoNotIndex{\protect,\ProvidesClass,\raggedbottom,\raggedright}
%\DoNotIndex{\refstepcounter,\relax,\renewcommand}
%\DoNotIndex{\rightmargin,\rightmark,\rightskip,\rlap}
%\DoNotIndex{\secdef,\selectfont,\setbox,\setcounter,\setlength}
%\DoNotIndex{\settowidth,\sfcode,\skip,\sloppy,\slshape,\space}
%\DoNotIndex{\string,\symbol,\the,\trivlist,\typeout,\tw@,\undefined}
%\DoNotIndex{\usecounter,\usefont,\vfil,\vfill,\viiipt}
%\DoNotIndex{\viipt,\vipt,\vskip,\vspace}
%\DoNotIndex{\wd,\xiipt,\year,\z@}
%\DoNotIndex{\appendices,\diplomaone,\diplomatwo,\diplomathree,\diplomafour,\degreeabr,\degrees}
%\DoNotIndex{\dissauthor,\dissdate,\disstitle,\disstitlepage,\dissyear,\doctype}
%\DoNotIndex{\advisorname,\university,\proposal,\advisor,\chairpersonname,\authortitle,\chair}
%\DoNotIndex{\committeeone,\committeetwo,\committeethree,\committeefour,\committeefive,\committeesix}
%{\catcode`\|=12\gdef\options#1#2{\index{options to \pittetd:>\texttt{#1}|#2}\index{pittetd=\pittetd>options}\index{#1=\texttt{#1} option|#2}}}
%\tableofcontents
%\parskip4pt plus .2 ex minus .2ex
%{\small\begin{description}
%\item[Pitt \ETD\ Webpage:] \url{http://www.pitt.edu/~graduate/etd/}\index{Pitt ETD>webpage}
%\item[\pittetd's Webpage:]\mbox{}\\ \url{http://www.pitt.edu/~graduate/etd/latextemplate.html/}\index{pittetd=\textsf  {pittetd}\xspace  >webpage}
%\item[\TeX\ Users Group:] \url{http://www.tug.org/} (with a link to {\small CTAN})\index{CTAN (Comprehensive \TeX\ Archive Network)}
%\end{description}}
%\section{Introduction}
%
%This is the guide to the \pittetd \LaTeXe\ document class, designed for the preparation of electronic theses and dissertations (\ETD) at the University of Pittsburgh. It is recommended that users read this entire documentation before starting using \pittetd, so that they will have an idea of the different possibilities and options, some of which are particular to \pittetd and therefore not usual in standard \LaTeX\ classes\index{standard classes}\index{classes>standard}.
%
%Users will find below a description of \pittetd usage, extended with an introduction to some of the most relevant features of the |hyperref| package. In addition, when this document has been produced by running \LaTeX\ on the file |pittetd.dtx|, it also contains a commented transcript of the code, so that users can modify things if they need to (and know what they are doing). In the version downloadable from the Pitt~\ETD webpage, this latter part is omitted. A separate document, \emph{Comments on using \LaTeX\ for theses}, also prepared for Pitt~\ETD authors, describes some standard tools of \LaTeX\ that may or may not be known to the reader but can certainly prove useful when writing the thesis or dissertation. Touched upon are topics such as inclusion of graphics and the handling of large, book-length documents \cite{comments}. 
%
%Throughout this text reference is made to the \emph{Format Guidelines for Electronic Thesis and Dissertation Preparation at the University of Pittsburgh}, downloadable from the Pitt~\ETD webpage. The abbreviation \FG is used to refer to it; page numbers are indicated in parenthesis.\index{FG (Format Guidelines)} 
%
%Section~\ref{pdf} describes the creation of interactive \PDF files through \LaTeX, introducing the two main tools for that effect, the programs {\PDF}\LaTeX\ and \textsf{dvipdfm}. Section~\ref{installation} explains how to install \pittetd and the main \LaTeX\ packages needed for its proper working. Also, cursory information for the installation of {\PDF}\LaTeX\ and \textsf{dvipdfm} is given.
%
%In section~\ref{mind} some general considerations are given about the best ways to use \pittetd (and to cope with its restrictions). Use of packages and the issues it might bring about (notably incompatibility)is treated in a special subsection.
%
%Detailed information about the options, available commands, and use of \pittetd can be found in section~\ref{usage}. Typesetting of the preliminary pages is described in subsection~\ref{prelim}.
%
%Section~\ref{hyperref} describes in an introductory way the basic features of |hyperref|\package{hyperref}, the package that implements interactivity into \LaTeX\ documents. 
%
%Finally, section~\ref{checklist} gives some suggestions for a final format review before submitting an {\small ETD} written with \pittetd. It warns about those problems that are most likely to occur because they lie beyond \pittetd's control.
%
%\section[\PDF creation through \LaTeX]{{\large PDF} creation through \LaTeX}\label{pdf}\index{PDF>creation}
%
%In principle, \pittetd is equipped to fulfill the basic interactivity requirements of the \FG, namely the creation of bookmarks\index{bookmarks} from the entries in the Table of Contents, the List of Figures, and the List of Tables, and the implementation of these entries themselves as links\index{links} to the corresponding page. This is done by means of invoking the formidable |hyperref|\package{hyperref} package,\footnote{Written by Sebastian Rahtz.} which offers the basic functions for interactive handling (section~\ref{hyperref} below offers an introductory guide to other features from this package that users can take advantage of). Thus, |hyperref| has to be---and it usually is in standard distributions of \LaTeX---installed in the system for \pittetd to be able to fulfill these tasks (section~\ref{installation} offers immediate help on the installation of |hyperref| and other tools, including \pittetd itself). 
%
%\pittetd has been written under the assumption that the user will create the final |.pdf| file through one of two tools, namely {\PDF}\LaTeX\index{PDF\LaTeX}, or the program \textsf{dvipdfm}\option{dvipdfm}. The user indicates which of the two ways is to be used as an option\option{pdftex}\option{dvipdfm} to the \pittetd class, namely |pdftex| or |dvipdfm| (on the way to load the class and specify options, see section~\ref{loading}). The following sections explain the particularities of each way. A third related option, |nohyperref|\option{nohyperref} option, will be discussed in section~\ref{nohyper}. Note that it is possible to switch back and forth between the three ways just by modifying the relevant option; as far as \pittetd is concerned, nothing else is necessary to effect the change.\footnote{However, when going to/from \texttt{nohyperref}, it is always good to delete any auxiliary files\index{auxiliary files} before running. Also, some of the \texttt{hyperref} package's commands discussed in section~\ref{hyperref} are of course disabled when \texttt{nohyperref} is used.}
%
%\subsection[{\PDF}\LaTeX]{{\normalsize PDF}\LaTeX}\index{PDF\LaTeX|(textit}
%
%The most direct way to obtain a |.pdf| output file is running {\PDF}\LaTeX\footnote{Created by H\`an Th\'e Th\`an.}\ instead of \LaTeX.  Naturally, {\PDF}\LaTeX\ has to be installed in the system (again, it is usually included in standard distributions of \LaTeX; see section~\ref{installation}). The user has to indicate |pdftex|\options{pdftex}{textit} as an option to \pittetd, and this latter will pass that option to other packages that need it, including |hyperref|\package{hyperref} but also |graphicx|\package{graphicx} and |color|\package{color} (this latter used by |hyperref|). 
%
%Note that if this is the chosen method, a regular \LaTeX\ (i.e., not {\PDF}\LaTeX) run will result in an error message\index{error messages} (`\texttt{Why not use pdf(e)TeX binaries?}'). This could affect user's habits, batch files, etc. 
%
%There is one more significant drawback to the use of {\PDF}\LaTeX: the running time is sometimes clearly longer than regular \LaTeX. This depends, to be sure, on one of the configuration options of {\PDF}\TeX, namely |\pdfcompresslevel|, and it could be modified. But in that case, the resulting file is incomparably larger.\footnote{In general, a |.pdf|\index{PDF>files} is much larger---much less efficient in all respects---than the |.dvi|\index{DVI>files}. This tendency is reinforced if {\scriptsize PDF}\LaTeX\ is configured to run faster.}\index{PDF\LaTeX|)}
%
%\subsection{\textsf{dvipdfm}}\label{dvipdf}\index{dvipdfm=\textsf{dvipdfm}|(textit}
%
%As the name indicates, \textsf{dvipdfm}\footnote{Written by Mark A. Wicks.} is one of the programs available to convert |.dvi|\index{DVI>files} files into |.pdf|\index{PDF>files}. The procedure then consists in running \LaTeX\ as usual while the document is in preparation, having loaded \pittetd with |dvipdfm| option\options{dvipdfm}{textit}, thus obtaining (more quickly) the usual (and smaller)|.dvi| output. Only optionally, at strategic points in the development of the document (notably at the end), has the user to worry about \PDF, and apply \textsf{dvipdfm} to the |.dvi| file. This is usually as simple as typing 
%
%|dvipdfm doc.dvi|
%
%\noindent in the command line. The file |dvipdfm.pdf| is the user's manual for the program and explains the switches that can be used in the command line.
%
%In some |.dvi| viewers\index{DVI>viewers} the bookmarks\index{bookmarks} (and even the links\index{links}) are lost. But the relevant information is recovered by \textsf{dvipdfm} when creating the corresponding |.pdf| file. 
%
%Another significative advantage of \textsf{dvipdfm} is that it tries to solve inclusion of PostScript graphic files, so it is not always necessary to convert them (see also \cite{comments}). To do the job, however, \textsf{dvipdfm} uses \textsf{GhostScript}, and therefore this program must also be installed in the system.\index{dvipdfm=\textsf{dvipdfm}|)}\index{dvipdfm o=\texttt{dvipdfm} option|)}
%
%\subsection[Other ways to get a \PDF file and bookmarks]{Other ways to get a {\normalsize PDF} file and bookmarks}\index{PDF>files}\index{bookmarks}
%
%There are other ways to obtain a final \PDF output file, but they are all discouraged to use alongside with \pittetd. For example, a common method is to use |dvips|\index{dvips=\texttt{dvips}} to convert a file to the PostScript\index{PostScript>format} format, and then apply Acrobat~Distiller\index{Acrobat Reader} on it. This method involves two conversions; links and especially bookmarks\index{bookmarks} tend to have an erratic behavior. 
%
%Acrobat~\PDF~Writer\index{Acrobat PDF Writer}, a `printer emulator' that `prints' \PDF files\index{PDF>files} will, of course, ignore anything that cannot be printed, including bookmarks\index{bookmarks}. And the other |.dvi|$\leadsto$|.pdf| converter in existence, |dvipdf|\index{dvipdf=\texttt{dvipdf}},\footnote{By Sergey Lesenko.} is not as widely available as \textsf{dvipdfm}\index{dvipdfm=\textsf{dvipdfm}}.
%
%On the other hand, |hyperref|\package{hyperref} is not the only way to create bookmarks\index{bookmarks} with \LaTeX. Older packages and systems exist, like V\TeX\index{V\TeX}, but since those are much less widely used, \pittetd does not support them.
%
%\subsection{No hyperref}\label{nohyper}\options{nohyperref}{(textit}
%
%There is a third option concerning the creation of bookmarks and links in \pittetd. Option |nohyperref| will prevent \pittetd from taking care of almost all interactivity requirements, and the user is left the freedom (and the burden) to fulfill them by him- or herself. 
%
%This option might be more useful than it seems, because it allows users to use the |hyperref|\package{hyperref} package itself \emph{their way}, not \pittetd's. There are in the latter's code a series of minor, but substantial, modifications to |hyperref|, and some of the options with which the package is loaded are fixed. As a security measure, \pittetd will not allow the user manually to load the package, unless |nohyperref| is specified. Thus, if a user wants to control |hyperref|'s behavior, this option will be necessary. Section~\ref{diffhyperref} gives some directions on how to do this.
%
%Also, if \pittetd cannot run normally due to some complication in installation or configuration of |hyperref|, the |nohyperref| option provides a way to keep working on the contents of the document and worry about requirements later.\options{nohyperref}{)}
%
%\section{Installation}\label{installation}
%
%\subsection{\pittetd}\index{installation>\pittetd|(textit}
%
%The \pittetd bundle is made of the following files:
%
%\begin{tabular}{>\ttfamily ll}
%pittetd.dtx & Source for the class and this documentation.\\
%pittetd.ins & Batch file for installation.\\[2mm]
%pittetd.cls & The \pittetd class itself.\\
%pit10pt.clo & Definitions for 10pt-size option.\index{options to \textsf  {pittetd}\xspace  :>\texttt{10pt}}\index{pittetd=\textsf  {pittetd}\xspace  >options}\index{10=\texttt{10pt} option} \\
%pit11pt.clo & Definitions for 11pt-size option.\index{options to \textsf  {pittetd}\xspace  :>\texttt{11pt}}\index{pittetd=\textsf  {pittetd}\xspace  >options}\index{11=\texttt{11pt} option}\\
%pit12pt.clo & Definitions for 12pt-size option.\index{options to \textsf  {pittetd}\xspace  :>\texttt{12pt}}\index{pittetd=\textsf  {pittetd}\xspace  >options}\index{12=\texttt{12pt} option}\\[2mm]
%pitthesis.pit & Patch for \textsf{pitthesis} class\index{pitthesis=\textsf{pitthesis} class}\index{pitthesis=\textsf{pitthesis} class>patch for}\index{classes>related to \textsf  {pittetd}\xspace  }\\
%pittdiss.pit & Patch for \textsf{pittdiss} class\index{pittdiss=\textsf{pittdiss} class}\index{pittdiss=\textsf{pittdiss} class>patch for}\index{classes>related to \textsf  {pittetd}\xspace  }\\
%achicago.pit & Patch for |achicago| package\package{achicago}\index{achicago=\texttt  {achicago} package>patch for} \\[2mm]
%pittetd.dvi & This documentation\\
%pittetd.pdf \\
%\end{tabular}
%
%\smallskip
%\noindent All these files are individually downloadable from \pittetd's webpage. It is only the two first files, however, that are necessary, for the rest can be extracted from them. To do this, the file |pittetd.ins| has to be processed with \TeX\ (\emph{not} \LaTeX); the documentation results from running \LaTeX\ (\emph{not} \TeX) on |pittetd.dtx|.\footnote{To get the index right, you have to run \texttt{makeindex} with \texttt{gind} style, saying, in the command line (and after a \LaTeX\ run on \texttt{pittetd.dtx}), \texttt{makeindex -s gind.ist pittetd}. Then a final \texttt{latex pittetd.dtx} produces the document with a well-formatted index.}
%
%It is the |.cls| and |.clo| files that conform the class itself, i.e., what \LaTeX\ needs to have access to. Under a system that, like most \TeX\ implementations today, use the standard \TeX~Directory~Structure ({\small TDS})\index{TDS}, \LaTeX\ files are put in subdirectories of the |.../texmf/tex/latex| directory (for example, the standard classes are in |.../texmf/tex/latex/base|). So the best thing under such a system is to create a subdirectory for \pittetd:
%
%|.../texmf/tex/latex/pittetd|
%
%\noindent and place there the |.cls| and |.clo| files. Likewise, the documentation (the file you are reading, |pittetd.dvi|) should be placed in 
%
%|.../texmf/doc/latex/pittetd|
%
%\noindent and the source files (|pittetd.dtx| and |pittetd.ins|) in 
%
%|.../texmf/source/latex/pittetd|
%
%The `patches'\index{patches} should be placed in the same directory as the actual document's input files\index{input files}.
%
%\noindent After placing the files in those directories, you might need to `refresh' the database, i.e., to make \TeX\ aware that a new class is loaded. This usually appears as a command (or button, or window, etc.) of the implementation.\footnote{With \textsc{MiKTeX}\index{MiKTeX}, for example, you should run the program `MiKTeX Options.'}
%
%\smallskip
%\noindent For non-{\small TDS} systems, the suggestion is `put the files where \TeX\ can find them.' For example, search your disk for the standard classes (e.g., |article.cls|), and put the \pittetd files where they are. Alternatively, you can simply put the \pittetd files in the directory that contains the input files of your document.\index{input files}\index{installation>\pittetd|)}
%
%\subsection{Installation of other required packages}\index{installation>\texttt{hyperref}|(textit}%
%\index{installation>\texttt{color}|(textit}
%
%In addition, you will need at least the |hyperref|\package{hyperref} and |color|\package{color} packages, and {\PDF}\TeX\index{PDF\TeX}\index{PDF\LaTeX} if you use |pdftex| option\option{pdftex}. Most likely, you already have those packages installed. Even so, it is possible that you do not have the file |pdftex.def|\index{pdftex.def=\texttt{pdftex.def} file}, which is part of only relatively recent distributions. This file, available from the \pittetd's webpage\index{pittetd=\textsf  {pittetd}\xspace  >webpage}, should be copied to the same directory where the file |color.sty| is (|.../texmf/tex/latex/graphics| in a {\small TDS}\index{TDS} system).
%
%|hyperref|\package{hyperref} is a package used by \pittetd (unless, of course, the |nohyperref|\option{nohyperref} option is used), so it has to be in the system. In the very unlikely case it is not already installed, you will need to download it from either {\small CTAN} (through \url{http://www.tug.org})\index{CTAN (Comprehensive \TeX\ Archive Network)} or the \pittetd's webpage\index{pittetd=\textsf  {pittetd}\xspace  >webpage}, and install it by running \TeX\ (\emph{not} \LaTeX) on the file |hyperref.ins|. This will extract the files and instruct you on where to place them (which, in any case, is analogous to the placement of \pittetd files).
%
%Likewise, |hyperref| uses other packages from the standard distribution of \LaTeX\ (notably, |color|\package{color}). Installation of those packages is analogous.\index{installation>\texttt{hyperref}|)}%
%\index{installation>\texttt{color}|)}
%
%\subsection[{\PDF}\TeX, \textsf{dvipdfm}]{{\large PDF}\TeX, \textsf{dvipdfm}}\index{installation>\textsf{dvipdfm}|(textit}\index{installation>PDF\TeX|(textit}
%
%Installation of {\PDF}\TeX\ and \textsf{dvipdfm} is a more complex matter. Again, several implementations, including \TeX Live, \textsc{MiKTeX}, \textsc{te}\TeX, \textsc{fp}\TeX, and \textsc{CMac}\TeX, have both tools pre-installed. In case your system does not have either or both of them, you can download the relevant files, and obtain installation directions, at {\small CTAN} (through \url{www.tug.org})\index{CTAN (Comprehensive \TeX\ Archive Network)}. The {\PDF}\TeX\ manual, file |pdftex-s.pdf|, is available from the \pittetd's webpage\index{pittetd=\textsf  {pittetd}\xspace  >webpage}, and contains information on the installation of the program.\index{installation>\textsf{dvipdfm}|)}\index{installation>PDF\TeX|)}
%
%\section{To keep in mind}\label{mind}
%
%The \pittetd class has been designed to fully comply with the format guidelines for Pitt~\ETD{s}\index{FG (Format Guidelines)}\index{Pitt ETD>format guidelines}. Due to this, there are some particularities that might create conflict with \LaTeX\ users' habits. This section warns and advises about those particularities. Decisions have been made with two priorities: to discourage uses that go against the \FG, and to facilitate conversion from standard \LaTeX\ classes\index{classes>standard}.
%
%\subsection{Headings and captions}\index{headings}\index{captions}\index{titles}
%
%\pittetd will automatically capitalize\index{capitalization of titles} the title\index{title} of the document and those of the chapters\index{chapters>titles}. However, section titles\index{sections>titles} have to be capitalized by the user.\footnote{This is because modification of the \cs{section} command in order to capitalize not only the title itself, but also the bookmark, although possible, would highly increase the probability of incompatibilities with other packages.}
%
%On the other hand, since both sectional headings and captions for tables\index{tables>captions} and figures\index{figures>captions} must have entries in the bookmarks\index{bookmarks>limitations} panel, they are subject to two substantial limitations: they cannot be long, and must consist only of {\small ASCII}\index{ASCII} characters.\footnote{That is why the {\scriptsize FG}\index{FG (Format Guidelines)} recommend using words (not formulas\index{formulas}) in titles and keeping captions\index{captions} ``to one line if possible''~(p.~9).} 
%
%When building the bookmarks\index{bookmarks}, |hyperref|\package{hyperref} will convert some simple \LaTeX\ commands, but in general will ignore most of them. It also will crop everything that goes beyond the maximum length of a bookmark (that varies among \PDF\index{PDF>viewers} viewers; Acrobat~Reader\index{Acrobat Reader} makes it 64 characters). There are two tools to handle these limitations in \LaTeX: the |hyperref| command |\texorpdfstring|\index{texorpdfstring=\verb!*+\texorpdfstring+} (section~\ref{texorpdf}), and the optional argument to |\caption|\index{caption=\verb!*+\caption+} (section~\ref{optional}).
%
%\subsection{Preliminaries}\label{w:prel}\index{preliminaries}
%
%The series of preliminaries in a Pitt~\ETD differs substantially from a paper-based thesis/dissertation\index{paper-based theses/ dissertations}. The committee page\index{committee page} has changed, and dedication\index{dedication} and acknowledgements\index{acknowledgements} pages have been eliminated (under the assumption and recommendation that these should be part of the preface\index{preface}). The order was modified accordingly (so that the preface goes immediately before the text of the thesis itself).
%
%Thus, the preliminaries are in principle limited to the following:
%
%\begin{quote}\noindent Title page\index{title page}\newline
%Committee Membership page\index{committee page}\newline
%Copyright page (optional)\index{copyright page}\newline
%Abstract\index{abstract}\newline
%Table of contents\index{table of contents}\newline
%List of Tables\index{list of tables}\newline
%List of Figures\index{list of figures}\newline
%Preface (optional)\index{preface}\newline
%\end{quote}
%\noindent Since all these preliminaries\index{preliminaries} have their own commands in \pittetd (see section~\ref{prelim}), there is in principle no need nor place for non-numbered chapters\index{non-numbered chapters} (|\chapter*|\index{chapter*=\verb!*+\chapter*+} commands). In fact, the starred version\index{starred commands:>\verb!*+\chapter*+} behaves exactly as the regular one. If there is a need for additional preliminary pages, the (on purpose) cumbersome command |\preliminarychapter| is available (see section~\ref{addprel}).
%
%\subsection{Use of packages}\label{packages}\index{packages>use of|(}
%
%Almost certainly authors of Pitt~\ETD's will need to load a wide and unpredictable variety of packages. Although \pittetd has been coded with the premise not to `invite' incompatibilities\index{incompatibility|(}, it is possible that some of these packages will create clashes, for there is simply no way to claim universal compatibility with the hundreds of packages already available and with those to come. 
%
%However, \emph{partial} compatibility can be (and supposedly has been) achieved. A survey carried out in April--May~2003 gave us a list of packages that are of common use in the Pitt community, and those have been taken into account in the writing of \pittetd. 
%
%For the handling of possible incompatibilities arising in the future, the following policy has been designed. The user who suspects he or she has found a clash should contact the Pitt~\ETD Working Group\index{Pitt ETD>Working Group} and explain the problem, ideally e-mailing a copy of the input file(s)\index{input files}. Hopefully in a reasonable amount of time, a `patch'\index{patches} will be created that solves the problem. The patch takes the form of a file with extension |.pit|, downloadable from \pittetd's webpage\index{pittetd=\textsf  {pittetd}\xspace  >webpage}. 
%
%After the file has been downloaded and put where \LaTeX\ can find it (the easiest way is to put it in the same folder as the document itself), it should be accessed. \index{patches|(}\DescribeMacro{\patch}The command |\patch|, that takes the name of the package as its argument, reads any patch that exists for it. For example, there is already a patch for the |achicago| package\package{achicago}; to ensure the proper behavior of this package, the user should type, \emph{after} |\usepackage{achicago}|\index{usepackage=\verb!*+\usepackage+}, the command |\patch{achicago}|.
%
%Alternatively, the command |\usepackage|\index{usepackage=\verb!*+\usepackage+} can itself be replaced by \DescribeMacro{\usewithpatch}|\usewithpatch|. When a package is invoked by means of |\usewithpatch|, \pittetd will search the system for the corresponding patch; if it exists, it loads it; if not, nothing happens. Options to the package, as usual, are indicated by the optional argument |[|\meta{options}|]|. The drawback of this mechanism is that several packages \emph{cannot} be loaded at once (i.e., by comma-separating them, as in |\usepackage{color,graphicx}|)\index{usepackage=\verb!*+\usepackage+}; each must receive its own |\usewithpatch|. But using |\usewithpatch| ensures that \pittetd will always look for a patch when loading a package.\index{incompatibility|)}\index{patches|)}
%
%The following paragraphs mention some \LaTeX\ packages and tell whether they are supported or not by \pittetd. For information on compatibility with the bibliographical styles\index{bibliography>\BibTeX\ styles} and packages\index{bibliography>packages}, see section~\ref{bibliography}.
%
%\subsubsection{Unsupported packages}\index{packages>unsupported}
%
%Many popular \LaTeX\ packages provide formatting features that either go against the \FG\index{FG (Format Guidelines)} or are already incorporated into \pittetd. Therefore, it is assumed that such packages will \emph{not} be loaded. These include |setspace|\package{setspace}, packages for the handling of floating objects (such as |float|\package{float}, |floatflt|\package{floatflt}), for variations of layout (|fancyhdr|\package{fancyhdr}, |fncychap|\package{fncychap}, |multicol|\package{multicol}), and sectioning (|titlesec|\package{titlesec}, |tocbibind|\package{tocbibind}). Using any of those packages might result in error messages\index{error messages}, anomalies, and unpredictable output. Before reporting or trying to solve these problems, keep in mind that departmental approval is needed to include the features.
%
%\subsubsection{Supported packages}\index{packages>supported}
%
%Some packages provide features that are legitimate in a Pitt~\ETD. Font packages\index{fonts>packages}\index{packages>fonts}, such as those in the {\small PSNFSS}\index{PSNFSS collection}\index{PostScript>fonts}\index{fonts>PostScript} collection (|times|, |bookman|, |palatino|, |newcent|, etc.) are perfectly compatible with \pittetd. In fact, if {\small CM}\index{CM fonts} fonts are desired, it is recommendable that the |ae|\package{ae} package is loaded.\footnote{The {\small AE}\index{AE fonts} fonts emulate {\small CM}\index{CM fonts}, but are PostScript\index{PostScript>fonts}, not bitmap, fonts, which gives them a better quality for screen display.}
%
%The packages of the American~Mathematical~Society\index{AMS packages} (|amsmath|\package{amsmath}, |amsthm|\package{amsthm}, etc.) are supported. Likewise, all the packages in the standard\index{packages>standard} distribution of \LaTeX\ (|color|\package{color}, |graphicx|\package{graphicx}, |xspace|\package{xspace}, |verbatim|\package{verbatim}, etc.) are supposed to work. |caption2|\package{caption2} works miraculously fine. In general, packages that \emph{provide}, as opposed to \emph{override}, features, should work fine.\index{packages>use of|)}
%
%\subsection{Related classes}\label{pitt}\index{classes>related to \pittetd|(textit}
%
%Currently there are two \LaTeX\ classes that produce theses and dissertations for Pitt, namely \textsf{pitthesis}\index{pitthesis=\textsf{pitthesis} class} (by Wonkoo~Kim, 1999) and \textsf{pittdiss}\index{pittdiss=\textsf{pittdiss} class} (by Will~Slaughter, 2003). The former was designed for paper-based documents, following requirements somewhat different from those of an \ETD; the latter, on the contrary, was created with \ETD in mind.\footnote{It does not produce links or bookmarks, however.} Many features are shared by those classes and \pittetd---notably the creation of preliminaries\index{preliminaries}---but the detailed mechanisms (command names and things like that) are different. This release of \pittetd includes two `patch'\index{patches} files that allow using \pittetd with conventions from the other two classes, so that the user does not have to change every command (some will require handling, though; \pittetd will warn or complain).\index{warnings}
%
%The patches are called through either
%
%|\patch{pittdiss}|\index{pittdiss=\textsf{pittdiss} class>patch for|textit}
%
%\noindent or
%
%|\patch{pitthesis}|\index{pitthesis=\textsf{pitthesis} class>patch for|textit}
%
%\noindent (the latter only two t's.) Having read the corresponding patch, \pittetd will try to interpret \textsf{pittdiss}- or \textsf{pitthesis}-commands. Hopefully, most times it will succeed; in any case, it will issue warnings\index{warnings} (or error messages\index{error messages>\pittetd's} in the |final|\option{final} option) for things that \emph{have} to be changed. For example, if acknowledgements\index{acknowledgements} are created with \textsf{pitthesis}'s |acknowledgements| environment, \pittetd will warn that now there is no separate preliminary for that, and that this section should be part of the preface.\index{preface} 
%
%As an extra safety measure when going from \textsf{pitthesis}\index{pitthesis=\textsf{pitthesis} class} or \textsf{pittdiss}\index{pittdiss=\textsf{pittdiss} class} to \pittetd, all auxiliary files\index{auxiliary files} should be deleted before the first \pittetd run. Also, it is very much recommendable to change |\bibliography|\index{bibliography=\verb!*+\bibliography+} to |\safebibliography|\index{safebibliography=\verb!*+\safebibliography+} since the beginning.\index{patches}\index{classes>related to \pittetd|)}
%
%\subsection{Stage and interaction}\label{stage}\index{stage|(textit}\index{warnings|(}\index{error messages>\pittetd's|(}
%
%In order to facilitate the process of converting files from standard classes\index{classes>standard} into \pittetd, annoying error messages due to the particularities of \pittetd have been avoided as much as possible. The `stage' of the document is used to decide whether or not the differences should make stop the \LaTeX\ run. The idea is that when the |draft| option\options{draft}{(textit} is used, most problems are reported as `Class~Warnings' that do not stop the process. But if |final|\options{final}{(textit} is used (and eventually it \emph{should} be used), more prominent error messages appear instead. 
%
%However, many packages (including the seminal |hyperref|\package{hyperref}, |color|\package{color}, and |graphicx|\package{graphicx}) themselves operate differently when |draft| is specified. So for example, |hyperref| does not create links\index{links} or bookmarks\index{bookmarks}, and |graphicx| does not import external graphic\index{graphics>inclusion of} files. But the user might want to see these features, still not worrying about detailed \pittetd concerns. That is why an intermediate stage |semifinal|\options{semifinal}{(textit} is introduced. The packages will work as usual, but \pittetd will issue mostly warnings, not error messages. This is the default option. 
%
%Both |semifinal| and |draft| issue a final warning at the end of the job, reminding the user to run the document with |final|. \index{stage|)}\index{warnings|)}\index{error messages>\texttt{pittetd}'s|)} As usual, moreover, |draft| makes overfull boxes visible.
%
%The `stage' option also governs \pittetd's complaints about the preliminaries when information for the different pages is missing, when the order is wrong, etc.: with |draft| and |semifinal|, there will be a warning, while with |final| there will be an error message.\options{draft}{)}\options{final}{)}\options{semifinal}{)} 
%
%\subsection{Auxiliary files}\index{auxiliary files}
%
%In addition to the regular auxiliary files (|.aux|, |.toc|, |.lot|, |.lof|, etc.), a run of \pittetd involving all its features will produce two files: one with extension |.out| (written by |hyperref|\package{hyperref} for the `outlines,' or bookmarks\index{bookmarks}), and one with extension |.etd|, used by \pittetd to decide some details. Input or other files created by the user should avoid these extensions. Also, for some implementations of \LaTeX\ that provide a quick erasing of auxiliary files, it is advisable to configure this tool to include |.out| and |.etd| files.
%
%\subsection[{\small PDF} Document Info]{{\normalsize PDF} Document Info}\index{PDF>Document Info}\index{Document Info}
%
%\pittetd offers the possibility of filling in the fields of Acrobat~Reader's\index{Acrobat Reader} `Document Info' dialog box. `Title' and `Author' are filled in with the data of the title page\index{title page}. `Subject' and `Keywords' are handled by additional commands (see section~\ref{pdfinfo}).
%
%\section{Using \pittetd}\label{usage}
%\subsection{Loading the class}\index{pittetd=\textsf  {pittetd}\xspace  >loading|(}\label{loading}
%
%The \pittetd class is loaded by typing\\
%\null\quad|\documentclass[|\meta{options}|]{pittetd}|\index{documentclass=\verb!*+\documentclass+}\\
%at the very top of the input file.\index{input files} Table~\ref{options} shows all the \meta{options} available.\index{pittetd=\textsf  {pittetd}\xspace  >options} Most of the options for conventional classes (i.e., the standard classes \textsf{article}, \textsf{book}, \textsf{report}, and similar ones like \textsf{amsart} and \textsf{amsbook}) have been disabled in \textsf{pittetd}. The document will always be typeset letter paper ($8.5\times 11$ inches), portrait, and one column.\footnote{Thus, options to modify these parameters, namely those for $a)$~paper size (\texttt{letterpaper}, \texttt{legalpaper}, etc.); $b)$~paper orientation (\texttt{portrait}, \texttt{landscape}); $c)$~number of columns (\texttt{onecolumn}, \texttt{twocolumn}); and $d)$~pagination (\texttt{oneside}, \texttt{twoside}; \texttt{openright}, \texttt{openany}; \texttt{titlepage}, \texttt{notitlepage}), are not implemented.}
%
%\begin{table}[h]\centering
%\begin{tabular}{|m{3.5cm}|m{7cm}|}\hline
%\textsf{Characteristic}&\textsf{Available Options}\\\hline\hline
%Font size&|12pt| (default) \newline|11pt|\newline|10pt|\\\hline\index{10=\texttt{10pt} option}\index{options to \textsf  {pittetd}\xspace  :>\texttt{10pt}}\index{pittetd=\textsf  {pittetd}\xspace  >options}\index{10=\texttt{10pt} option}\index{options to \textsf  {pittetd}\xspace  :>\texttt{11pt}}\index{pittetd=\textsf  {pittetd}\xspace  >options}\index{11=\texttt{11pt} option}\index{options to \textsf  {pittetd}\xspace  :>\texttt{12pt}}\index{pittetd=\textsf  {pittetd}\xspace  >options}\index{12=\texttt{12pt} option}%Stage\newline (see section~\ref{stage})&|final|\newline|semifinal| (default)\newline|draft|\\\hline\option{draft}\option{final}\option{semifinal}
%Bibliography\newline layout&|openbib| (`open' bibliographies).\\\hline\option{openbib}
%Equations&|leqno| (equation numbers on the left)\newline |fleqn| (flush-left displays)\\\hline\hline\option{fleqn}\option{leqno}
%Type & |phd| (dissertation, default)\newline|ms| (M.S.'s thesis)\newline |ma| (M.A.'s thesis)\\\hline\option{ma}\option{ms}\option{phd}
%Section numbering\newline (see section~\ref{numbers}) & |sectionnumbers| (default)\newline|sectionletters|\\\hline\hline\option{sectionletters}\option{sectionnumbers}
%\PDF production\newline(see section~\ref{pdf}) &|dvipdfm| \newline|pdftex|\option{pdftex}\option{dvipdfm}\option{nohyperref} \newline|nohyperref|\\\hline
%\end{tabular}
%\caption{Available options for \pittetd}\label{options}
%\end{table}\index{pittetd=\textsf  {pittetd}\xspace  >loading|)}
%
%\subsection{Font sizes and spacing}\index{fonts>size}\index{spacing|(textit}
%
%\DescribeMacro{\Small}\DescribeMacro{\SMALL}The usual \LaTeX\ commands are defined according to the font size option selected. In addition, the |\Small| and |\SMALL| commands work as in the classes \textsf{amsart}\index{amsart=\textsf{amsart} class} and \textsf{amsbook}\index{amsbook=\textsf{amsbook} class}, i.e., are equivalent to |\footnotesize| and |\scriptsize| respectively. See figure~\ref{size}.
%
%The text of a Pitt~\ETD has to be at least ``one half-spaced, with the exception of long quotations\index{quotations}, footnotes\index{footnotes}, bibliographical references\index{bibliography}, and the Index (if included)\index{index}, which may be single-spaced''~(p.~7).\index{FG (Format Guidelines)} A spacing of little more than one-half for regular text has been built in into \pittetd; the text in footnotes and quotations has been set to single spacing. The user can always adjust the spacing in the usual way, |\renewcommand|'ing the command \DescribeMacro{\baselinestretch}|\baselinestretch|\index{baselinestretch=\verb!*+\baselinestretch+}, so that \\
%\null\quad|\renewcommand\baselinestretch{1.3}|\\
%increases the built-in spacing by a 30\%---for \emph{all} the text, footnotes included. 
%
%The spacing-scheme is achieved in \pittetd by building it into the font sizes. Normal-size font (|\normalsize|) is one-half spaced, while all other sizes are single-spaced. The |quote|\index{environments:>quote=\texttt{quote}}\index{quote=\texttt{quote} (environment)} and |quotation|\index{environments:>quotation=\texttt{quotation}}\index{quotation=\texttt{quotation} (environment)} environments, as well as |\footnote|, all of which set a smaller font, produce thus single-spaced text. \DescribeMacro{\singlespace}An additional `size' has been implemented, namely |\singlespace|, which produces regular-size, but single-spaced, text. 
%
%\DescribeMacro{\smallskip}\DescribeMacro{\medskip}\DescribeMacro{\bigskip}The spacing command |\smallskip| is set to an amount of a single space; |\medskip| is a line (a little more than one and a half space); and |\bigskip| a double space.\index{spacing|)}
%
%\begin{figure}[h]
%\centering 
%\rule{.8\textwidth}{.4pt}\\[2mm]
%|\tiny|\quad\shortstack[l]{\cs{SMALL} or \\\cs{scriptsize}}\quad\shortstack[l]{\cs{Small} or \\\cs{footnotesize}}\quad|\small|\\[2mm]
%|\normalsize|\\[2mm]
%|\large|\quad|\Large|\quad|\LARGE|\quad|\huge|\quad|\Huge|\\[2mm]
%\rule{.8\textwidth}{.4pt}\\
%\caption{Font sizes}\label{size}
%\end{figure}
%
%\DescribeMacro{\acro}Adapted from the \textsf{ltugboat} class, \pittetd implements the command |\acro|, that typesets its argument in a font smaller than the surrounding text. It is useful for all-uppercase acronyms like \ETD (|\acro{ETD}|), {\small UNICEF} (|\acro{UNICEF}|), etc., which would be too large in regular size (compare ETD, CTAN, UNICEF); it is better than the direct |\small|, which is not good in contexts of font size other than normal.
%
%\subsection{Sectioning}
%
%\subsubsection{Sectioning commands}\index{sections>commands|(textit}\index{sections>titles}
%\DescribeMacro{\chapter}\DescribeMacro{\section}\DescribeMacro{\subsection}\DescribeMacro{\subsubsection}The sectioning of a \pittetd document is done through the usual commands |\chapter|, |\section|, |\subsection|, and |\subsubsection|. Note that |\part|, |\paragraph|, and |\subparagraph| are \emph{not} implemented. The |\chapter| command takes care of capitalization\index{capitalization of titles} of the title \emph{both} in the text and in the bookmarks\index{bookmarks}; however, since |\section| capitalizes in the text but not in the bookmarks, it is always advisable to capitalize manually.
%
%
%Within preliminaries\index{preliminaries}, the subdivisions |\section|, |\subsection|, and |\subsubsection| will produce neither a number nor a bookmark entry (|\chapter| is reserved for chapters in the body of the text; about additional preliminary `chapters' see section~\ref{w:prel}). The starred variants |\chapter*|, |\section*|, etc.,\index{starred commands:>\verb!*+\chapter+|textit}\index{starred commands:>\verb!*+\section*+|textit}\index{starred commands:>\verb!*+\subsection*+|textit}\index{starred commands:>\verb!*+\subsubsection*+|textit} work exactly as the non-starred counterparts, although producing a warning.
%
%All four sectioning commands have the usual optional argument, that contains the alternate version of the heading that appears in the table of contents\index{table of contents}. This, however, is implemented only for compatibility reasons, for the \FG\index{FG (Format Guidelines)} require that the table of contents lists the headings exactly as it appears in the text. The main reason why the optional argument could be used at all is that it permits to cope with the conversion of the text into {\small ASCII}\index{ASCII} text for the bookmarks\index{bookmarks}, but that is best handled by the command |\texorpdfstring|\index{texorpdfstring=\verb!*+\texorpdfstring+} (section~\ref{texorpdf}).\index{sections>commands|)}
%
%On the other hand, there might be cases in which some letters must appear in lowercase\index{capitalization of titles} even in headings (chemical elements is such a case). The command |\lowercase|\index{lowercase=\verb!*+\lowercase+} works within the arguments to sectioning commands, and can be used for those cases.
%
%\subsubsection{Numbering}\label{numbers}\index{sections>numbering|(}\index{numbering>chapters and sections|(}\index{chapters>numbering|(}
%
%The divisions of a Pitt~\ETD can be numbered in two ways, depicted in Figure~\ref{numbering}. The first one is the one used by default (|sectionnumbers|)\options{sectionnumbers}{textit}; the user can specify \pittetd's option |sectionletters|\options{sectionletters}{textit} to use the second one. In this case, in addition, the labels for successive levels of the |enumerate| environment\index{environments:>enumerate=\texttt{enumerate}}\index{enumerate=\texttt{enumerate} (environment)} are also changed from their default appearance, to agree with the section numbering: the first level will be an uppercase roman numeral, the second an uppercase letter, and so on. \DescribeMacro{\regularenum}The user has the command |\regularenum| to revert to the usual appearances (namely arabic, letter, roman, Letter).
%
%\begin{figure}[h]\small\parskip10pt
%\noindent\fbox{\begin{minipage}{.45\textwidth}
%1.0\quad FIRST CHAPTER\par
%\null\quad1.1\quad FIRST SECTION\par
%\null\qquad 1.11\quad First subsection\par
%\null\quad\qquad1.11.1\quad First subsubsection\par
%\null\end{minipage}}\hfill
%\fbox{\begin{minipage}{.45\textwidth}
%I.\quad FIRST CHAPTER\par
%\null\quad A.\quad FIRST SECTION\par
%\null\qquad 1.\quad First subsection\par
%\null\quad\qquad a.\quad First subsubsection\par
%\null\end{minipage}}\\
%\normalsize\makebox[.45\textwidth][l]{\ |sectionnumbers| (default)}\hfill\makebox[.45\textwidth][l]{|sectionletters|}
%\caption{The two possibilities for section numbering}\label{numbering}
%\end{figure}\index{sections>numbering|)}\index{numbering>chapters and sections|)}\index{chapters>numbering|)}
%
%\subsection{The preliminaries}\label{prelim}\index{preliminaries|(textit}
%
%The first part of a Pitt~\ETD is made of the `preliminaries.' They are created in \pittetd with special commands that are the subject of the present section.
%
%\pittetd will keep track of the order in which the user typesets the preliminaries, and will warn or complain according to the `stage' of the document (see section~\ref{stage}).
%
%\subsubsection{Title Page}\label{title}\index{title page|(textit}
%The title page is produced, as usual, by the command \DescribeMacro{\maketitle}|\maketitle|, but involves several pieces of information in addition to |\title|, |\author| and |\date|, so it is only \emph{deceivingly} similar to the same command in standard \LaTeX\ classes\index{classes>standard}. All efforts have been taken to prevent the differences to ruin the \LaTeX\ run (making easier the conversion from other classes), but the user will eventually have to check it carefully. 
%
%\DescribeMacro{\title}The macro |\title| has an optional argument that sets the title of the document as it will appear in the `Document~Info'\index{PDF>Document Info}\index{Document Info} dialog box of Acrobat~Reader\index{Acrobat Reader}. If no optional argument is given, the required argument will be used (however, bear in mind that only a limited portion of it will be visible). In order for this feature to work properly, |\title| must be issued in the preamble\index{preamble} of the document. In the text, the title will be typeset uppercase.\hfill{\small\textbf{Ex.:\ } |\title[An Anatomy of the World]{An Anatomy of %|\\[-2pt]
%\null\hfill|the World on texts by John Donne, %|\\[-2pt]
%\null\hfill|for soprano and six instrumentalists}|}
%
%\clearpage\DescribeMacro{\author}The |\author| command works much the same as in standard \LaTeX\ classes\index{classes>standard}. Again, it should be issued in the preamble\index{preamble} for the author's name to appear in the `Document~Info'\index{PDF>Document Info}\index{Document Info} dialog box. On the other hand, |\thanks| and |\and| are disabled.\ex|\author{Federico Garcia}|\ample 
%
%\bigskip
%\noindent The following macros set other information needed by \pittetd to build the preliminaries. None of them is required unless |final|\option{final} option is used. With |semifinal|\option{semifinal}  and |draft|\option{draft}, a warning\index{warnings} is issued informing of any missing commands.
%
%These commands are analogous, but not identical, to additional commands in the classes \textsf{pitthesis}\index{pitthesis=\textsf{pitthesis} class} and \textsf{pittdiss}\index{pittdiss=\textsf{pittdiss} class}. Patches are available to facilitate conversion from those classes to \pittetd.
%
%\DescribeMacro{\year}The title page does not include the whole date, but only the year. By default, this is set to the current year; the user can optionally specify it with the command |\year|.\ex|\year{2002}|\ample
%
%\DescribeMacro{\degree}The information of the author's previous degrees is provided by the |\degree| command, and should contain the degree, institution, and year of the each degree. Several lines or degrees can be separated  with |\\|.\ex|\degree{B.S. in Music (Composition),\\Bogot\'a, 2001}|\ample
%
%\DescribeMacro{\school}The title page includes the text `submitted to the graduate faculty of', followed by the school name. The user sets this name with the command |\school|. By default, the article `the' is appended to the school name, but the user can change it with the optional argument.\par
%
%\vskip-4pt
%{\raggedleft\small\textbf{Ex.:\ }|\school{Department of Mathematics}|\\\textbf{Ex.:\ } |\school[]{FAS}|\\\textbf{Ex.:\ } |\school[certain]{Other department}|\\}
%
%\smallskip\DescribeMacro{\degreesought}According to the option used (|phd|\option{phd}, |ms|,\option{ms} or |ma|\option{ma}), \pittetd sets the value of |\degreesought| to either `Doctor of Philosophy,' `Master of Sciences,' or `Master of Arts'. If desired, |\renewcommand| can be used to modify it.\ex|\renewcommand\degreesought{M. A. in Composition and Theory}|\ample
%
%\bigskip\noindent 
%Figure~\ref{titlefig} is the title page produced by the examples above.
%
%\begin{figure}\centering\fbox{\begin{minipage}[c][.65\textheight][c]{.78\textwidth}
%\scriptsize
%\baselineskip16pt
%\centering\vspace*{1cm}
%\textbf{AN ANATOMY OF THE WORLD ON TEXTS BY JOHN DONNE FOR SOPRANO AND SIX INSTRUMENTALISTS}
%
%\vfill
%by\\
%\textbf{Federico Garcia}\\
%B.S. in Music (Composition)\\
%Bogot\'a, 2001
%
%\vfill
%Submitted to the Graduate Faculty of\\
%Arts and Sciences in partial fulfillment\\
%of the requirements for the degree of\\
%\textbf{M. A. in Composition and Theory}
%
%\vfill
%University of Pittsburgh\\
%2002
%
%\vspace*{1cm}
%\end{minipage}}\caption{Example of title page}\label{titlefig}\end{figure}\index{title page|)}
%
%\subsubsection{Committee membership page}\index{committee page|(textit}
%
%\DescribeMacro{\makecommittee}The |\makecommittee| command builds up the committee membership page. The author is typeset as it was in the Title~Page (i.e., as is provided by the |\author|\index{author=\verb!*+author+} command); the school name comes initially from the |\school| command, although capitalized (see section~\ref{title} for these two commands). In some cases, the name of the school in the committee membership page should be different from the one that appears on the Title~Page (for example, when it starts with `Faculty'); the user can insert a new |\school|\index{school=\verb!*+\school+} command right before |\makecommittee| (and after |\maketitle|) to control the second appearance.
%
%In addition to that information, the committee membership page takes also the date and the committee members, which are provided with the next commands.
%
%\DescribeMacro{\date}The |\date| command is intended for the date of the thesis/dis\-ser\-ta\-tion defense\index{defense}\index{date}, which will appear after the text `It was defended on'. The default value is |\today|. It can be omitted with |\date{}| (in whose case there will be no `It was defended'), but a warning will be issued.\index{warnings}\ex|\date{May 15, 2003}|\ample
%
%\DescribeMacro{\committeemember}The list of committee members\index{committee members} is typeset with information from one or more |\committeemember| commands (one for each member). The argument of |\committeemember| cannot contain more than one line.\ex|\committeemember{N. Chimpsky, Ph.\ D., Professor}|\ample
%
%The \emph{first} name will be treated as the thesis/dis\-sert\-a\-tion advisor\index{thesis advisor(s)}\index{dissertation advisor(s)}\index{advisor(s)}. When there are two advisors, the second one should be provided with the \DescribeMacro{\coadvisor}|\coadvisor| command.\index{coadvisor}
%
%In master's theses, inclusion of the rest of the committee is optional, but in Ph.~D. dissertations it is required. Accordingly, if \pittetd has been loaded with the |phd|\option{phd} option, it will require at least two |\committemember| commands, the requirement taking the form of a warning\index{warnings} for |draft|\option{draft} and |semifinal|\option{semifinal} options, an error for |final|\option{final}\index{error messages>\pittetd's}.
%
%In any case, if just one member (the advisor) is listed, \pittetd will omit the text `approved by', only typesetting the advisor's name at the bottom of the page.\index{committee page|)}
%
%\subsubsection{Copyright page}\index{copyright page}
%
%\DescribeMacro{\copyrightpage}Optionally, a copyright page can be appended immediately after the committee membership page, through the command |\copyrightpage|.
%
%\subsubsection{Abstract}\label{abstract}\index{abstract|(textit}
%
%\DescribeEnv{abstract}An abstract of no more than 350 words is required for every Pitt~\ETD. It is created as usual with the |abstract| environment:\\
%\null\quad|\begin{abstract}|\\
%\null\qquad\meta{text of the abstract}\\\enlargethispage*{1cm}
%\null\quad|\end{abstract}|\\
%\clearpage The page will start with the title\index{title}, the author\index{author}, and the year of the document, followed by the text of the abstract.
%
%Optionally, a list of keywords\index{keywords} or descriptors can be appended at the end of the abstract. The keywords themselves have to be set in the preamble\index{preamble} by the command |\keywords|\index{keywords=\verb!*+\keywords+} (section~\ref{pdfinfo}). Then, an optional argument to the |abstract| environment sets the title of the list. For example, the command |\begin{abstract}[Keywords:]| produces, after the text of the abstract, the expression `\textbf{Keywords:}' followed by the contents of the previous |\keywords| command.\index{abstract|)}
%
%Some schools (including the School of Engineering) recommend that the word `{\small ABSTRACT}' appears on the abstract page. \pittetd provides for that requirement in the form of a starred version for the |abstract| environment:\\
%\null\quad|\begin{abstract*}|\\
%\null\qquad\meta{text of the abstract}\\
%\null\quad|\end{abstract*}|\\
%Keywords can be appended to this kind of |abstract| in the same way.
%
%\subsubsection{Table of Contents, and Lists of Figures and Tables}\index{table of contents|textit}\index{list of figures|textit}\index{list of tables|textit}
%
%\DescribeMacro{\tableofcontents}\DescribeMacro{\listoffigures}\DescribeMacro{\listoftables}The table of contents and the lists of figures and tables are created with the usual \LaTeX\ commands. If |hyperref|\package{hyperref} is used, the entries in these lists are links pointing to the corresponding page, and are included as bookmarks.\index{bookmarks}\index{links}
%
%\subsubsection{Preface}\index{preface|(textit}
%
%\DescribeMacro{\preface}The preface is optional. If one is desired, the user needs only to type |\preface| followed by the text itself. Acknowledgements\index{acknowledgements}, dedication\index{dedication}, etc., should be included in this preliminary.\index{preface|)} The preface is the only preliminary that is included in the table of contents.\index{table of contents}
%
%\subsubsection{Additional preliminaries}\label{addprel}
%
%\DescribeMacro{\preliminarychapter}As has been said, preliminaries in a Pitt~\ETD are in principle limited to those described above. Just for the sake of completeness, however, a command for additional preliminaries is implemented (and its use is discouraged) in \pittetd:
%
%|\preliminarychapter{|\meta{heading}|}|
%
%\noindent The \meta{heading} will be both typeset and bookmarked\index{bookmarks}, but not included in the table of contents\index{table of contents}). Sections within the additional preliminary will be unnumbered.\index{preliminaries|)}
%
%\subsection{\PDF Document Info}\label{pdfinfo}\index{PDF>Document Info|(textit}\index{Document Info|(textit}
%
%The `Document~Info' dialog box of Acrobat~Reader\index{Acrobat Reader} includes information for title\index{title}, author\index{author}, subject\index{subject}, and keywords\index{keywords}. \pittetd will fill in these fields (if |hyperref|\package{hyperref} is used) with, respectively: the optional argument to the command |\title|; the |\author|; the |\subject| command; and the |\keywords| command. All four commands must be issued in the preamble\index{preamble} for the information to go to the Document~Info (although there is no error message if any or all are missing).
%
%\DescribeMacro{\subject}\DescribeMacro{\keywords}For example, the commands |\subject{Musical Composition}| and |\keywords{Music \& Text, John Donne, Vocal Music}| define the contents of the `subject' and `keywords' fields. The latter will, optionally, also be typeset at the end of the abstract\index{abstract} (see section~\ref{abstract}).\index{PDF>Document Info|)}\index{Document Info|)}
%
%\subsection{Main body}\label{text}
%
%The way the main body of the document is typeset by \LaTeX\ is very little modified by \pittetd. As has been said, footnotes\index{footnotes} and quotations\index{quotations} appear in a smaller font, and single-spaced. Within the |table|\index{environments:>table={\ttfamily table}}\index{table=\texttt{table} (environment)} and |figure|\index{environments:>figure=\texttt{figure}}\index{figure={\ttfamily figure} (environment)} environments, moreover, |\singlespace|\index{singlespace=\verb!*+\singlespace+} is declared, so their contents appears single-spaced\index{spacing}\index{tables>spacing in}\index{figures>spacing in}. To resort to one-half spacing, the declaration |\normalsize|\index{normalsize=\verb!*+\normalsize+} is enough.
%
%\subsubsection{Numbering and captions for tables and figures}\label{optional}
%
%\index{figures>numbering}\index{tables>numbering}\index{numbering>figures and tables}By default, figures and tables are numbered consecutively (1, 2, etc.), independently from the chapter. This can be changed with the \DescribeMacro{\chapterfloats}|\chapterfloats| command, that has to appear \index{preamble}before |\begin{document}|. In that case, figures and tables will be numbered within chapters (1.4, 2.5, etc., or I.4, II.5, etc.); \pittetd reserves enough space for the figure or table number in the list of figures or tables (that might be something long like `VIII.14') , but this requires several runs.
%
%\index{tables>captions|(textit}\index{figures>captions|(textit}\index{captions|(textit}As has been mentioned, captions are subject to the limitations of bookmarking\index{bookmarks>limitations}: they must be short and contain only {\small ASCII} text\index{ASCII}. \DescribeMacro{\caption}In case this poses problems, the optional argument to the |\caption| command is the best tool to deal with them:
%
%|\caption[|\meta{alternate caption}|]{|\meta{caption}|}|
%
%\noindent When present, it is \meta{alternate caption}, instead \meta{caption}, what is actually typeset in the list of tables or  figures\index{list of tables}\index{list of figures}, and into the corresponding bookmark\index{bookmarks}. So, if a long caption is necessary, it can be handled as in the following example (note the avoidance of |\cite|\index{cite=\verb!*+\cite+} in the optional argument):
%
%{\small\begin{verbatim}
%\caption[A modern `wave model' of the Indo-European 
%languages according to Raimo~Antilla~(1972).]{A 
%modern `wave model' of the Indo-European languages 
%according to \cite{r-a}. The numbers indicate 24 
%isogglosses (similarities) shared among different 
%Indo-European languages. Isogloss 1 indicates the 
%centum:satem split...
%}
%\end{verbatim}
%}
%
%Refer also to section~\ref{texorpdf} for more details on |hyperref|\package{hyperref} conversion of \TeX\ into {\small ASCII} text.\index{ASCII}\index{tables>captions|)}\index{figures>captions|)}\index{captions|)}
%
%\subsubsection{Cross references}\index{cross referencing}
%
%When using |hyperref|\package{hyperref}, cross references created with the |\ref|\index{ref=\verb!*+\ref+} and |\pageref|\index{pageref=\verb!*+\pageref+} commands are interactive links\index{links}. The package offers, as an alternative, the command |\nameref|\index{nameref=\verb!*+\nameref+}, that is used exactly as |\ref|, but typesets the \emph{name} of the chapter or section, instead of its number.\footnote{\texttt{hyperref} achieves this by means of invoking the \texttt{nameref}\package{nameref} package.} This kind of reference seems to be more consistent with interactivity (for, when a click is enough, the main motivation for an ordered numbering is called into question).
%
%In any case, with \pittetd, the |\nameref| command is slightly modified when it refers to an appendix\index{appendices}: it does not produce the appendix's title, but its label (`APPENDIX', or `APPENDIX A', etc.).
%
%\subsection{Appendices}\index{appendices|(textit}
%
%\DescribeMacro{\appendix}The |\appendix| command tells \pittetd that the following chapters (i.e., the following |\chapter|\index{chapter=\verb!*+\chapter+} commands) are appendices. If there is only one appendix, its heading will be `APPENDIX'; if there are more, they will be numbered with capital letters, `APPENDIX~A', etc. \pittetd needs a second run to know which way to follow.\index{appendices|)}
%
%\subsection{Bibliography}\label{bibliography}\index{bibliography|(}\index{bibliography>packages|(}
%
%\subsubsection{\BibTeX\ styles}\index{Bibtex=\BibTeX|(}\index{Bibtex=\BibTeX>styles|(textit}
%
%This section applies only to documents whose bibliography is generated through \BibTeX. Manually-created bibliographies (i.e., produced with the |thebibliography|\index{environments:>{\ttfamily thebibliography}}\index{thebib=\texttt{thebibliography} (environment)} environment) need no special warning to work properly with \pittetd, which handles spacing after the \FG (single space within entries; entries separated by one-half space\index{spacing}).
%
%As far as \pittetd is concerned, there are three kinds of \BibTeX\ styles (|.bst| files). The first kind includes the styles that limit themselves to ordering and formatting the different pieces of information within the bibliography entries (without modifying the appearance of the list as a whole). The vast majority of \BibTeX\ styles, including the standard ones (|plain|, |unsrt|, |alpha|, |abbrv|), fall in this category. These styles pose no problem to \pittetd, and nothing special is needed to fulfill the requirements of the \FG.
%
%The second group comprises those styles that, in addition to the individual entries, format the list as well. In general, styles that do not use bracketed labels (`[1]' or `[Cas44]') are part of this group, for they need to redefine the |thebibliography|\index{environments:>{\ttfamily thebibliography}}\index{thebib=\texttt{thebibliography} (environment)} environment to conform to the absence of such labels. They usually come with an associated package\index{packages>bibliography} (|.sty| file) that takes care of this task. To ensure proper behavior when using these packages, \pittetd offers the command \DescribeMacro{\safebibliography}|\safebibliography|. Its use is identical to that of |\bibliography|\index{bibliography=\verb!*+\bibliography+}, and it tries to make a compromise between the style's conventions and the \FG.\footnote{It of course is not guaranteed that it will always succeed in doing so. If it does not, it is possible that the bibliography style is actually of the third kind.}
%
%The last kind of bibliography styles is that of systems that modify aspects of formatting other than the final list of bibliographical references. All these systems have not only |.bst| files, but also substantial packages (|.sty|). |harvard|\package{harvard}, |natbib|\package{natbib} and |achicago|\package{achicago} are common instances. When \pittetd has a close encounter with packages of the third kind, there can be erratic behavior. It is recommended that |\safebibliography| is used instead of |\bibliography|, but this will probably not be enough. Since there is no general solution, the problems have to be treated individually, with patches\index{patches}, as explained in \ref{packages} above.
%
%The three mentioned systems have already been tackled: |natbib|\package{natbib} is an extremely well-written program, so that conciliating it with \pittetd is easy and does not merit a separate patch file. No special treatment (other than using |\safebibliography|) will normally be needed. 
%
%On the other hand, |harvard|\package{harvard} is a more complicated case, for the package creates interactive links. The |hyperref|\package{hyperref} package has support for |harvard|\package{harvard}, but there is no way to foresee potential problems. It is strongly recommended if possible not to use this package, replacing it with |natbib|\package{natbib}.
%
%|achicago|\package{achicago} poses other kinds of problems. It is an ambitious package that modifies things other than bibliography-related functions. For example, using this package, the effect of |\emph|\index{emph=\verb!*+\emph+} will not be \emph{italic}, but \textsl{slanted} shape; the |quote|\index{environments:>quote=\texttt{quote}}\index{quote=\texttt{quote} (environment)} and |quotation|\index{environments:>quotation=\texttt{quotation}}\index{quotation=\texttt{quotation} (environment)}  environments are also modified, so that \pittetd cannot set single spacing\index{spacing} within them. Again, it is recommended to avoid this package, but in any case there is a patch\index{achicago=\texttt  {achicago} package>patch for|textit} available at \pittetd's webpage, the file |achicago.pit|. It should be loaded saying |\patch{achicago}|.
%
%\bigskip
%Thus, through the means just explained, a broad range of bibliographical usages is supported by \pittetd. Bracketed-labels referencing\index{bibliography>bracket labels}, being what \LaTeX\ is designed for, can generally be used without restriction; for author-year referencing\index{author-year}\index{bibliography>author-year}, |natbib|\package{natbib} and |achicago|\package{achicago} are supported; and for footnote referencing\index{bibliography>footnote}, the package |opcit|\package{opcit} (available from {\small CTAN}) works fine if |\safebibliography| is used.\index{Bibtex=\BibTeX>styles|)}
%
%\subsubsection{Citation packages}\index{bibliography>citations}
%
%There are some packages that handle the way bibliographical references are handled within the text, rather than the way the entries of the final list are typeset. It is unfortunate that the package |cite|\package{cite}, that sorts the numbers of a multiple |\cite|\index{cite=\verb!*+\cite+}, creates deep and quite un-traceable conflicts with |hyperref|\package{hyperref}. The package can be loaded, but it will have no effect. As a result, the |overcite|\package{overcite} package will \emph{not} sort the numbers either, although it will typeset them as superscripts (which, in addition, will be interactive links\index{links}). |achemso|\package{achemso} also causes problems, and it is recommended not to use it at all.\footnote{In \texttt{hyperref}'s documentation, Sebastian Rahtz admits not having been able to make hyper-bibliography robust, ``since many styles redefine these things\dots\ Any or all of \emph{achemso}, \emph{chapterbib}, and \emph{drftcite} may break.'' For the case of \texttt{cite}, I tried to make a compromise, sacrificing the interactivity of the bibliographical references to keep the effects of the package. But I got completely lost in the attempt\dots\ As Rahtz says, ``life is too short,'' and I am not going to understand all the workings of \cs{@cite}, \cs{@citex}, \cs{@citen}, \dots\ Sigh.} |chapterbib|\package{chapterbib}, going against \FG, is not supposed to be loaded.
%
%On the other hand, support for the |multibib|\package{multibib} package, that allows multiple lists of references in the same document, is in progress. For the time being, the recommendation is to plan on writing one general bibliography if possible.\index{bibliography>packages|)} In any case, several reference lists can be manually created (i.e., without using \BibTeX).
%
%\subsection{The index}\index{index|(textit}
%
%The code of \pittetd defines the environment |theindex|\index{environments:>theindex=\texttt{theindex}}\index{theindex=\texttt{theindex} (environment)} to suit the \FG, but otherwise exactly as standard classes define it. This means that the production of the index, be it manually or through \emph{MakeIndex}\index{MakeIndex=\emph{MakeIndex}}, remains the same. |hyperref|\package{hyperref} offers an option to create a `hyper-index,' whose page numbers are interactive links. However, the option is not very robust, and therefore \pittetd uses |hyperref| but turns hyper-indexing off. 
%
%At the moment there is no support for multiple indexes to be generated automatically by \emph{MakeIndex}\index{MakeIndex=\emph{MakeIndex}}, although several indexes can be manually created.\index{index|)} 
%
%\section{Using the \texttt{hyperref} package}\index{packages mentioned:>hyperref=\texttt  {hyperref}>use of|(}\index{hyperref=\texttt  {hyperref} package>use of|(}\label{hyperref}
%
%This section is a very brief and incomplete guide to some extra features of the |hyperref| package that have not been explained before. Unfortunately, if something is missing to |hyperref|, it is documentation. Useful information is to be found in \cite{manual} and \cite{paper}, but those documents are not intended for the average user. The present section is a translated adaptation of the relevant section in \cite{luly}, to my knowledge the most complete (but still not comprehensive) user's guide on the package.
%
%Section~\ref{diffhyperref} provides a starting point to use |hyperref| in a way different of \pittetd's default. 
%
%\subsection{New user's commands}\index{links|(}\label{texorpdf} 
%
%Certain character strings (notably the text of the bookmarks\index{bookmarks>limitations}) are converted by |hyperref| into {\small ASCII}\index{ASCII} text, ignoring most \LaTeX\ commands. In general, macros that expand into a piece of text (such as the |\LaTeX| command itself, the italic correction |\/|, or things like |`| and |'|) are appropriately handled. But math mode, for example, is completely ignored. The process leads virtually never to an error message\index{error messages}; warnings, however, are issued for every ignored token.
%
%\DescribeMacro{\texorpdfstring}In any case, the user has a way to `help' |hyperref| in the conversion, namely the command 
%
%|\texorpdfstring{|\meta{\TeX\ text}|}{|\meta{\PDF text}|}|
%
%\noindent that can be used in sectioning commands\index{sections>commands} or captions\index{captions} for figures and tables. For example, a caption with the text `An H$_2$O molecule,' that would produce a bad bookmark entry, can be fixed by typing
%
%\noindent{\small|\caption{\texorpdfstring{An H$_2$O molecule}{A water molecule}}|}
%
%\noindent After this, the caption for the figure will feature `H$_2$O' (both in the figure and the list of figures), but its bookmark will substitute `\texttt{water}'.
%
%\bigskip\noindent
%To create links other than those produced by the \LaTeX\ commands |\ref|, |\pageref|, and |\cite|, |hyperref| makes available other commands. Only some of them will be mentioned here. See \cite{manual} for the rest.
%
%\DescribeMacro{\nameref}The |\nameref| command works like |ref|, but creates a link with the chapter or section \emph{name}. It is only applicable to sectioning commands.
%
%\DescribeMacro{\url}The command |\url{|\meta{URL address}|}| prints the \meta{URL address} as a link that launches the local Internet surfer and leads to the corresponding page.
%
%\DescribeMacro{\hypertarget}Analogous to |\label|, the command |\hypertarget{|\meta{key}|}{|\meta{text}|}| makes the \meta{text} to be the target of a cross reference.
%
%\DescribeMacro{\hyperlink}Analogous to |\ref|, the command |\hyperlink{|\meta{key}|}{|\meta{expression}|}| sets up an internal link whose target has been previously defined with |\hypertarget|.
%
%\bigskip\noindent
%\DescribeMacro{\Acrobatmenu}Through the command |\Acrobatmenu{|\meta{menu function}|}{|\meta{text}|}|, a \meta{text} is typeset as a link that activates the \meta{menu function} of Acrobat~Reader (or Exchange). For a list of the available functions, see section~4 of \cite{manual}.\index{links|)}
%
%
%\subsection{Overriding \pittetd's preferences}\label{diffhyperref}
%
%As has been said, \pittetd loads |hyperref| with a fixed set of options. In order to access the package keeping control of it, it is needed to specify the |nohyperref|\option{nohyperref} option for \pittetd and then load |hyperref|:
%
%\noindent|\documentclass[nohyperref]{pittetd}|\\[-2pt]
%\noindent|\usepackage[|\meta{personal options}|]{hyperref}|
%
%This procedure is of course recommended only to users experienced with |hyperref|. A comprehensive list of |hyperref|'s options is given in \cite{options}. Here is the list of options that \pittetd uses by default (when allowed to):
%
%\noindent{\ttfamily letterpaper, colorlinks,\\[-2pt]
%hyperindex=false\\[-2pt]
%bookmarks, bookmarksnumbered, bookmarksopen, \\[-2pt] 
%citecolor=blue, urlcolor=blue}
%
%An option not used by \pittetd that might be relevant is |backref|, that makes the bibliographical entries produce links to the sections in which the corresponding |\cite| appear (there is also the alternative |pagebackref|, with links leading to the \emph{page} of the |\cite|'s).
%
%In any case, it is always good to indicate the driver for |hyperref|, for example |pdftex|\option{pdftex} or |dvipdfm|\option{dvipdfm}, as an option to this package. In fact, when such an option is given to \pittetd, all that is done by the latter is to pass it on to packages that need it, including |hyperref|, |graphicx|\package{graphicx} and |color|\package{color}.
%
%\bigskip\noindent By loading |hyperref| manually, some automatic features of \pittetd are lost: the bookmarks\index{bookmarks} for the bibliography\index{bibliography}, the index\index{index}, and the appendices\index{appendices}; and the filling in of the `Document~Info'\index{Document Info}\index{PDF>Document Info} dialog box of Acrobat~Reader\index{Acrobat Reader}. Figures and tables\index{figures}\index{tables}, however, will still create bookmarks. To get those bookmarks created was the thorniest issue in the writing of \pittetd, and we have decided to keep this working even if the user has chosen to override \pittetd's preferences about |hyperref| (see the code for |\listoffigures| and |\listoftables|).
%
%\DescribeMacro{\pdfbookmark}To create bookmarks\index{bookmarks} additional to those that come from sections in the table of contents (or from the lists of figures and tables), |hyperref| provides the |\pdfbookmark| command:
%
%|\pdfbookmark[|\meta{level}|]{|\meta{bookmark text}|}{|\meta{key}|}|
%
%\noindent where \meta{level} is |0| for chapters, |1| for sections, and so on. The \meta{key} is a unique name chosen by the user. The bookmark will be appended to the panel in the current position, and will point to the page of the text, in which |\pdfbookmark| appears. For more complicated instances (bookmarks that lead to a different location in the document, or that lead to different documents), see sections 5.2.4~and~7.2 of \cite{paper}.\index{packages mentioned:>hyperref=\texttt  {hyperref}>use of|)}\index{hyperref=\texttt  {hyperref} package>use of|)}
%
%\section{Before submitting}\label{checklist}
%
%The \pittetd \LaTeX\ class is programmed to follow closely and consistently the \FG. In general, the author of a thesis or dissertation needs not to be concerned about most of the formatting requirements (for example, checking the bookmarks\index{bookmarks} and links\index{links} one by one is unnecessary). However, this creates the danger of implying that nothing can go wrong. There are in fact some things beyond \pittetd's control, and those things must be checked by the authors themselves (and will probably be checked closely by format reviewers). This section highlights the most common and likely problems.
%
%\begin{description}
%\item[Captions of tables and figures.] Captions\index{captions} for tables\index{tables>captions} should appear at the top of the table, while those for figures\index{figures>captions} go at the bottom. \pittetd does not force nor check this requirement.
%\item[Captions as bookmarks.] Very long captions\index{captions} for tables and figures tend to be truncated when converted to bookmarks\index{bookmarks>limitations}. Also, \LaTeX\ constructions (like formulas, cite commands, etc.) are lost. Sections \ref{optional}~and~\ref{texorpdf} show two ways of dealing with these limitations.
%\item[Capitalization of sections.] The section\index{sections>titles}\index{capitalization of titles} titles are capitalized by \pittetd in the text, but \emph{not} in the bookmarks\index{bookmarks}. The best thing is to provide |\section|\index{section=\verb!*+\section+} with an already-all-capitals argument.
%\item[The \texttt{final} option.] Before submitting it is always very important to run the document with \texttt{final}\option{final} option (i.e., adding `\texttt{final}' to the list of options to |\documentclass|\index{documentclass=\verb!*+documentclass+}). This will catch and make evident any problems in the preliminary pages\index{preliminaries}. See section~\ref{stage}.
%\item[Bad line breaks.] Sometimes \LaTeX\ cannot break a paragraph into lines satisfactorily. The result is one (or more) `overfull' lines\index{overfull lines}, that stick to the right of the margin. \LaTeX\ always gives a warning\index{warnings} about each and every overfull, and these can be seen in the \texttt{.log} file. This file, a plain-text file, can (and should) be read for overfull and other kinds of warnings. Overfull warnings start with the text `{\ttfamily Overfull |\hbox| in paragraph}'.
%\item[Bad page breaks.] Similarly, \LaTeX\ issues an `underfull'\index{underfull boxes} warning for bad page breaking---when it is able to recognize it. But sometimes \LaTeX\ will break a page just after a heading\index{headings}, which is wrong. The best way to check page breaking is to make the pages fit the screen and go scanning quickly page by page (\textsf{PgDn}).
%\item[Warnings.] There are also warnings\index{warnings} about other things, such as incomplete cross~references\index{cross referencing}, undefined |\cite|'s, etc., which are important to fix. The warnings are all collected in the |.log| file, and usually reveal at least one problem that had not been noticed before.\index{warnings} It is not good to neglect reading this file; getting it to report no problems should be the crowning, final step in the thesis/dissertation production.
%\end{description}
%
%\begin{thebibliography}{9}
%\addcontentsline{toc}{section}{References}
%\bibitem{comments} Federico Garcia, \emph{Comments on using \LaTeX\ for theses}, July~2003, file |comments.dvi| or |comments.pdf|, available at \pittetd's webpage.
%\bibitem{manual} Sebastian Rahtz, \emph{Hypertext marks in \LaTeX: the \textsf{hyperref} package}, June~1998, file |manual.pdf|, part of the |hyperref| package distribution. Available at \pittetd's webpage.
%\bibitem{paper} Heiko Oberdiek, \emph{PDF information and navigation elements with hyperref, pdf\TeX, and thumbpdf}, paper  at Euro\TeX'99. File |paper.pdf|, part of the |hyperref| package distribution. Available at \pittetd's webpage.
%\bibitem{luly} Rodrigo De Castro, \emph{El Universo \LaTeX}, 2nd.\ edition, Bogot\'a, Universidad Nacional de Colombia, 2003. 
%\bibitem{options}Sebastian Rahtz, \emph{hyperref package options}, October 1999, file |options.pdf|, part of the |hyperref| package distribution. Available at \pittetd's webpage.
%\end{thebibliography}
%
%
%\PrintIndex
%\StopEventually
%
%\section{The program}
%
%\textsc{docstrip} modules: |class|, |10pt|, |11pt|, |12pt|, |pittdiss|, |pitthesis|, |achicago|
%
%\subsection{Identification}
%    \begin{macrocode}
%<*class>
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesClass{pittetd}[2004/08/17 v1.618
    University of Pittsburgh ETD 
    (Electronic Thesis & Dissertations) class]
%    \end{macrocode}
%
%\subsection{Declarations}
%
%    \begin{macrocode}
\newwrite\@etdaux
\newif\if@errors 
\newif\if@keywords 
\newif\if@tables 
\newif\if@figures 
\newif\if@mainmatter\@mainmattertrue
\newif\if@hyper@ref\@hyper@reftrue
\newif\if@secletters
\newif\if@yeargiven\@yeargivenfalse
\newif\if@dategiven\@dategiventrue
\newlength\@chapterl
\newlength\@sectionl
\newlength\@subsectionl
\newlength\@subsubsectionl
\newlength\@singleline
\newlength\@presubs
\newlength\@presubsub
\newlength\@floatl
\newdimen\bibindent
\newlength\abovecaptionskip
\newlength\belowcaptionskip
\newcounter{@members}\setcounter{@members}{0}
\newcounter{@addprel}\setcounter{@addprel}{8}
\newcounter{@appno}\setcounter{@appno}{0}
\newcounter{chapter}
\newcounter{section}[chapter]
\newcounter{subsection}[section]
\newcounter{subsubsection}[subsection]
\newcounter{paragraph}
\newcounter{subparagraph}
\newcounter{figure}
\newcounter{table}
\newtoks\@expectedprelim
\newtoks\@committee
\newtoks\@coadv
%    \end{macrocode}
%
%\subsection{Options}
%
%These come pretty unchanged from the standard classes:
%
%    \begin{macrocode}
\newcommand\@ptsize{}
\DeclareOption{10pt}{\renewcommand\@ptsize{0}}
\DeclareOption{11pt}{\renewcommand\@ptsize{1}}
\DeclareOption{12pt}{\renewcommand\@ptsize{2}}
\DeclareOption{leqno}{\input{leqno.clo}}
\DeclareOption{fleqn}{\input{fleqn.clo}}
\DeclareOption{openbib}{%
    \AtEndOfPackage{%
        \renewcommand\@openbib@code{%
            \advance\leftmargin\bibindent
            \itemindent -\bibindent
            \listparindent \itemindent
            \parsep \z@
            }%
        \renewcommand\newblock{\par}}}
%    \end{macrocode}
%
%Now for \pittetd's own options. 
%    \begin{macrocode}
\newcommand\t@or@d{}
\newcommand\@this{}
\newcommand\@@@degree{}
\DeclareOption{phd}{\renewcommand{\t@or@d}{phd}%
    \renewcommand\@this{Dissertation}%
    \renewcommand\@@@degree{PhD}%
    \def\@degreesought{\textbf{Doctor of Philosophy}}%
    \def\@advisor{Director}}
\DeclareOption{ma}{\renewcommand{\t@or@d}{ma}%
    \renewcommand\@this{Thesis}%
    \renewcommand\@@@degree{M.A.}%
    \def\@degreesought{\textbf{Master of Arts}}%
    \def\@advisor{Advisor}}
\DeclareOption{ms}{\renewcommand{\t@or@d}{ms}%
    \renewcommand\@this{Thesis}%
    \renewcommand\@@@degree{M.S.}%
    \def\@degreesought{\textbf{Master of Sciences}}%
    \def\@advisor{Advisor}}
\DeclareOption{sectionnumbers}{\@seclettersfalse}
\DeclareOption{sectionletters}{\@secletterstrue}
%    \end{macrocode}
%
%The next are the `stage' options. By declaration, |\if@errors| is false, so only |final| is required to mention it explicitly. See section~\ref{stagecode} for the actual effect of this switch.
%
%    \begin{macrocode}
\DeclareOption{draft}{\setlength{\overfullrule}{5pt}}
\DeclareOption{semifinal}{\setlength{\overfullrule}{5pt}}
\DeclareOption{final}{\setlength{\overfullrule}{0pt}%
    \@errorstrue}
%    \end{macrocode}
%
%The following |\let|'ting of |\nameref| to |\ref| provides for the case that a document that has been processed all the time with |hyperref| is suddenly changed to |nohyperref|. If |hyperref| (the package) is to be loaded, it will redefine the command (fortunately it is defined with |\def| in |nameref.sty|; for a not-as-lucky case, see the handling of |\texorpdfstring| below).
%    \begin{macrocode}
\DeclareOption{nohyperref}{\let\nameref\ref\@hyper@reffalse}
%    \end{macrocode}
%
%Note that the `options' |pdftex| and |dvipdfm|, advertised so much in the documentation above, are not actually defined in |pittetd.cls|. Because of \LaTeX\ options mechanism, they will be simply passed on to any package that is loaded.
%
%Okay. Default options, and processing of any non-default:
%
%    \begin{macrocode}
\ExecuteOptions{12pt,semifinal,hyperref,phd}
\ProcessOptions
%    \end{macrocode}
%
%\subsection{Stage and error handling}\label{stagecode}
%
%\begin{macro}{\@linemessage}Through |\@linemessage| and |\@nolinemessage|, whose actual performance depends on the `stage' option, most problems will only warn, unless the |final| option has turned |\if@errors| true.
%    \begin{macrocode}
\newcommand\@linemessage[2]{%
    \if@errors
        \ClassError{pittetd}{#1}{#2}
    \else
        \ClassWarning{pittetd}{#1}
    \fi}
%    \end{macrocode}
%\begin{macro}{\@nolinemessage}
%    \begin{macrocode}
\newcommand\@nolinemessage[2]{\if@errors
    \ClassError{pittetd}{#1}{#2}\else
    \ClassWarningNoLine{pittetd}{#1}\fi}
%    \end{macrocode}
%\end{macro}\end{macro}
%
%\subsection{Initialization}
%
%First, let's get the font size done: one file for each of the three available sizes. The length |\@singleline| is an important one: it is the space between two lines of text, which is exactly 1.5 of the regular spacing in a standard \LaTeX\ class (according to size). |\normalsize| is the only size that really sets everything up, and the only whose spacing is more than single line. The others modify only the font size itself, and are just a little more than single-spaced (as are all sizes in standard classes). Other things that depend on the font size are set in these files. %    \begin{macrocode}
%</class>
%<*10pt>
\setlength{\@singleline}{18\p@}
\renewcommand\normalsize{%
    \@setfontsize\normalsize\@xpt{18}%
    \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
    \abovedisplayshortskip \z@ \@plus3\p@
    \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
    \belowdisplayskip \abovedisplayskip
    \let\@listi\@listI}
\newcommand\small{\@setfontsize\small\@ixpt{11}}
\newcommand\footnotesize{\@setfontsize\footnotesize\@viiipt{9.5}}
\newcommand\scriptsize{\@setfontsize\scriptsize\@viipt\@viiipt}
\newcommand\tiny{\@setfontsize\tiny\@vpt\@vipt}
\newcommand\large{\@setfontsize\large\@xiipt{14}}
\newcommand\Large{\@setfontsize\Large\@xivpt{18}}
\newcommand\LARGE{\@setfontsize\LARGE\@xviipt{22}}
\newcommand\huge{\@setfontsize\huge\@xxpt{25}}
\newcommand\Huge{\@setfontsize\Huge\@xxvpt{30}}
\newcommand\singlespace{\@setfontsize\singlespace\@xpt\@xiipt}
\setlength\footnotesep{6.65\p@}
\setlength{\skip\footins}{9\p@ \@plus 4\p@ \@minus 2\p@}
\setlength\parindent{15\p@} 
%</10pt>
%    \end{macrocode}
%    \begin{macrocode}
%<*11pt>
\setlength{\@singleline}{20.4\p@}
\renewcommand\normalsize{%
    \@setfontsize\normalsize\@xipt{20.4}%
    \abovedisplayskip 11\p@ \@plus3\p@ \@minus6\p@
    \abovedisplayshortskip \z@ \@plus3\p@
    \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@
    \belowdisplayskip \abovedisplayskip
    \let\@listi\@listI}
\newcommand\small{\@setfontsize\small\@xpt\@xiipt}
\newcommand\footnotesize{\@setfontsize\footnotesize\@ixpt{11}}
\newcommand\scriptsize{\@setfontsize\scriptsize\@viiipt{9.5}}
\newcommand\tiny{\@setfontsize\tiny\@vipt\@viipt}
\newcommand\large{\@setfontsize\large\@xiipt{14}}
\newcommand\Large{\@setfontsize\Large\@xivpt{18}}
\newcommand\LARGE{\@setfontsize\LARGE\@xviipt{22}}
\newcommand\huge{\@setfontsize\huge\@xxpt{25}}
\newcommand\Huge{\@setfontsize\Huge\@xxvpt{30}}
\newcommand\singlespace{\@setfontsize\singlespace\@xipt{13.6}}
\setlength\footnotesep{7.7\p@}
\setlength{\skip\footins}{10\p@ \@plus 4\p@ \@minus 2\p@}
\setlength\parindent{17\p@}
%</11pt>
%    \end{macrocode}
%    \begin{macrocode}
%<*12pt>
\setlength{\@singleline}{21.75\p@}
\renewcommand\normalsize{%
    \@setfontsize\normalsize\@xiipt{21.75}%
    \abovedisplayskip 12\p@ \@plus32\p@ \@minus7\p@
    \abovedisplayshortskip \z@ \@plus3\p@
    \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@
    \belowdisplayskip \abovedisplayskip
    \let\@listi\@listI}
\newcommand\small{\@setfontsize\small\@xipt{13.6}}
\newcommand\footnotesize{\@setfontsize\footnotesize\@xpt\@xiipt}
\newcommand\scriptsize{\@setfontsize\scriptsize\@viiipt{9.5}}
\newcommand\tiny{\@setfontsize\tiny\@vipt\@viiipt}
\newcommand\large{\@setfontsize\large\@xivpt{18}}
\newcommand\Large{\@setfontsize\Large\@xviipt{22}}
\newcommand\LARGE{\@setfontsize\LARGE\@xxpt{25}}
\newcommand\huge{\@setfontsize\huge\@xxvpt{30}}
\let\Huge\huge
\newcommand\singlespace{\@setfontsize\singlespace\@xiipt{14.5}}
\setlength\footnotesep{8.4\p@}
\setlength{\skip\footins}{10.8\p@ \@plus 4\p@ \@minus 2\p@}
\setlength{\parindent}{19\p@}
%</12pt>
%<*class>
%    \end{macrocode}
%
%The right file is loaded next. For all sizes, the following |\let|'s are true.
%    \begin{macrocode}
\input{pitetd1\@ptsize.clo}
\let\Small\footnotesize
\let\SMALL\scriptsize
\let\bibindent\parindent
%    \end{macrocode}
%
%\bigskip
%\noindent Now for some initial values. The first five are needed to format the table of contents and the lists of tables and figures, and are to be changed by the |\jobname.etd| file below. Oh!, |\normalfont| must come before for |em| to make sense as a length unit.
%    \begin{macrocode}
\normalfont
\setlength\@chapterl{1.5em}
\setlength\@sectionl{1.5em}
\setlength\@subsectionl{1em}
\setlength\@subsubsectionl{1em}
\setlength\@floatl{2.3em}
%    \end{macrocode}
%    \begin{macrocode}
\newcommand\@phd{phd}
\newcommand\contentsname{CONTENTS}
\newcommand\listfigurename{LIST OF FIGURES}
\newcommand\listtablename{LIST OF TABLES}
\newcommand\bibname{BIBLIOGRAPHY}
\newcommand\indexname{INDEX}
\newcommand\figurename{Figure}
\newcommand\tablename{Table}
\newcommand\chaptername{Chapter}
\newcommand\appendixname{APPENDIX}
\newcommand\abstractname{}
\newcommand\convname{CONVENTIONS}
%    \end{macrocode}
%
%For the table of contents and related:
%    \begin{macrocode}
\setcounter{secnumdepth}{3}
\setcounter{tocdepth}{3}
\newcommand\@pnumwidth{1.55em}
\newcommand\@tocrmarg{2.55em}
\newcommand\@dotsep{4.5}
%    \end{macrocode}
%
%And here we go with the |\jobname.etd| file. It will tell \pittetd whether there are tables and/or figures---switches |\if@figures| and |\if@tables|, both initially false---and the lengths |\@chapterl|, |\@sectionl|, etc., which hold the width of the widest label of each sectioning level and the widest float number (plus some extra space). The indentation of the sections in the table of contents is equal to |\@chapterl|; that of the lesser levels (lengths |\@presubs| and |\@presubsub|) is then calculated as the sum of the widths of higher levels.
%
%These calculations are necessary for potentially long Roman numerals of chapters. For example, in \textsf{pittesis}, the number \textbf{VIII} collides with the title of the chapter. And once we have to fix this, why not do it with all the levels, in all the cases? Likewise, if figures and tables are numbered within chapters, it is not that unlikely that expressions like `VIII.10' have to appear in the corresponding list. The width has to be kept track of.
%
%    \begin{macrocode}
\InputIfFileExists{\jobname.etd}{}{%
    \if@errors
        \ClassWarningNoLine{pittetd}{%
            No \jobname.etd file. Entering semifinal mode}%
        \@errorsfalse
    \fi}
\if@errors\else\AtEndDocument{\ClassWarningNoLine{pittetd}{%
    Remember to run the document with `final' option}}\fi
\setlength\@presubs{1\@sectionl}
\addtolength\@presubs{1\@chapterl}
\setlength\@presubsub{1\@presubs}
\addtolength\@presubsub{1\@subsectionl}
\newcommand*\l@chapter{%
    \@dottedtocline{0}{\z@}{\@chapterl}}
\newcommand*\l@section{%
    \@dottedtocline{1}{\@chapterl}{\@sectionl}}
\newcommand*\l@subsection{%
    \@dottedtocline{2}{\@presubs}{\@subsectionl}}
\newcommand*\l@subsubsection{%
    \@dottedtocline{3}{\@presubsub}{\@subsubsectionl}}
%    \end{macrocode}
%
%Other parameters:
%    \begin{macrocode}
\setlength\arraycolsep{5\p@}
\setlength\tabcolsep{6\p@}
\setlength\arrayrulewidth{.4\p@}
\setlength\doublerulesep{2\p@}
\setlength\tabbingsep{\labelsep}
\skip\@mpfootins=\skip\footins
\setlength\fboxsep{3\p@}
\setlength\fboxrule{.4\p@}
\@addtoreset{equation}{chapter}
\renewcommand\theequation{\ifnum \c@chapter>\z@ 
    \thechapter.\fi\@arabic\c@equation}
%    \end{macrocode}
%
%Page style and initialization:
%    \begin{macrocode}
\pagestyle{plain} 
\pagenumbering{roman}
\setcounter{footnote}{0}
\let\@openbib@code\@empty
%    \end{macrocode}
%
%And just in case some \LaTeX\ commands need to know this:
%    \begin{macrocode}
\@twosidefalse
\@mparswitchfalse
\@twocolumnfalse
%    \end{macrocode}
%
%\subsection{Counters and numbers}
%
%The issue here is the two kinds of section numbering, 1.1.1.1 or I.A.1.a. In the second case, the headings for each section is \emph{not} to include the `number' of the previous (I. First Chapter; but A. First section). This involves two subtleties concerning cross references in the text: firstly, a reference to `section B' would mean nothing without the chapter `number;' secondly, the `number' bears a final period in headings, but we do not want the period to appear within the text. 
%
%\begin{macro}{\period@or@not}\begin{macro}{\gobble@or@not}This is handled with the |\period@or@not| and |\gobble@or@not| mechanisms. In principle, both commands expand to nothing, but when |\@withperiod| or |\@withgobble| are declared (always locally in a group), they expand to period or to gobble.
%    \begin{macrocode}
\let\period@or@not\relax
\def\@withperiod{\def\period@or@not{.}}
\let\gobble@or@not\relax
\def\@withgobble{\let\gobble@or@not\@gobble}
%    \end{macrocode}\end{macro}\end{macro}
%
%\begin{macro}{\thechapter}\begin{macro}{\thesection}\begin{macro}{\thesubsection}\begin{macro}{\thesubsubsection}Now section numbers have to be defined accordingly. A regular call to |\thesubsection|, such as that done by a |\ref| command, for example, will not produce a period nor gobble the previous stuff.
%    \begin{macrocode}
\renewcommand\thechapter{\if@secletters
    \expandafter\@Roman\c@chapter\period@or@not
    \else\@arabic\c@chapter\fi}
\renewcommand\thesection{\if@secletters
        \gobble@or@not{\thechapter.}\expandafter\@Alph
        \c@section\period@or@not
    \else\thechapter.\@arabic\c@section\fi}
\renewcommand\thesubsection{\if@secletters
        \gobble@or@not{\thesection.}\@arabic
        \c@subsection\period@or@not
    \else\thesection.\@arabic\c@subsection\fi}
\renewcommand\thesubsubsection{\if@secletters
        \gobble@or@not{\thesubsection.}\@alph
        \c@subsubsection\period@or@not
    \else\thesubsection.\@arabic\c@subsubsection\fi}
%    \end{macrocode}\end{macro}\end{macro}\end{macro}\end{macro}
%
%\begin{macro}{\pdfstringdefPreHook}We also have to instruct |hyperref| how to handle these commands when building a \PDF string. We take the chance to avoid a series of warnings for |\ignorespace|, and also tell about |\acro|, which is defined below.
%    \begin{macrocode}
\newcommand\pdfstringdefPreHook{%
    \let\acro\relax
    \let\ignorespaces\relax
    \let\gobble@or@not\@gobble
    \def\period@or@not{.}}
%    \end{macrocode}\end{macro}
%
%\begin{macro}{\thefigure}\begin{macro}{\thetable}\begin{macro}{\chapterfloats}Next, floating-objects numbering. In principle it is consecutive, but the user might want to make it chapter-dependent. In implementing that option (as |\chapterfloats|), |\thechapter| cannot be used, since the |\period@or@not| would wrongly expand into a period in the bookmarks, creating double periods. And there is no way around it, so we have to use |\c@chapter| directly.
%
%On the other hand, with |\chapterfloats|, floats in the appendices should be numbered `A1,' not `A.1.' This is achieved by using |\if@mainmatter|, since only |\appendix| sets |\@mainmatterfalse|.\index{appendices}
%    \begin{macrocode}
\renewcommand\thefigure{\@arabic\c@figure}
\renewcommand\thetable{\@arabic\c@table}
\newcommand\chapterfloats{\@addtoreset{figure}{chapter}%
    \@addtoreset{table}{chapter}%
    \renewcommand\thefigure{%
        \if@mainmatter
            \if@secletters
                \expandafter\@Roman\c@chapter
            \else\@arabic\c@chapter
            \fi.%
        \else\expandafter\@Alph\c@chapter\fi
        \@arabic\c@figure}%
    \renewcommand\thetable{%
        \if@mainmatter
            \if@secletters
                \expandafter\@Roman\c@chapter
            \else\@arabic\c@chapter
            \fi.%
        \else\expandafter\@Alph\c@chapter\fi
        \@arabic\c@table}}
\@onlypreamble\chapterfloats
%    \end{macrocode}\end{macro}\end{macro}\end{macro}
%
%\begin{macro}{\regularenum}Finally, the labels for the four levels of the |enumerate| environment are set. In case the second numbering is used for sections, these labels are set to Roman, Alpha, arabic, alpha.
%    \begin{macrocode}
\newcommand\regularenum{%
    \renewcommand\theenumi{\@arabic\c@enumi}%
    \renewcommand\theenumii{\@alph\c@enumii}%
    \renewcommand\theenumiii{\@roman\c@enumiii}%
    \renewcommand\theenumiv{\@Alph\c@enumiv}}
\if@secletters
    \renewcommand\theenumi{\@Roman\c@enumi}
    \renewcommand\theenumii{\@Alph\c@enumii}
    \renewcommand\theenumiii{\@arabic\c@enumiii}
    \renewcommand\theenumiv{\@alph\c@enumiv}
\else\regularenum\fi
%    \end{macrocode}\end{macro}
%
%\subsection{Layout parameters}
%
%This follows closely the standard classes.
%    \begin{macrocode}
\setlength\lineskip{1\p@}
\setlength\normallineskip{1\p@}
\setlength\parskip{0\p@ \@plus \p@}
\setlength{\smallskipamount}{%
    .25\@singleline \@plus 1\p@ \@minus 1\p@}
\setlength{\medskipamount}{%
    .5\@singleline \@plus 2\p@ \@minus 2\p@}
\setlength{\bigskipamount}{%
    1\@singleline \@plus 4\p@ \@minus 4\p@}
\@lowpenalty 51
\@medpenalty 151
\@highpenalty 301
\clubpenalty 250
\widowpenalty 250
%    \end{macrocode}
%
%But page layout, being fixed here, is set directly and not through options.
%    \begin{macrocode}
\setlength\paperwidth{8.5in}
\setlength\textwidth{6.5in}
\setlength\oddsidemargin{\z@}
\setlength\paperheight{11in}
\setlength\textheight{9in}
\setlength\topskip{1\@ptsize \p@}
\setlength\maxdepth{.5\topskip}
\setlength\footskip{.5in}
\setlength\topmargin{\z@}
\setlength\headheight{\z@}
\setlength\headsep{\z@}
\setlength\marginparwidth{\z@}
\setlength\marginparsep{\z@}
%    \end{macrocode}
%
%By the way, if the |showidx| package is loaded, we should allow room for |\marginpar|'s (lest a forest of overfull messages populates the |.log| file).
%    \begin{macrocode}
\AtBeginDocument{\@ifpackageloaded{showidx}{%
    \setlength\marginparwidth{1in}
    \setlength\marginparsep{2pt}}{}}
%    \end{macrocode}
%
%More layout: this follows the standard classes, with adapted values, and omitting the double-column parameters.
%    \begin{macrocode}
\setcounter{topnumber}{2}
\renewcommand{\topfraction}{.5}
\setcounter{bottomnumber}{1}
\renewcommand\bottomfraction{.3}
\setcounter{totalnumber}{3}
\renewcommand\textfraction{.2}
\renewcommand\floatpagefraction{.5}
\setlength{\@fptop}{0\p@ \@plus 1fill}
\setlength{\@fpsep}{8\p@ \@plus 1fill}
\setlength{\@fpbot}{0\p@ \@plus 1fill}
\setlength{\floatsep}{.5\@singleline \@plus \z@ \@minus 10.2\p@}
\setlength{\textfloatsep}%
    {1.5\@singleline \@plus \z@ \@minus 10.2\p@}
\setlength{\intextsep}{.5\@singleline \@plus \z@ \@minus 10.2\p@}
\setlength\abovecaptionskip{\@singleline}
\setlength\belowcaptionskip{\@singleline}
%    \end{macrocode}
%
%\subsection{Font commands}
%
%    \begin{macrocode}
\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
\DeclareRobustCommand*\cal{\@fontswitch\relax\mathcal}
\DeclareRobustCommand*\mit{\@fontswitch\relax\mathnormal}
%    \end{macrocode}
%
%Here comes the first thing we have to deal with for the |achicago| package, that makes |\emph| behave as |\textsl|, rather than |\textit|. For the use of patches, see section~\ref{patchescode}.
%    \begin{macrocode}
%</class>
%<*achicago>
\makeatletter
\@ifundefined{achicago@patch}\relax\endinput
\renewcommand{\emph}[1]{{\itswitch #1}}%
%</achicago>
%<*class>
%    \end{macrocode}
%
%\begin{macro}{\acro}The |\acro| command is an adaptation from the one in the |ltugboat| class:
%    \begin{macrocode}
\@ifundefined{acro}{%
    \DeclareRobustCommand\SMC{%
    \ifx\@currsize\normalsize\small\else
    \ifx\@currsize\singlesize\small\else
    \ifx\@currsize\small\footnotesize\else
        \ifx\@currsize\footnotesize\scriptsize\else
        \ifx\@currsize\large\normalsize\else
        \ifx\@currsize\Large\large\else
        \ifx\@currsize\LARGE\Large\else
            \ifx\@currsize\scriptsize\tiny\else
            \ifx\@currsize\tiny\tiny\else
            \ifx\@currsize\huge\LARGE\else
            \ifx\@currsize\Huge\huge\else
                \small\SMC@unknown@warning
    \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
    }
    \newcommand\SMC@unknown@warning{\ClassWarning{pittetd}{%
        \string\SMC: unrecognized text font size 
        command---using \string\small}}
    \newcommand\textSMC[1]{{\SMC #1}}
    \newcommand\acro[1]{\textSMC{#1}\@}}{}
%    \end{macrocode}\end{macro}
%\subsection{Hyperref}
%
%We begin by loading |hyperref|; at the end of the preamble, the proper options are set. Here, the user will already have provided the information for the `Document~Info' dialog box (|\@pdftitle|, |\@author|, etc.). We take pride on \pittetd having created the \PDF file, too.
%    \begin{macrocode}
\if@hyper@ref
    \AtEndOfClass{%
        \usepackage[bookmarks,hyperindex=false]{hyperref}%
        \def\@pdfcreator{LaTeX, pittetd class, hyperref package}}
    \AtBeginDocument{%
        \hypersetup{letterpaper,bookmarksnumbered,%
            colorlinks,bookmarksopen,%
            linkcolor=blue,citecolor=blue,urlcolor=blue,%
            pdftitle=\@pdftitle,pdfauthor=\@author,%
            pdfkeywords=\@keywords,%
            pdfsubject=\the\subject}}
\fi
%    \end{macrocode}
%
%|hyperref| redefines |\maketitle| to implement the special footnotes for |\author| and so on. This is disabled here. Also, the switch |\@hyper@ref| is set to true |\AtBeginDocument|, in case the user has loaded it manually. If |hyperref| is not loaded, |\texorpdfstring| is not defined. Since it could be still used in the document (if it was ever typeset with |hyperref| in mind), we provide a definition it here.
%    \begin{macrocode}
\AtBeginDocument{\@ifpackageloaded{hyperref}{%
    \let\maketitle\HyOrg@maketitle
    \@hyper@reftrue}{%
    \@hyper@reffalse
    \let\texorpdfstring\@firstoftwo}}
%    \end{macrocode}
%
%\subsection{Packages and patches}\label{patchescode}
%
%\begin{macro}{\patch}\begin{macro}{\usewithpatch}A difficult decision about the file extension for the patches. For one thing, an automatic search mechanism required the file name to be the same as the package's. But then extensions like |.clo| or |.def|, already in use by \LaTeX, could very well confuse \pittetd, for it is possible that files called that way, but not designed for the class, are already installed in the system.
%    \begin{macrocode}
\newcommand*\patch[1]{\InputIfFileExists{#1.pit}{%
            \ClassInfo{pittetd}{Patch for #1 loaded}}{%
            \ClassInfo{pittetd}{No patch found for #1}}}
\newcommand*\usewithpatch[2][\@empty]{%
    \ifx\@empty#1\usepackage{#2}\else\usepackage[#1]{#2}\fi%
    \patch{#2}}
\@onlypreamble\patch
%    \end{macrocode}\end{macro}\end{macro}
%
%The patches for the \textsf{pitthesis} and \textsf{pittdiss} classes are given below (section~\ref{pitt}), and serve as illustration.
%
%
%\subsection{Preliminaries}
%
%\subsubsection{Commands for the information}
%
%\begin{macro}{\title}First of all, |\title| has to be redefined for the optional argument, but |\author| remains the same (it |\gdef|'s |\@author| to its argument). However, standard-classes command |\thanks| is disabled here: it gobbles its argument and issues a warning.
%
%    \begin{macrocode}
\renewcommand*{\title}[2][\@empty]{%
    \gdef\@title{#2}\ifx\@empty#1%
        \gdef\@pdftitle{#2}%
    \else\gdef\@pdftitle{#1}\fi}
\renewcommand{\thanks}[1]{\ClassWarning{pittetd}{%
    The argument of \string\thanks\space has been ignored.}}
%    \end{macrocode}\end{macro}
%
%\begin{macro}{\date}For master's theses the committee may be omitted. I conclude that everything concerning the defense may be omitted too. So, \pittetd needs a way to know whether it should typeset the text `It was approved' or not, which means scanning the |\date| to see if it is void. In any case, default value is |\today|.
%    \begin{macrocode}
\renewcommand*{\date}[1]{%
    \sbox\@tempboxa{\normalfont #1}
    \ifnum\wd\@tempboxa>0\global\@dategiventrue
    \else\global\@dategivenfalse\fi
    \gdef\@date{\ #1\ }}
\edef\today{\ifcase\month\or
  January\or February\or March\or April\or May\or June\or
  July\or August\or September\or October\or November\or 
  December\fi\space\number\day, \number\year}
\date{\today}
%    \end{macrocode}\end{macro}
%
%\begin{macro}{\year}The year, on the contrary, must be present. Since it is not a standard \LaTeX\ requirement, we provide for the user not having thought of it: it assumes the current year and makes sure to remember that it was not provided.
%    \begin{macrocode}
\edef\@year{\number\year}
\renewcommand{\year}[1]{%
    \gdef\@year{#1}\@yeargiventrue}
%    \end{macrocode}\end{macro}
%
%\begin{macro}{\@degree}\begin{macro}{\@school}And there are many other commands that regular \LaTeX\ never defined. They have to be kept from stopping the run, so we initialize some of values to produce a warning (or error, according to stage).
%    \begin{macrocode}
\newcommand\@degree{\@nolinemessage{No \string\degree\space 
    command}{It is required to list the author's previous 
    degree(s). Use the \string\degree\space (or \string\previousdegree\space command.}}
\newcommand\@school{\@nolinemessage{No \string\school\space 
    command}{It is required to name the school (and 
    optionally the department). Use the \string\school\space 
    command.}}
\newcommand\@@school{\relax}
%    \end{macrocode}\end{macro}\end{macro}
%
%\begin{macro}{\degree}\begin{macro}{\previousdegree}User's commands, if any, will override the previous definitions. |\previousdegree| is useful in case |\degree| is assigned other meaning by a package.
%    \begin{macrocode}
\newcommand{\degree}[1]{\gdef\@degree{#1}}
\let\previousdegree\degree
%    \end{macrocode}\end{macro}\end{macro}
%\begin{macro}{\school}|\school| defines one thing for the title page, another one for the committee page.
%    \begin{macrocode}
\newcommand\school[2][the]{\gdef\@school{#1\ #2}%
    \gdef\@@school{\uppercase{#2}}}
%    \end{macrocode}\end{macro}
%
%\begin{macro}{\degreesought}\begin{macro}{\subject}\begin{macro}{\keywords}Now the only information missing is the degree sought, already initialized, and `Subject' and `Keywords' for the Document~Info dialog box. The former is best implemented as a token register (the user fills it in if types |\subject{...}|). Both commands should be in the preamble, before |hyperref| builds up the Document~Info.
%    \begin{macrocode}
\newcommand\degreesought[1]{\def\@degreesought{#1}}
\newtoks\subject
\def\@keywords{}
\newcommand\keywords[1]{\gdef\@keywords{#1}}
\@onlypreamble\subject
\@onlypreamble\keywords
%    \end{macrocode}\end{macro}\end{macro}\end{macro}
%
%\subsubsection{The order}
%
%\begin{macro}{\@enable}\begin{macro}{\@disable}The mechanism by which \pittetd checks that the preliminaries are in the right order is the next: each preliminary `disables' those that cannot be placed afterwards, and `enables' the one or more than can follow. `Disable' and `enable' mean `create the right warning/error:'
%    \begin{macrocode}
\newcommand\@enable[2]{%
    \global\expandafter\let\csname @#1message\endcsname\relax
    \global\@expectedprelim{#2}}
\newcommand\@disable[1]{%
    \global\expandafter\def\csname @#1message\endcsname{%
        \@linemessage{Something is missing or misplaced. 
            I was expecting \the\@expectedprelim}{%
            The preliminaries should be placed in the next order:
            \MessageBreak title, committee, [copyright], 
            abstract, [preface/foreword], tableofcontents, 
            [listoftables], [listoffigures].\MessageBreak
            \MessageBreak I think something is either missing or 
            misplaced in your document. I will typeset things in 
            the given order, but you should double-check.}}}
%    \end{macrocode}\end{macro}\end{macro}
%When something is `enabled,' the `expected preliminary' (used by \pittetd when complaining) is changed (it's the second argument to |\@enable|). Note that the enabled preliminaries and expected ones are not necessarily the same, because there are optional preliminaries.
%
%\begin{macro}{\@@disable}A second kind of `disable' (|\@@disable|) is for lists of tables or figures with no tables or figures in it:
%    \begin{macrocode}
\newcommand\@@disable[2]{%
    \global\expandafter\def\csname @#1message\endcsname{%
        \@linemessage{There is no #2}{I have found no #2, so it 
        makes no sense to me to include a list of them.
        Proceed, but expect an ugly heading followed by 
        nothing...}}}
%    \end{macrocode}\end{macro}
%
%So, each preliminary has (and executes) its own |\@...message| command, which is a complaint or a relaxation, according to the enable-status. To initialize these commands, we need to:
%    \begin{macrocode}
\@enable{title}{\maketitle}
\@disable{committee}
\@disable{copyright}
\@disable{abstract}
\@disable{preface}
\@disable{table}
\@disable{lof}
\@disable{lot}
\@disable{conv}
%    \end{macrocode}
%
%\subsubsection{Bookmarking the preliminaries}
%
%Every preliminary is bookmarked by default. This is done by placing an |\hypertarget| and writing directly into the bookmark file, |\@outlinefile| (the bookmarks of figures and tables are discussed below). Option |nohyperref| turns this off, but in a round-about way: the test is no |\if@hyper@ref|, but |\@ifundefined{@outlinefile}|, because if no driver (|pdftex| or |dvipdfm|) is loaded by the user, |hyperref| will not create bookmarks anyway (it does not know which convention to use). 
%
%\subsubsection{The title}
%
%\begin{macro}{\maketitle}
%    \begin{macrocode}
\newcommand\maketitle{\@titlemessage
    \if@dategiven
        \if@yeargiven\else
            \ClassWarningNoLine{pittetd}{%
                I assumed `\@year' for the year. 
                You can use \string\year\space to change it}%
        \fi
    \fi
    \@ifundefined{@outlinefile}{}{%
        \hypertarget{prelim.0}{}%
        \protected@write\@outlinefile{}{%
            \protect\BOOKMARK
            [0][]{prelim.0}{TITLE PAGE}{}}}
    \thispagestyle{empty}%
%    \end{macrocode}
%
%I chose to ignore the `8~spaces' kind of stuff. That is more suited for typewriters than for \TeX, and far less robust, for multiple-line things could cause the information to overflow the page if the directions are followed at face value. A large font is used, with an interline spacing of around `2~spaces,' which is what the \FG ask the most for in the title page. But for the `2~spaces' from the the top, a |\vskip| is needed, and |1.3\@singleline| is about right ($\mbox{\cs{@singleline}}\simeq3s/2\Rightarrow4/3\mbox{\cs{@singleline}}\simeq2s$)!
%    \begin{macrocode}
    {\centering
        \fontsize\@xviipt{1.5\@singleline}\selectfont
        \null\vskip 1.3\@singleline
        {\bfseries\uppercase\expandafter{\@title}}\par
        \vfill
        by\par
        {\bfseries\@author}\par
        {\let\noexpand\relax\@degree}\par
        \vfill
        Submitted to the Graduate Faculty of\par
        \@school\ in partial fulfillment\par
        of the requirements for the degree of\par
        \@degreesought\par
        \vfill
        University of Pittsburgh\par
        \@year\par}
    \@enable{committee}{\makecommittee}
%    \end{macrocode}
%
%And, to save memory:
%    \begin{macrocode}
    \global\let\thanks\relax
    \global\let\maketitle\relax
    \global\let\title\relax
    \global\let\author\relax
    \global\let\and\relax}
%    \end{macrocode}\end{macro}
%
%\subsubsection{The committee page}
%
%\begin{macro}{\@commline}\begin{macro}{\@committee}The interesting thing here is the handling of committee members. First of all, the user shouldn't be asked to count the members---that sounds like a task for \LaTeX---and, second, the advisor could be just the first member mentioned.
%    \begin{macrocode}
\def\@commline{\ifhmode\\\else\relax\fi}
\def\committeemember#1{%
    \stepcounter{@members}
    \@committee\expandafter{\the\@committee#1\@commline}}
%    \end{macrocode}\end{macro}\end{macro}
%
%Thus the register |\@committee| is a list of members separated by |\@comline|. The latter expands into |\\| only when the list is actually typeset. 
%
%\begin{macro}{\committeepage}Now for the actual page (which is typeset only if the user provided at least one |\committeemember|).
%    \begin{macrocode}
\newcommand\makecommittee{\clearpage\@committeemessage
    \ifnum\value{@members}>0
        \@ifundefined{@outlinefile}{}{%
            \hypertarget{prelim.1}{}%
            \protected@write\@outlinefile{}{%
                \protect\BOOKMARK
                [0][]{prelim.1}{COMMITTEE MEMBERSHIP PAGE}{}}}
        \@committee\expandafter{\the\@committee\relax}%
        {\centering
        \normalsize\fontsize\f@size{1.3\@singleline}\selectfont
        \null\vskip 1.3\@singleline
        UNIVERSITY OF PITTSBURGH\par
        \@@school\par
        \vfill
        This \lowercase\expandafter{\@this} was presented\\
        by\\[.67\@singleline]\@author\\[.67\@singleline]
        \if@dategiven
            It was defended on\\
            \@date\\ \else\ClassWarningNoLine{pittetd}{%
            You really should provide the date of the defense 
            (command \string\date)}\fi
        \ifnum\value{@members}>1
            \if@dategiven and \else It was \fi
            approved by\\
            \the\@committee
%    \end{macrocode}
%
%If more than one member is given, the advisor has yet to be found (the trick is done by |\@getadvisor|, defined below). If not, and the document is a dissertation, \pittetd complains.
%    \begin{macrocode}
            \expandafter\@getadvisor\the\@committee
        \else
            \ifx\t@or@d\@phd\@linemessage{Just one committee
            member}{For Ph. D. dissertations, the whole committee
            must be included. For the moment, I will typeset only 
            the advisor.}\fi
            \vfill\fi
%    \end{macrocode}
%However, support for two advisors has to be given.
%    \begin{macrocode}
        \@this\ \@advisor: \the\@committee\the\@coadv
        \vfill
        \newpage}
        \renewcommand\committeemember[1]{\ClassError{pittetd}{%
            Command \string\committeemember\space after 
            \string\makecommittee}{The new name will just be 
            ignored.}}
        \let\makecommittee\relax
    \else\@linemessage{No members for the committee}{%
        I will ignore the \string\makecommittee\space command 
        until you give me some names.}
    \fi
    \@enable{copyright}{\begin{abstract}}%
    \@enable{abstract}{\begin{abstract}}}
%    \end{macrocode}\end{macro}
%\begin{macro}{\@getadvisor}When |\@getadvisor| is called, it is followed by the whole committee, names separated by |\@commline|, and all followed by |\relax|. Thus this command can take only the first name. Note that by the moment |\@getadvisor| is called, the whole list of the committee has been typeset already, and that is why it can be redefined. %    \begin{macrocode}
\def\@getadvisor#1\@commline#2\relax{\@committee{#1}}
%    \end{macrocode}\end{macro}
%
%\begin{macro}{\coadvisor}The |\coadvisor| command simply redefines |\@coadv| (initially void) and |\@advisor|.
%    \begin{macrocode}
\newcommand\coadvisor[1]{%
    \renewcommand\@advisor{Advisors}%
    \@coadv{,\\#1}}
%    \end{macrocode}\end{macro}
%
%\subsubsection{Copyright page}
%\begin{macro}{\copyrightpage}
%    \begin{macrocode}
\newcommand\copyrightpage{\clearpage\@copyrightmessage
    \null\vfill
    {\centering\normalsize Copyright
        \textcopyright\ by \@author\\\@year\\}%
    \vfill\newpage
    \@enable{abstract}{\begin{abstract}}}
%    \end{macrocode}\end{macro}
%
%\subsubsection{The abstract}
%
%The optional argument is the title for the list of Keywords. The construction has to be done through a switch |\@keywordstrue| because environment arguments can only be used for the opening part. \pittetd appends a period to the list, if it is not already there.
%    \begin{macrocode}
\newenvironment{abstract}[1][\@empty]
    {\ifx\@empty#1\else\@keywordstrue\def\@tempcsa{#1}\fi
    \clearpage\@abstractmessage
    \@afterindentfalse
    \typeout{Abstract}%
    \@ifundefined{@outlinefile}{}{%
        \hypertarget{prelim.2}{}%
        \protected@write\@outlinefile{}{%
            \protect\BOOKMARK
            [0][]{prelim.2}{ABSTRACT}{}}}
    \null\nobreak\vskip 1in
    {\centering\normalfont
        {\bfseries\uppercase
        \expandafter{\@title}}\\[.3\@singleline]
        \@author, \@@@degree\\[.3\@singleline]
        University of Pittsburgh, \@year\par}
    \par\vspace{1\@singleline}\@afterheading}%
    {\if@keywords
        \medskip\begin{description}\item[\@tempcsa]\@keywords
        {\normalsfcodes\ifnum\spacefactor=\sfcode`.\else.\fi}
        \end{description}\fi
    \@disable{copyright}%
    \newpage\@enable{table}{\tableofcontents}}
\newenvironment{abstract*}[1][\@empty]
    {\ifx\@empty#1\else\@keywordstrue\def\@tempcsa{#1}\fi
    \clearpage\@abstractmessage
    \@afterindentfalse
    \typeout{Abstract}%
    \@ifundefined{@outlinefile}{}{%
        \hypertarget{prelim.2}{}%
        \protected@write\@outlinefile{}{%
            \protect\BOOKMARK
            [0][]{prelim.2}{ABSTRACT}{}}}
    \null\nobreak\vskip 1in
    {\centering\normalfont
        {\bfseries ABSTRACT\\[.3\@singleline]
        \uppercase\expandafter{\@title}}\\[.3\@singleline]
        \@author, \@@@degree\\[.3\@singleline]
        University of Pittsburgh, \@year\par}
    \par\vspace{1\@singleline}\@afterheading}%
    {\if@keywords
        \medskip\begin{description}\item[\@tempcsa]\@keywords
        {\normalsfcodes\ifnum\spacefactor=\sfcode`.\else.\fi}
        \end{description}\fi
    \@disable{copyright}%
    \newpage\@enable{table}{\tableofcontents}}
%    \end{macrocode}
%
%\subsubsection{The table of contents}
%\begin{macro}{\tableofcontents}
%    \begin{macrocode}
\newcommand\tableofcontents{\clearpage\@tablemessage
    \typeout{Table of Contents}%
    \@ifundefined{@outlinefile}{}{%
        \hypertarget{prelim.4}{}%
        \protected@write\@outlinefile{}{%
            \protect\BOOKMARK
            [0][]{prelim.4}{TABLE OF CONTENTS}{}}
    }
    \null\vskip 1in
    {\normalfont\bfseries\centering
        TABLE OF CONTENTS\par}
    \par\vspace{54\p@}%
    {\@withperiod\@withgobble\@starttoc{toc}}%
    \if@tables
        \@enable{lot}{\listoftables}%
    \else
        \@@disable{lot}{tables}
        \if@figures
            \@enable{lof}{\listoffigures}%
        \else
            \@@disable{lof}{figures}%
            \@enable{preface}{the first chapter}%
            \@enable{conv}{the first chapter}%
        \fi
    \fi\@disable{preface}}
%    \end{macrocode}\end{macro}
%
%\subsubsection{Bookmarking tables and figures}
%
%So far things have been at most challenging. But when it came to bookmarking the tables and figures, research and hard thinking had to be done. The main problem is that the location (within the bookmarks panel) of the bookmarks for tables and figures does not reflect their location in the document.  So the immediate approach, modifying the |figure| and |table| environments to make them append a bookmark, does not work (the bookmarks would be appended in the current position of the panel). On the other hand, modifying those environments clearly invites incompatibilities, so it is only the last resource.
%
%\begin{macro}{\prepare@bookmarks}|hyperref| builds the bookmarks from information contained in the |.out| file. Each sectioning command, for example, appends a bookmark command to this file. So, the only way to get the bookmarks for floats in the right place is to make the |.out| file call another file where the table or figure bookmarks are compiled. At the beginning I thought that the figures and tables (actually, the |\caption| command) would append lines to these additional files. But that involved changing very basic \LaTeX\ commands, and also having to deal with different |hyperref| drivers. And, after all, the information would be basically the same as that already compiled in the |.lot| and |.lof| files. So, the point is to redefine the commands there included to interpret those files in terms of bookmarks. That is what |\prepare@bookmarks| does:
%    \begin{macrocode}
\def\prepare@bookmarks#1{%
    \def\@prelim{#1}%
    \def\numberline##1{##1. }
    \let\\\relax
    \def\contentsline##1##2##3##4{%
       \pdfstringdef\@tempcsa{##2}%
       \@expandedBOOKMARK{##4}{\@tempcsa}{prelim.\@prelim}}}
\def\@expandedBOOKMARK#1#2{\edef\reserved@a{%
    \noexpand\BOOKMARK[1][-]{#1}{#2}}\reserved@a}
%    \end{macrocode}\end{macro}
%
%The |\let|'ting of |\\| to |\relax| is a due to a subtlety with strong bug flavor. When |hyperref| is converting \TeX\ strings into \PDF ones, |\escapechar| is defined to be the |\| character, by means of |\escapechar`\\|. But then, just before reading the bookmarks, |\escapechar| is |\let| to |\@gobble|. So |\escapechar`\\| expands into |\@gobble`\\|, which ultimately renders |\\|. \LaTeX\ then complains that ``\texttt{there is no line here to end}.'' On the other hand, |\@expandedBOOKMARK| is needed because otherwise |#2| (|\@tempcsa|) is not expanded.
%
%But, after this tricky preparation (which of course has to take place within a group), the |.out| line can be instructed to read and interpret the |.lot| and |.lof| files.
%
%\subsubsection{The list of tables}
%
%\begin{macro}{\listoftables}
%   \begin{macrocode}
\newcommand\listoftables{\clearpage\@lotmessage
    \typeout{List of Tables}%
    \@ifundefined{@outlinefile}{}{%
        \hypertarget{prelim.5}{}%
        \protected@write\@outlinefile{}{%
            \protect\BOOKMARK
            [0][]{prelim.5}{LIST OF TABLES}{}%
%    \end{macrocode}
%Here:
%    \begin{macrocode}
            \protect\begingroup\protect\makeatletter
            \protect\prepare@bookmarks5
            \protect\@input{\jobname.lot}
            \protect\endgroup}}
    \null\vskip 1in
    {\normalfont\bfseries\centering
        LIST OF TABLES\par}
    \par\vspace{54\p@}%
    \@starttoc{lot}%
    \newpage
    \if@figures\@enable{lof}{\listoffigures}\else
        \@enable{preface}{the first chapter}%
        \@enable{conv}{the first chapter}%
    \fi}
%    \end{macrocode}\end{macro}
%
%The width for the table numbers in the list depends on the widest float number (|\@floatl|), which is calculated at the end of the job, and written in the |.etd| file. Here it is used:
%    \begin{macrocode}
\newcommand*\l@table{\@dottedtocline{1}{1.5em}{\@floatl}}
%    \end{macrocode}
%
%\subsubsection{The list of figures}
%
%\begin{macro}{\listoffigures}This is analogous.
%    \begin{macrocode}
\newcommand\listoffigures{\clearpage\@lofmessage
    \typeout{List of Figures}%
    \@ifundefined{@outlinefile}{}{%
        \hypertarget{prelim.6}{}%
        \protected@write\@outlinefile{}{%
            \protect\BOOKMARK
            [0][]{prelim.6}{LIST OF FIGURES}{}%
            \protect\begingroup\protect\makeatletter
            \protect\prepare@bookmarks6
            \protect\@input{\jobname.lof}
            \protect\endgroup}}
    \null\vskip 1in
    {\normalfont\bfseries\centering
        LIST OF FIGURES\par}
    \par\vspace{54\p@}%
    \@starttoc{lof}\newpage
    \@enable{preface}{the first chapter}%
    \@disable{lot}}
\let\l@figure\l@table
%    \end{macrocode}\end{macro}
%
%\subsubsection{The preface}
%
%\begin{macro}{\preface}The only difference with other preliminaries is that this makes it into the table of contents. |\addcontents| creates the bookmark automatically.
%    \begin{macrocode}
\newcommand\preface{%
    \clearpage\@prefacemessage
    \@afterindentfalse
    \typeout{Preface}%
    \addcontentsline{toc}{chapter}{\bfseries PREFACE}
     \null\vskip 1in
    {\normalfont\bfseries\centering
        PREFACE\par}
    \par\vspace{1.5\@singleline}
    \@enable{conv}{the first chapter}%
    \@afterheading}
%    \end{macrocode}\end{macro}
%
%\subsubsection{Additional preliminaries}
%\begin{macro}{\preliminarychapter}
%    \begin{macrocode}
\newcommand\preliminarychapter[1]{%
    \clearpage\@afterindentfalse
    \typeout{#1}
    \@ifundefined{@outlinefile}{}{%
        \hypertarget{prelim.\the\c@@addprel}{}%
        \protected@write\@outlinefile{}{%
            \protect\BOOKMARK
            [0][]{prelim.\the\c@@addprel}{#1}{}}
        }%
    \null\vskip 1in
    {\normalfont\bfseries\centering
        #1\par}
    \par\vspace{1.5\@singleline}
    \@afterheading}
%    \end{macrocode}\end{macro}
%
%\subsubsection{Support for other Pitt classes}\label{pitt}
%
%These two patches serve as an illustration of patches in general. The |\@ifundefined| line makes sure the patch is not loaded twice. Of course, the final |\let| is companion. |\makeatletter| and |\makeatother| are a needed security measure.
%
%For \textsf{pitthesis}:
%    \begin{macrocode}
%</class>
%<*pitthesis>
\makeatletter
\@ifundefined{pittthesis@patch}{\relax}{\endinput}
\let\degrees\degree
\def\degree#1{\renewcommand\degreesought{#1}}
\let\university\@gobble
\let\proposal\@gobble
\let\advisor\committeemember
\let\coadvisor\committeemember
\newenvironment{acknowledgements}{%
    \preliminarychapter{ACKNOWLEDGEMENTS}%
    \@linemessage{Acknowledgments should be included in the 
    preface}{I'm complaining because this comes from the 
    `pittthesis' class. You haven't been reading my 
    warnings.}}{\relax}
\newenvironment{committeesignature}[1][5]{\relax}{\makecommittee}
\let\advisorname\@gobble
\let\chairpersonname\@gobble
\let\authortitle\@gobble
\newenvironment{appendices}{\appendix}{\relax}
\newenvironment{singleappendix}{\appendix}{\relax}
\let\pittthesis@patch\@empty
\makeatother
%</pitthesis>
%    \end{macrocode}
%
%For \textsf{pittdiss}:
%    \begin{macrocode}
%<*pittdiss>
\makeatletter
\@ifundefined{pittdiss@patch}\relax\endinput
\let\disstitle\title
\let\dissauthor\author
\newcommand\diplomaone[1]{\gdef\@degree{#1}}
\newcommand\diplomatwo[1]{\xdef\@degree{%
    \@degree\noexpand\noexpand
    \noexpand\noexpand\noexpand\noexpand\noexpand\\#1}}
\newcommand\diplomathree[1]{\xdef\@degree{%
    \@degree\noexpand\noexpand\noexpand\\#1}}
\newcommand\diplomafour[1]{\xdef\@degree{\@degree\noexpand\\#1}}
\let\university\@gobble
\let\degree\degreesought
\let\degreeabr\@gobble
\let\dissyear\year
\newcommand\dissdate[1]{\date{#1, \@year}}
\let\doctype\@gobble
\newcommand\chair[1]{\@striptitle#1\relax}
\def\@striptitle#1:#2\relax{\committeemember{#2}}
\let\committeetwo\committeemember
\let\committeethree\committeemember
\let\committeefour\committeemember
\let\committeefive\committeemember
\let\committeesix\committeemember
\let\disstitlepage\maketitle
\let\committeepage\makecommittee
\newenvironment{nomenclature}{\preliminarychapter{NOMENCLATURE}
    \@linemessage{Nomenclature is not a recognized 
    preliminary.}{I'm complaining because this comes from the 
    `pittdiss' class. You haven't been reading my 
    warnings.}}{\relax}
\let\appendices\appendix
\let\pittdiss@patch\@empty
\makeatother
%</pittdiss>
%<*class>
%    \end{macrocode}
%
%\subsection{Sectioning}
%
%\begin{macro}{\@startsection}Section commands in the preliminaries create non-numbered divisions. This initial definition makes it happen:
%    \begin{macrocode}
\def\@startsection#1#2#3#4#5#6{%
    \if@noskipsec \leavevmode \fi
    \par
    \@afterindentfalse
    \@tempskipa #4\relax
    \@tempskipa -\@tempskipa
    \if@nobreak
        \everypar{}%
    \else
        \addpenalty\@secpenalty\addvspace\@tempskipa
    \fi
    \@ifstar
        {\ClassWarning{pittetd}{Starred 
            \expandafter\string\csname #1\endcsname*\space 
            has been treated as 
            \expandafter\string\csname #1\endcsname}%
        \@ssect{#3}{#4}{#5}{#6}}%
        {\@ssect{#3}{#4}{#5}{#6}}}
%    \end{macrocode}\end{macro}
%
%\begin{macro}{\@startbody}\begin{macro}{\chapter}When the first |\chapter| appears, it acts also as the starting point of the body of the document: the page numbering is set to arabic, and sectioning commands are redefined.
%    \begin{macrocode}
\def\@startbody{%
    \pagenumbering{arabic}%
    \global\def\@startsection##1##2##3##4##5##6{%
        \@getlength{##1}%
        \if@noskipsec \leavevmode \fi
        \par
        \@afterindentfalse
        \@tempskipa ##4\relax
        \@tempskipa -\@tempskipa
        \if@nobreak
            \everypar{}%
        \else
            \addpenalty\@secpenalty\addvspace\@tempskipa
        \fi
        \@ifstar
            {\ClassWarning{pittetd}{Starred 
                \expandafter\string\csname ##1\endcsname*\space 
                has been treated as 
                \expandafter\string\csname ##1\endcsname}%
            \@dblarg{\@sect{##1}{##2}{##3}{##4}{##5}{##6}}}%
            {\@dblarg{\@sect{##1}{##2}{##3}{##4}{##5}{##6}}}}%
    \renewcommand\chapter{\clearpage\global\@topnum\z@
        \@afterindentfalse
        \@ifstar{%
            \ClassWarning{pittetd}{Starred 
                \string\chapter*\space has been treated as 
                \string\chapter}%
            \@dblarg{\@chapter}}{\@dblarg\@chapter}}}
\newcommand\chapter{\clearpage\@startbody\chapter}
%    \end{macrocode}\end{macro}\end{macro}
%
%\subsubsection{Chapters and sections}
%
%\begin{macro}{\@chapter}\begin{macro}{\@@chapter}The actual chapters invoke |\@chapter|. The deferring construction with |\@@chapter| makes sure the chapter's title gets capitalized in the table of contents.
%    \begin{macrocode}
\def\@chapter[#1]#2{%
    \refstepcounter{chapter}%
    \@getlengthchapter
    {\@withperiod\typeout{Chapter\space\thechapter}}%
    \uppercase{\@@chapter{#1}}%
    \null\vskip 1in
    {\@withperiod\normalfont\bfseries\centering
        \if@mainmatter\thechapter\if@secletters\else.0\fi\quad\fi
        \uppercase\expandafter{#2}\par}
    \par\vspace{2\@singleline}\@afterheading}
\def\@@chapter#1{\addcontentsline{toc}{chapter}{{\bfseries
    \protect\numberline{\thechapter\if@secletters\else.0\fi}#1}}}
%    \end{macrocode}\end{macro}\end{macro}
%
%\begin{macro}{\section}\begin{macro}{\subsection}\begin{macro}{\subsubsection}The rest of sectioning commands invoke |\@startsection|. Note that all |\@withperiod|'s and |\@withgobble|'s will be expanded inside a group.
%    \begin{macrocode}
\newcommand\section{\@startsection{section}{1}%
    {\z@}{-2\@singleline \@plus -1ex \@minus -.2ex}%
    {1\@singleline \@plus .2ex}{\@withperiod\@withgobble%
    \centering\normalfont\bfseries\expandafter\MakeUppercase}}
\newcommand\subsection{\@startsection{subsection}%
    {2}{\z@}{-1\@singleline\@plus -1ex \@minus -.2ex}%
    {.5\@singleline \@plus .2ex}%
    {\@withperiod\@withgobble\normalfont\expandafter\bfseries}}
\newcommand\subsubsection{\@startsection{subsubsection}%
    {3}{\z@}{-1\@singleline \@plus -1ex \@minus -.2ex}%
    {-1em}{\@withperiod\@withgobble
        \normalfont\expandafter\bfseries}}
%    \end{macrocode}\end{macro}\end{macro}\end{macro}
%
%The following are disabled:
%    \begin{macrocode}
\let\part\@gobble
\let\paragraph\@gobble
\let\subparagraph\@gobble
%    \end{macrocode}
%
%\begin{macro}{\@getlengthchapter}\begin{macro}{\@getlength}Now, |\chapter|'s and |\...section|'s keep track of the widest numbers by means of the following commands:
%    \begin{macrocode}
\newcommand\@getlengthchapter{\begingroup\normalfont
    \@withgobble\@withperiod
    \settowidth\@tempskipa{%
        {\bfseries\thechapter\if@secletters\else0\fi}\quad
        \mbox{}}%
    \ifnum\@tempskipa > \@chapterl
        \global\@chapterl =\@tempskipa
    \fi
    \endgroup}
\newcommand\@getlength[1]{\begingroup\normalfont
    \@withgobble\@withperiod
    \stepcounter{#1}%
    \settowidth\@tempskipa{\csname the#1\endcsname.\ \mbox{}}%
    \ifnum\@tempskipa > \csname @#1l\endcsname
        \global\csname @#1l\endcsname = \@tempskipa
    \fi
    \addtocounter{#1}{-1}
    \endgroup}
%    \end{macrocode}\end{macro}\end{macro}
%
%\subsubsection{Appendices}
%
%\begin{macro}{\appendix}\begin{macro}{\@appendix}\begin{macro}{\@@appendix}Only important thing: keeping track of the number of appendices, done through |@appno|. Minor details: redefinition of |\@currentlabel| to make |\nameref| refer to `{\small APPENDIX}' instead of the title; and redefinition of |\thefigure| and |\thetable| to omit period after the chapter number, in case |\chapterfloats| has been issued.
%
%    \begin{macrocode}
\newcommand\appendix{%
    \@mainmatterfalse
    \setcounter{chapter}{0}%
    \setcounter{section}{0}%
    \ifnum 2>\value{@appno}
        \gdef\thechapter{}%
        \gdef\thesection{A.\@arabic\c@section}%
    \else
        \gdef\thechapter{ \@Alph{\c@chapter}}
    \fi
    \renewcommand\chapter{\clearpage\global\@topnum\z@
        \@afterindentfalse
        \protected@write\@auxout{}%
            {\string\stepcounter{\string @appno}}%
        \@ifstar{%
            \ClassWarning{pittetd}{Starred 
                \string\chapter*\space has been treated as 
                \string\chapter}%
            \@dblarg{\@appendix}}{\@dblarg\@appendix}}
    \let\appendix\relax}
\def\@appendix[#1]#2{\refstepcounter{chapter}%
    \xdef\@currentlabelname{\appendixname\thechapter}%
    \typeout{Appendix\thechapter}%
    \uppercase{\@@appendix{#1}}%
    \null\vskip 1in
    {\normalfont\bfseries\centering
        APPENDIX\thechapter\\[2\@singleline]
        \uppercase\expandafter{#2}\par}
    \par\vspace{2\@singleline}\@afterheading}
\def\@@appendix#1{\addcontentsline{toc}{chapter}{%
    {\bfseries APPENDIX\thechapter. #1}}}
%    \end{macrocode}\end{macro}\end{macro}\end{macro}
%
%There are no |\...matter| commands in \pittetd.
%    \begin{macrocode}
\let\frontmatter\relax
\let\backmatter\relax
\let\mainmatter\relax
%    \end{macrocode}
%
%
%\subsection{Floating objects}
%
%The two-column (starred) versions are implemented just for completeness. They might be used if the document is converted from other classes.
%    \begin{macrocode}
\def\fps@table{tbp}
\def\ftype@table{1}
\def\ext@table{lot}
\def\fnum@table{Table\nobreakspace\thetable}
\newenvironment{table}
    {\global\@tablestrue
        \singlespace\@float{table}}{%
%    \end{macrocode}
%The following is the main difference with standard classes: the widest label has to be tracked down. This could have been implemented as part of |\@makecaption|, instead of repeated four times here (in addition, there might be figures with no caption, and the test will still run). But I prefer to change here and not there, |\@makecaption| is probably redefined by many packages. |caption2| for one.
%    \begin{macrocode}
        \end@float
        \settowidth\@tempskipa{%
            \thetable\ \mbox{}}%
        \ifnum\@tempskipa > \@floatl
            \global\@floatl = \@tempskipa
        \fi}
\newenvironment{table*} 
    {\global\@tablestrue
        \singlespace\@dblfloat{table}}{%
        \end@dblfloat
        \settowidth\@tempskipa{%
            \thetable\ \mbox{}}%
        \ifnum\@tempskipa > \@floatl
            \global\@floatl = \@tempskipa
        \fi}
%    \end{macrocode}
%   \begin{macrocode}
\def\fps@figure{tbp}
\def\ftype@figure{1}
\def\ext@figure{lof}
\def\fnum@figure{Figure\nobreakspace\thefigure}
\newenvironment{figure}
    {\global\@figurestrue
        \singlespace\@float{figure}}{%
        \end@float
        \settowidth\@tempskipa{%
            \thefigure\ \mbox{}}%
        \ifnum\@tempskipa > \@floatl
            \global\@floatl = \@tempskipa
        \fi}
\newenvironment{figure*} 
    {\global\@figurestrue
        \singlespace\@dblfloat{figure}}{%
        \end@dblfloat
        \settowidth\@tempskipa{%
            \thefigure\ \mbox{}}%
        \ifnum\@tempskipa > \@floatl
            \global\@floatl = \@tempskipa
        \fi}
%    \end{macrocode}
%
%\begin{macro}{\@makecaption}This modified version of |\@makecaption| can be lost if some package redefines it, but it would not hurt much. Only the warning would be lost. 
%    \begin{macrocode}
\def\@makecaption#1#2{%   
    \vskip\abovecaptionskip
    \sbox\@tempboxa{#1: #2}%
    \ifdim \wd\@tempboxa >\hsize
        {\let\nobreakspace\space\ClassWarning{pittetd}{%
            The caption of #1 is longer than one line}}%
            #1: #2\par
    \else
        \global\@minipagefalse
        \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
    \fi
    \vskip\belowcaptionskip}
%    \end{macrocode}\end{macro}
%
%
%\subsection{Lists}
%
%    \begin{macrocode}
\setlength\leftmargini\parindent
\leftmargin\leftmargini
\setlength\leftmarginii{2.2em}
\setlength\leftmarginiii{1.87em}
\setlength\leftmarginiv{1.7em}
\setlength\leftmarginv{1em}
\setlength\leftmarginvi{1em}
\setlength\labelsep{.5em}
\setlength\labelwidth{\leftmargini}
\addtolength\labelwidth{-\labelsep}
\setlength\partopsep{\@ptsize\p@ \@plus 1\p@ \@minus 1\p@}
\addtolength\partopsep{1.5\p@}
\@beginparpenalty -\@lowpenalty
\@endparpenalty -\@lowpenalty
\@itempenalty -\@lowpenalty
%    \end{macrocode}
%    \begin{macrocode}
\def\@listi{\topsep\smallskipamount
    \leftmargin\leftmargini
    \parsep \z@ \@plus 2\p@ 
    \itemsep \z@ \@plus 2\p@}
\let\@listI\@listi\@listi
\def\@listii{\leftmargin\leftmarginii
    \labelwidth\leftmarginii
    \advance\labelwidth-\labelsep
    \topsep \z@ \@plus 2\p@
    \parsep \z@ \@plus\p@
    \itemsep \parsep}
\def\@listiii{\leftmargin\leftmarginiii
    \labelwidth\leftmariniii
    \advance\labelwidth-\labelsep
    \topsep \z@ \@plus\p@
    \parsep \z@ 
    \itemsep \topsep}
\def\@listiv{\leftmargin\leftmarginiv
    \labelwidth\leftmarginiv
    \advance\labelwidth-\labelsep}
\def\@listiv{\leftmargin\leftmarginv
    \labelwidth\leftmarginv
    \advance\labelwidth-\labelsep}
\def\@listiv{\leftmargin\leftmarginvi
    \labelwidth\leftmarginvi
    \advance\labelwidth-\labelsep}
%    \end{macrocode}
%    \begin{macrocode}
\newcommand\labelenumi{\theenumi.}
\newcommand\labelenumii{\theenumii.}
\newcommand\labelenumiii{\theenumiii.}
\newcommand\labelenumiv{\theenumiv.}
%    \end{macrocode}
%    \begin{macrocode}
\newcommand\labelitemi{\textbullet}
\newcommand\labelitemii{\normalfont\bfseries\textendash}
\newcommand\labelitemiii{\textasteriskcentered}
\newcommand\labelitemiv{\textperiodcentered}
%    \end{macrocode}
%    \begin{macrocode}
\newenvironment{description}
    {\list{}{\labelwidth\z@ \itemindent-\leftmargin
        \let\makelabel\descriptionlabel}}
    {\endlist}
\newcommand*\descriptionlabel[1]{%
    \hspace\labelsep\normalfont\bfseries #1}
%    \end{macrocode}
%
%\subsection{Miscellaneous environments}
%
%    \begin{macrocode}
\newenvironment{verse}
    {\let\\\@centercr
    \list{}{\itemsep \z@
        \itemindent -1.5em
        \listparindent\itemindent
        \rightmargin\leftmargin
        \advance\leftmargin 1.5em}
    \item\relax}
    {\endlist}
%    \end{macrocode}
%
%Since |quotation| and |quote| are redefined (against \FG) by the |achicago| package, we must include the following definitions in the patch. 
%    \begin{macrocode}
\newenvironment{quotation}\relax\relax
\newenvironment{quote}\relax\relax
%</class>
%<*class|achicago>
\renewenvironment{quotation}
    {\list{}{\topsep\medskipamount
        \listparindent 1.5em\relax
        \itemindent \listparindent
        \rightmargin \leftmargin
        \parsep \z@ \@plus\p@}
    \item\small\relax}
    {\endlist}
\renewenvironment{quote}
    {\list{}{\topsep\medskipamount
        \rightmargin\leftmargin}%
        \item\relax\small}
    {\endlist}
%</class|achicago>
%<*class>
%    \end{macrocode}
%
%\subsection{Footnotes}
%
%    \begin{macrocode}
\renewcommand\footnoterule{%
    \kern-3\p@
    \hrule\@width.3\columnwidth
    \kern2.6\p@}
\@addtoreset{footnote}{chapter}
\newcommand\@makefntext[1]{%
    \parindent 1em%
    \noindent
    \hb@xt@1.8em{\hss\@makefnmark}#1}
%    \end{macrocode}
%
%\subsection{Bibliography}
%
%The |thebibliography| environment calls for |\@safebibliography|, which takes care of the heading, bookmark, spacing, etc.
%    \begin{macrocode}
\newenvironment{thebibliography}[1]{%
    \@safebibliography
    \list{\@biblabel{\@arabic\c@enumiv}}%
    {\settowidth\labelwidth{\@biblabel{#1}}%
    \leftmargin\labelwidth
    \advance\leftmargin\labelsep
    \@openbib@code
    \usecounter{enumiv}%
    \let\p@enumiv\@empty
    \renewcommand\theenumiv{\@arabic\c@enumiv}}%
    \sloppy
    \clubpenalty4000
    \@clubpenalty \clubpenalty
    \widowpenalty4000%
    \sfcode`\.\@m}
    {\def\@noitemerr{\@latex@warning{Empty 
        `thebibliography' environment}}%
    \endlist}
%    \end{macrocode}
%
%\begin{macro}{\@safebibliography}The spacing within entries is |\singlespacing|. Between entries, |\itemsep| applies.
%    \begin{macrocode}
\newcommand\@safebibliography{%
    \renewcommand\chapter{\@ifstar{\@gobble}{\@gobble}}%
    \renewcommand\section{\@ifstar{\@gobble}{\@gobble}}%
    \renewcommand\@mkboth[2]{\relax}%
    \clearpage\null\vskip 1in
    \typeout{\bibname}%
    \@ifundefined{@outlinefile}{}{\phantomsection}%
    \addcontentsline{toc}{chapter}{{\bfseries\protect\bibname}}%
    {\normalfont\bfseries\centering\bibname\par}%
    \par\vspace{2\@singleline}%
    \singlespace
    \let\@listi\@listI
    \setlength{\itemsep}{.5\@singleline \@plus 4\p@}%
    \def\@listi{\topsep\z@
        \leftmargin\leftmargini
        \parsep \z@ \@plus 2\p@ 
        \itemsep .5\@singleline \@plus 2\p@}
    \@afterheading
    \let\@safebibliography\relax}
%    \end{macrocode}\end{macro}
%
%\begin{macro}{\safebibliography}|\@safebibliography| is also used by |\safebibliography|.
%    \begin{macrocode}
\newcommand\safebibliography{\@safebibliography\bibliography}
\newcommand\newblock{\hskip .11em\@plus.33em\@minus.07em}
%    \end{macrocode}\end{macro}
%
%The |natbib| package handles the spacing not with |\itemsep|, but with the new |\bibsep|. As far as I know, this is the only thing we need to make the package work, so it is done here rather than in a patch.
%    \begin{macrocode}
\AtBeginDocument{\@ifundefined{bibsep}{}{%
    \setlength{\bibsep}{.5\@singleline \@plus 4\p@}}}
%    \end{macrocode}
%
%Support for the |achicago| package, on the contrary, goes to a patch:
%    \begin{macrocode}
%</class>
%<*achicago>
\renewenvironment*{thebibliography}{%
    \@safebibliography
    \begin{list}{}{%
        \leftmargin\z@
        \advance\leftmargin\labelsep
        \advance\leftmargin\bibindent
        \itemindent -\bibindent
        \listparindent \itemindent
        \parsep \z@
        \itemsep .5\@singleline \@plus 4\p@}
    \sfcode`\.=\@m
    \let\@biblabel\Gobble
    \sloppy
    \clubpenalty4000 \widowpenalty4000
    }{%
    \def\@noitemerr{\@latex@warning{Empty 
        `thebibliography' environment}}%
    \relax\end{list}}
\let\achicago@patch\@empty
\makeatother
%</achicago>
%<*class>
%    \end{macrocode}
%
%\subsubsection{The index}
%
%    \begin{macrocode}
\newenvironment{theindex}{%
    \clearpage\typeout{\indexname}%
    \@ifundefined{@outlinefile}{}{\phantomsection}%
    \addcontentsline{toc}{chapter}{{\bfseries\protect\indexname}}%
    \twocolumn[\null\vskip 1in{\normalfont\bfseries\centering
        \indexname\par}\par\vspace{2\@singleline}]%
    \thispagestyle{plain}\parindent\z@
    \columnseprule \z@
    \columnsep 35\p@
    \parskip\z@ \@plus .3\p@\relax
    \small
    \let\item\@idxitem}
    {\clearpage}
\newcommand\@idxitem{\par\hangindent 40\p@}
\newcommand\subitem{\@idxitem \hspace*{20\p@}}
\newcommand\subsubitem{\@idxitem \hspace*{30\p@}}
\newcommand\indexspace{\par\vskip10\p@ \@plus5\p@ \@minus3\p@
    \relax}
%    \end{macrocode}
%
%\subsection{The \texttt{.etd} file}
%
%The \LaTeX\ run of the document has carefully taken note of certain values for the next run. It is now time to write them down in the |.etd| file.
%    \begin{macrocode}
\AtEndDocument{\immediate\openout\@etdaux=\jobname.etd
    \if@tables 
        \immediate\write\@etdaux{\string\@tablestrue}
    \fi
    \if@figures
        \immediate\write\@etdaux{\string\@figurestrue}
    \fi
    \immediate\write\@etdaux{%
      \string\setlength{\string\@chapterl}{\the\@chapterl}}
    \immediate\write\@etdaux{%
      \string\setlength{\string\@sectionl}{\the\@sectionl}}
    \immediate\write\@etdaux{%
      \string\setlength{\string\@subsectionl}{\the\@subsectionl}}
    \immediate\write\@etdaux{%
      \string\setlength{\string\@subsubsectionl}{\the\@subsubsectionl}}
    \immediate\write\@etdaux{%
      \string\setlength{\string\@floatl}{\the\@floatl}}
    \immediate\closeout\@etdaux} 
%    \end{macrocode}
%
%And that is it.
%\IndexPrologue{\section*{Index}\addcontentsline{toc}{section}{Index} Numbers written in italics refer to the page where the corresponding entry is described. A list of mentioned packages is found under `packages mentioned;' of environments under `environments;' of \pittetd options under `\pittetd.' For commands, numbers in regular font refer to code lines, and to the line of the definition if underlined.} 
%\PrintIndex