diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/adfathesis |
Initial commit
Diffstat (limited to 'macros/latex/contrib/adfathesis')
-rw-r--r-- | macros/latex/contrib/adfathesis/README | 58 | ||||
-rw-r--r-- | macros/latex/contrib/adfathesis/adfathesis.bst | 1327 | ||||
-rw-r--r-- | macros/latex/contrib/adfathesis/adfathesis.dtx | 861 | ||||
-rw-r--r-- | macros/latex/contrib/adfathesis/adfathesis.ins | 31 | ||||
-rw-r--r-- | macros/latex/contrib/adfathesis/adfathesis.pdf | bin | 0 -> 191570 bytes | |||
-rw-r--r-- | macros/latex/contrib/adfathesis/template.tex | 78 |
6 files changed, 2355 insertions, 0 deletions
diff --git a/macros/latex/contrib/adfathesis/README b/macros/latex/contrib/adfathesis/README new file mode 100644 index 0000000000..6f454d59fc --- /dev/null +++ b/macros/latex/contrib/adfathesis/README @@ -0,0 +1,58 @@ +Adfathesis + +This class modifies the standard report class to meet the requirements +of the Australian Defence Force Academy (a college of the University +of New South Wales) as given in the `University College Handbook'. +This class is ultimately derived from the old suthesis style. + +The main changes in this class are firstly to use space and a half +interline spacing, except in footnote, figure and table environments +where normal spacing is used. Secondly the chapter and section +headings are changed to be less `shouting' than the standard LaTeX +designs. Thirdly less profligate use was made of vertical spacing. +There is more information in a short document appended to the end of +adfathesis.cls (I have not progressed to using a .dtx). + +Since two sided theses are now accepted for theses, I used the +adfathesis class with the following options: + +\documentclass[a4paper,12pt,openright,twoside]{adfathesis} + +As supplied adfathesis automatically uses the Harvard package and the +supplied `adfathesis.bst' is designed to work with the Harvard +package. If you wish to use a different bst, such as `plain.bst', +this will not be appropriate. There is a class option `normalbib' +which stops the automatic use of the Harvard package, and hence allows +use of either the standard LaTeX bibliography style or an alternative +package. + +Version 2.3 + +Changes: \cleardoublepage modified to ensure that blank pages use the +empty pagestyle (from the fancyhdr documentation). Changes to default +penalty values affecting widows/orphans, following suggestions in a +post by Michael Downs on comp.text.tex. The table and table* +environments are defined to automatically swap the settings for +abovecaptionskip and belowcaptionskip, so table captions have the +correct spacing when above the table. + +Version 2.4 + +Changes: added an option `honours' that changes the titlepage to one +more appropriate to a Honours report. For this option you should set +\degreetype in the preamble to the appropriate faculty, it defaults to +`Science'. Improved vertical spacing around chapter headings. + +The files supplied are as follows: + + adfathesis.bst + adfathesis.cls + adfathesis.sty + 00readme.txt + template.tex + +Version 2.5 + +Changes: modified to use docstrip. No other changes were made. + +Stephen Harker sjh@ph.adfa.edu.au diff --git a/macros/latex/contrib/adfathesis/adfathesis.bst b/macros/latex/contrib/adfathesis/adfathesis.bst new file mode 100644 index 0000000000..502615fda1 --- /dev/null +++ b/macros/latex/contrib/adfathesis/adfathesis.bst @@ -0,0 +1,1327 @@ +% BibTeX standard bibliography style `adfathesis' (one of the harvard family) + % version 0.99a for BibTeX versions 0.99a or later, LaTeX version 2.09. + +% ACKNOWLEDGEMENT: +% This document is a modified version of jphysicsB.bst which in turn is a +% modified version of alpha.bst to which it owes much of its functionality. + +% Modified by Stephen Harker (sjh@phadfa.ph.adfa.edu.au) to include +% article and incollection titles, parenthesis for the year in the label, +% et al. in italic. Designed for thesis style at ADFA. + +ENTRY + { address + author + booktitle + chapter + edition + editor + howpublished + institution + journal + key + month + note + number + organization + pages + publisher + school + series + title + type + URL + volume + year + } + { field.used etal.allowed etal.required} %%%XXX change + { extra.label sort.label list.year } + +INTEGERS { output.state before.all mid.sentence after.sentence after.block } + +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := +} + +STRINGS { s t f } + +FUNCTION {output.nonnull} +{ 's := + output.state mid.sentence = + { ", " * write$ } + { output.state after.block = + { add.period$ write$ + newline$ + "\newblock " write$ + } + { output.state before.all = + 'write$ + { add.period$ " " * write$ } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} + +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} + +FUNCTION {output.check} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} + +FUNCTION {item.check} +{ 't := + empty$ + { "empty " t * " in " * cite$ * warning$ } + { skip$ } + if$ +} + +FUNCTION {fin.entry} +{ add.period$ + write$ + newline$ +} + +FUNCTION {new.block} +{ output.state before.all = + 'skip$ + { after.block 'output.state := } + if$ +} + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} + +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} + +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "{\em " swap$ * "}" * } + if$ +} + +FUNCTION {embolden} +{ duplicate$ empty$ + { pop$ "" } + { "{\bf " swap$ * "}" * } + if$ +} + +FUNCTION {quote} +{ duplicate$ empty$ + { pop$ "" } + { "`" swap$ * "'" * } + if$ +} + +FUNCTION {write.url} +{ URL empty$ + { skip$ } + { "\newline\harvardurl{" URL * "}" * write$ newline$ } + if$ +} + +INTEGERS { nameptr namesleft numnames } + +FUNCTION {format.names} +{ 's := + 'f := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr f format.name$ 't := + nameptr #1 > + { namesleft #1 > + { ", " * t * } + { t "others" = + { " {\em et~al.}" * } + { " \harvardand\ " * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.authors} +{ author empty$ + { "" } + { "{vv~}{ll}{, jj}{ f{~}}" author format.names } + if$ +} + +FUNCTION {format.editors} +{ editor empty$ + { "" } + { "{vv~}{ll}{, jj}{ f{~}}" editor format.names + editor num.names$ #1 > + { ", eds" * } + { ", ed." * } + if$ + } + if$ +} + +FUNCTION {format.editors.reverse} +{ editor empty$ + { "" } + { "{f{~}}{ vv~}{ ll}{, jj}" editor format.names + editor num.names$ #1 > + { ", eds" * } + { ", ed." * } + if$ + } + if$ +} + +FUNCTION {format.title} +{ title empty$ + { "" } + 'title + if$ +} + +FUNCTION {n.dashify} +{ 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +FUNCTION {format.btitle} +{ title emphasize +} + +FUNCTION {tie.or.space.connect} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ * * +} + +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} + +FUNCTION {format.bvolume} +{ volume empty$ + { "" } + { "Vol." volume tie.or.space.connect + series empty$ + 'skip$ + { " of " * series emphasize * } + if$ + "volume and number" number either.or.check + } + if$ +} + +FUNCTION {format.number.series} +{ volume empty$ + { number empty$ + { series field.or.null } + { output.state mid.sentence = + { "number" } + { "Number" } + if$ + number tie.or.space.connect + series empty$ + { "there's a number but no series in " cite$ * warning$ } + { " {\em in} " * series quote * } + if$ + } + if$ + } + { "" } + if$ +} + +FUNCTION {format.edition} +{ edition empty$ + { "" } + { output.state mid.sentence = + { edition "l" change.case$ " edn" * } + { edition "t" change.case$ " edn" * } + if$ + } + if$ +} + +INTEGERS { multiresult } + +FUNCTION {multi.page.check} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} + +FUNCTION {format.pages} +{ pages empty$ + { "" } + { pages multi.page.check + { "pp.~" pages n.dashify * } + { "p.~" pages * } + if$ + } + if$ +} + +FUNCTION {format.vol.num.pages} +{ volume embolden field.or.null + number empty$ + 'skip$ + { "(" number * ")" * * + volume empty$ + { "there's a number but no volume in " cite$ * warning$ } + 'skip$ + if$ + } + if$ + pages empty$ + 'skip$ + { duplicate$ empty$ + { pop$ format.pages } + { ",~" * pages n.dashify * } + if$ + } + if$ +} + +FUNCTION {format.chapter.pages} +{ chapter empty$ + 'format.pages + { type empty$ + { "chapter" } + { type "l" change.case$ } + if$ + chapter tie.or.space.connect + pages empty$ + 'skip$ + { ", " * format.pages * } + if$ + } + if$ +} + +FUNCTION {format.in.ed.booktitle} +{ booktitle empty$ + { "" } + { editor empty$ + { "{\em in} " booktitle emphasize * } + { "{\em in} " format.editors.reverse * ", " * booktitle emphasize * } + if$ + } + if$ +} + +FUNCTION {empty.misc.check} +{ author empty$ title empty$ howpublished empty$ + month empty$ year empty$ note empty$ + and and and and and + key empty$ not and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} + +FUNCTION {format.thesis.type} +{ type empty$ + 'skip$ + { pop$ + type "t" change.case$ + } + if$ +} + +FUNCTION {format.tr.number} +{ type empty$ + { "Technical Report" } + 'type + if$ + number empty$ + { "t" change.case$ } + { number tie.or.space.connect } + if$ +} + +FUNCTION {format.article.crossref} +{ key empty$ + { journal empty$ + { "need key or journal for " cite$ * " to crossref " * crossref * + warning$ + "" + } + { "in {\em " journal * "\/} \cite{" * crossref * "}" *} + if$ + } + { "{\em in} \citeasnoun{" crossref * "}" * } + if$ + +} + +FUNCTION {format.book.crossref} +{ volume empty$ + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ + "in " + } + { "Vol." volume tie.or.space.connect + " of " * + } + if$ + editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { series empty$ + { "need editor, key, or series for " cite$ * " to crossref " * + crossref * warning$ + "" * + } + { "{\em " * series * "\/} \cite{" * crossref * "}" *} + if$ + } + { " \citeasnoun{" * crossref * "}" * } + if$ + } + { " \citeasnoun{" * crossref * "}" * } + if$ +} + +FUNCTION {format.incoll.inproc.crossref} +{ editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { booktitle empty$ + { "need editor, key, or booktitle for " cite$ * " to crossref " * + crossref * warning$ + "" + } + { "in {\em " booktitle * "\/}" * " \cite{" * crossref * "}" *} + if$ + } + { "{\em in} \citeasnoun{" crossref * "}" * } + if$ + } + { "{\em in} \citeasnoun{" crossref * "}" * } + if$ + +} + +INTEGERS { len } + +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} + +INTEGERS { ind tsslen } + +STRINGS { tss ret rss istr } + +FUNCTION {replace.substring}{ + 'rss := + 'tss := + 'istr := + "" 'ret := + tss text.length$ 'tsslen := + #1 'ind := + { istr ind tsslen substring$ "" = not } + { istr ind tsslen substring$ tss = + { ret rss * 'ret := + ind tsslen + 'ind := + } + { ret istr ind #1 substring$ * 'ret := + ind #1 + 'ind := + } + if$ + } + while$ + ret +} + +FUNCTION {format.lab.names.abbr} +{ 's := + s num.names$ 'numnames := + numnames #1 > + { numnames #2 > + { s #1 "{vv~}{ll}" format.name$ " {\em et~al.}" * } + { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { s #1 "{vv~}{ll}" format.name$ " {\em et~al.}" * } + { s #1 "{vv~}{ll}" format.name$ " \harvardand\ " * + s #2 "{vv~}{ll}" format.name$ * + } + if$ + } + if$ + } + { s #1 "{vv~}{ll}" format.name$ } + if$ +} + +FUNCTION {format.lab.names.full} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{vv~}{ll}" format.name$ 't := + nameptr #1 > + { namesleft #1 > + { ", " * t * } + { t "others" = + { " {\em et~al.}" * } + { " \harvardand\ " * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +INTEGERS { author.field editor.field organization.field title.field key.field } + +FUNCTION {init.field.constants} +{ #0 'author.field := + #1 'editor.field := + #2 'organization.field := + #3 'title.field := + #4 'key.field := +} + +FUNCTION {make.list.label} +{ author.field field.used = + { format.authors } + { editor.field field.used = + { format.editors } + { organization.field field.used = + { "The " #4 organization chop.word #3 text.prefix$ } + { title.field field.used = + { format.btitle } + { key.field field.used = + { key #3 text.prefix$ } + { "Internal error :001 on " cite$ * " label" * warning$ } + if$ + } + if$ + } + if$ + } + if$ + } + if$ +} + +FUNCTION {make.full.label} +{ author.field field.used = + { author format.lab.names.full } + { editor.field field.used = + { editor format.lab.names.full } + { organization.field field.used = + { "The " #4 organization chop.word #3 text.prefix$ } + { title.field field.used = + { format.btitle } + { key.field field.used = + { key #3 text.prefix$ } + { "Internal error :001 on " cite$ * " label" * warning$ } + if$ + } + if$ + } + if$ + } + if$ + } + if$ +} + +FUNCTION {make.abbr.label} %%%XXX change +{ + etal.allowed + { author.field field.used = + { author format.lab.names.abbr } + { editor.field field.used = + { editor format.lab.names.abbr } + { organization.field field.used = + { "The " #4 organization chop.word #3 text.prefix$ } + { title.field field.used = + { format.btitle } + { key.field field.used = + { key #3 text.prefix$ } + {"Internal error :001 on " cite$ * " label" * warning$ } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + { make.full.label } + if$ +} + +FUNCTION {output.bibitem} +{ newline$ + "\harvarditem{" write$ + make.abbr.label write$ + "}{" write$ + list.year write$ + "}{" write$ + cite$ write$ + "}" write$ + newline$ + "" + before.all 'output.state := +} + +FUNCTION {list.label.output} +{ make.list.label " " * write$ +} + +FUNCTION {article} +{ output.bibitem + list.label.output + " \harvardyearleft " list.year * "\harvardyearright " * output.nonnull + author "author" item.check + new.block + format.title "title" output.check + crossref missing$ + { journal emphasize "journal" duplicate$ item.check + " " * format.vol.num.pages * output + } + { format.article.crossref output.nonnull + format.pages output + } + if$ + new.block + note output + fin.entry + write.url +} + +FUNCTION {book} +{ output.bibitem + list.label.output + " \harvardyearleft " list.year * "\harvardyearright " * output.nonnull + new.block + author empty$ + { editor "author and editor" item.check } + { crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + title.field field.used = + { skip$ } + { format.btitle "title" output.check } + if$ + crossref missing$ + { format.bvolume output + format.number.series output + format.edition output + publisher "publisher" output.check + address output + } + { format.book.crossref output.nonnull + format.edition output + } + if$ + new.block + note output + fin.entry + write.url +} + +FUNCTION {booklet} +{ output.bibitem + list.label.output + " \harvardyearleft " list.year * "\harvardyearright " * output.nonnull + new.block + title.field field.used = + { skip$ } + { format.title quote "title" output.check } + if$ + howpublished output + address output + new.block + note output + fin.entry + write.url +} + +FUNCTION {inbook} +{ output.bibitem + list.label.output + " \harvardyearleft " list.year * "\harvardyearright " * output.nonnull + new.block + author empty$ + { editor "author and editor" item.check } + { crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + crossref missing$ + { format.bvolume output + format.number.series output + format.edition output + publisher "publisher" output.check + address output + } + { format.book.crossref output.nonnull + format.edition output + } + if$ + format.chapter.pages "chapter and pages" output.check + new.block + note output + fin.entry + write.url +} + +FUNCTION {incollection} +{ output.bibitem + list.label.output + " \harvardyearleft " list.year * "\harvardyearright " * output.nonnull + new.block + author "author" item.check + new.block + format.title "title" output.check + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.edition output + format.bvolume output + format.number.series output + publisher "publisher" output.check + address output + } + { format.incoll.inproc.crossref output.nonnull + } + if$ + format.chapter.pages output + new.block + note output + fin.entry + write.url +} + +FUNCTION {inproceedings} +{ output.bibitem + list.label.output + " \harvardyearleft " list.year * "\harvardyearright " * output.nonnull + new.block + author "author" item.check + new.block + format.title "title" output.check + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.bvolume output + format.number.series output + address empty$ + { organization output + publisher output + } + { organization output + publisher output + address output.nonnull + } + if$ + } + { format.incoll.inproc.crossref output.nonnull + } + if$ + format.pages output + new.block + note output + fin.entry + write.url +} + +FUNCTION {conference} { inproceedings } + +FUNCTION {manual} +{ output.bibitem + list.label.output + " \harvardyearleft " list.year * "\harvardyearright " * output.nonnull + new.block + title.field field.used = + { skip$ } + { format.btitle "title" output.check } + if$ + format.edition output + author empty$ + { organization empty$ + { address output } + 'skip$ + if$ + } + { organization output + address output + } + if$ + new.block + note output + fin.entry + write.url +} + +FUNCTION {mastersthesis} +{ output.bibitem + list.label.output + " \harvardyearleft " list.year * "\harvardyearright " * output.nonnull + author "author" item.check + title.field field.used = + { skip$ } + { format.title "title" output.check } + if$ + "Master's thesis" format.thesis.type output.nonnull + school "school" output.check + address output + new.block + note output + fin.entry + write.url +} + +FUNCTION {misc} +{ output.bibitem + list.label.output + " \harvardyearleft " list.year * "\harvardyearright " * output.nonnull + title.field field.used = + { skip$ } + { format.title quote output } + if$ + howpublished output + new.block + note output + fin.entry + write.url + empty.misc.check +} + +FUNCTION {phdthesis} +{ output.bibitem + list.label.output + " \harvardyearleft " list.year * "\harvardyearright " * output.nonnull + author "author" item.check + title.field field.used = + { skip$ } + { title "title" output.check } + if$ + "PhD thesis" format.thesis.type output.nonnull + school "school" output.check + address output + new.block + note output + fin.entry + write.url +} + +FUNCTION {proceedings} +{ output.bibitem + list.label.output + " \harvardyearleft " list.year * "\harvardyearright " * output.nonnull + format.bvolume output + format.number.series output + address empty$ + { editor empty$ + { skip$ } + { organization output + } + if$ + publisher output + } + { editor empty$ + 'skip$ + { organization output } + if$ + publisher output + address output.nonnull + } + if$ + new.block + note output + fin.entry + write.url +} + +FUNCTION {techreport} +{ output.bibitem + list.label.output + " \harvardyearleft " list.year * "\harvardyearright " * output.nonnull + new.block + author "author" item.check + title.field field.used = + { skip$ } + { format.title "title" output.check } + if$ + format.tr.number output.nonnull + institution "institution" output.check + address output + new.block + note output + fin.entry + write.url +} + +FUNCTION {unpublished} +{ output.bibitem + list.label.output + " \harvardyearleft " list.year * "\harvardyearright " * output.nonnull + author "author" item.check + title.field field.used = + { skip$ } + { format.title "title" output.check } + if$ + new.block + note "note" output.check + fin.entry + write.url +} + +FUNCTION {default.type} { misc } + +MACRO {jan} {"January"} + +MACRO {feb} {"February"} + +MACRO {mar} {"March"} + +MACRO {apr} {"April"} + +MACRO {may} {"May"} + +MACRO {jun} {"June"} + +MACRO {jul} {"July"} + +MACRO {aug} {"August"} + +MACRO {sep} {"September"} + +MACRO {oct} {"October"} + +MACRO {nov} {"November"} + +MACRO {dec} {"December"} + +MACRO {acmcs} {"ACM Computing Surveys"} + +MACRO {acta} {"Acta Informatica"} + +MACRO {cacm} {"Communications of the ACM"} + +MACRO {ibmjrd} {"IBM Journal of Research and Development"} + +MACRO {ibmsj} {"IBM Systems Journal"} + +MACRO {ieeese} {"IEEE Transactions on Software Engineering"} + +MACRO {ieeetc} {"IEEE Transactions on Computers"} + +MACRO {ieeetcad} + {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} + +MACRO {ipl} {"Information Processing Letters"} + +MACRO {jacm} {"Journal of the ACM"} + +MACRO {jcss} {"Journal of Computer and System Sciences"} + +MACRO {scp} {"Science of Computer Programming"} + +MACRO {sicomp} {"SIAM Journal on Computing"} + +MACRO {tocs} {"ACM Transactions on Computer Systems"} + +MACRO {tods} {"ACM Transactions on Database Systems"} + +MACRO {tog} {"ACM Transactions on Graphics"} + +MACRO {toms} {"ACM Transactions on Mathematical Software"} + +MACRO {toois} {"ACM Transactions on Office Information Systems"} + +MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} + +MACRO {tcs} {"Theoretical Computer Science"} + +READ + +EXECUTE {init.field.constants} + +FUNCTION {sortify} +{ purify$ + "l" change.case$ +} + +FUNCTION {sortify.names} +{ " \harvardand\ " " " replace.substring + " et~al." " zzz" replace.substring + sortify +} + +FUNCTION {author.key.label} +{ author empty$ + { key empty$ + { title.field 'field.used := } + { key.field 'field.used := } + if$ + } + { author.field 'field.used := } + if$ +} + +FUNCTION {author.editor.key.label} +{ author empty$ + { editor empty$ + { key empty$ + { title.field 'field.used := } + { key.field 'field.used := } + if$ + } + { editor.field 'field.used := } + if$ + } + { author.field 'field.used := } + if$ +} + +FUNCTION {author.key.organization.label} +{ author empty$ + { key empty$ + { organization empty$ + { title.field 'field.used := } + { organization.field 'field.used := } + if$ + } + { key.field 'field.used := } + if$ + } + { author.field 'field.used := } + if$ +} + +FUNCTION {editor.key.organization.label} +{ editor empty$ + { key empty$ + { organization empty$ + { title.field 'field.used := } + { organization.field 'field.used := } + if$ + } + { key.field 'field.used := } + if$ + } + { editor.field 'field.used := } + if$ +} + +FUNCTION {sort.format.title} +{ 't := + "A " #2 + "An " #3 + "The " #4 t chop.word + chop.word + chop.word + sortify + #1 global.max$ substring$ +} + +FUNCTION {calc.label} %%%XXX change +{ make.abbr.label + title.field field.used = + { sort.format.title } + { sortify.names } + if$ + year field.or.null purify$ #-1 #4 substring$ sortify + * + 'sort.label := +} + +FUNCTION {preliminaries} %%%XXX change +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.key.label + { type$ "proceedings" = + 'editor.key.organization.label + { type$ "manual" = + 'author.key.organization.label + 'author.key.label + if$ + } + if$ + } + if$ + author.field field.used = %%%XXX change + { + author num.names$ #2 > + { #1 } + { #0 } + if$ + 'etal.required := + } + { + editor.field field.used = + { + editor num.names$ #2 > + { #1 } + { #0 } + if$ + } + { #0 } + if$ + 'etal.required := + } + if$ + #1 'etal.allowed := +} + +FUNCTION {first.presort} +{ calc.label + sort.label + title.field field.used = + { skip$ } + { " " + * + make.list.label sortify.names + * + " " + * + title field.or.null + sort.format.title + * + } + if$ + #1 entry.max$ substring$ + 'sort.key$ := +} + +ITERATE {preliminaries} + +ITERATE {first.presort} + +SORT + +STRINGS { last.sort.label next.extra last.full.label} + +INTEGERS { last.extra.num last.etal.allowed} + +FUNCTION {initialize.confusion} +{ #0 int.to.chr$ 'last.sort.label := + #0 int.to.chr$ 'last.full.label := + #1 'last.etal.allowed := +} + +FUNCTION {confusion.pass} +{ last.sort.label sort.label = + { last.etal.allowed + { last.full.label make.full.label sortify.names = + { skip$ } + { #0 'etal.allowed := + #0 'last.etal.allowed := + } + if$ + } + { #0 'etal.allowed := } + if$ + } + { sort.label 'last.sort.label := + make.full.label sortify.names 'last.full.label := + #1 'last.etal.allowed := + } + if$ +} + +EXECUTE {initialize.confusion} + +ITERATE {confusion.pass} + +EXECUTE {initialize.confusion} + +REVERSE {confusion.pass} + +FUNCTION {initialize.last.extra.num} +{ #0 int.to.chr$ 'last.sort.label := + "" 'next.extra := + #0 'last.extra.num := +} + +FUNCTION {forward.pass} +{ last.sort.label sort.label = + { last.extra.num #1 + 'last.extra.num := + last.extra.num int.to.chr$ 'extra.label := + } + { "a" chr.to.int$ 'last.extra.num := + "" 'extra.label := + sort.label 'last.sort.label := + } + if$ +} + +FUNCTION {reverse.pass} +{ next.extra "b" = + { "a" 'extra.label := } + 'skip$ + if$ + year empty$ + { "n.d." extra.label emphasize * 'list.year := } + { year extra.label emphasize * 'list.year := } + if$ + extra.label 'next.extra := +} + +ITERATE {first.presort} + +SORT + +EXECUTE {initialize.last.extra.num} + +ITERATE {forward.pass} + +REVERSE {reverse.pass} + +FUNCTION {second.presort} +{ make.list.label + title.field field.used = + { sort.format.title } + { sortify.names } + if$ + " " + * + list.year field.or.null sortify + * + " " + * + title.field field.used = + { skip$ } + { title field.or.null + sort.format.title + * + } + if$ + #1 entry.max$ substring$ + 'sort.key$ := +} + +ITERATE {second.presort} + +SORT + +FUNCTION {begin.bib} +{ preamble$ empty$ + 'skip$ + { "\harvardpreambledefs{%" write$ newline$ + preamble$ write$ "}" write$ newline$ + "\harvardpreambletext{%" write$ newline$ + preamble$ write$ "}" write$ newline$ } + if$ + "\begin{thebibliography}{xx}" write$ newline$ +} + +EXECUTE {begin.bib} + +EXECUTE {init.state.consts} + +ITERATE {call.type$} + +FUNCTION {end.bib} +{ newline$ + "\end{thebibliography}" write$ newline$ +} + +EXECUTE {end.bib} diff --git a/macros/latex/contrib/adfathesis/adfathesis.dtx b/macros/latex/contrib/adfathesis/adfathesis.dtx new file mode 100644 index 0000000000..31e1c20839 --- /dev/null +++ b/macros/latex/contrib/adfathesis/adfathesis.dtx @@ -0,0 +1,861 @@ +% \iffalse meta comment +% File: adfathesis.dtx +% +% ADFATHESIS.CLS by Stephen Harker, Dept. of Physics, ADFA: 12-JUN-94 +% These macros are placed in the public domain. They may be freely +% transmitted, reproduced, or modified. No rights are reserved. +% +% This is based on the Monash University version of SUTHESIS.STY called +% MONTHESIS.STY by Tony McGrath, Dept. of Physics, Monash Uni: 5-NOV-87 +% and the ADFATHESIS.STY that is/was on ccadfa.cc.adfa.oz.au +% +% PhD thesis style --- modifications to the REPORT class: +% Style information from the `1993 Handbook' for the University College +% known as the `Blue Book', see pages 168 to 170. Updated for 1997. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +% +% \fi +% \CheckSum{1075} +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +% +% \iffalse +%<package>\NeedsTeXFormat{LaTeX2e} +%<package>\ProvidesClass{adfathesis} +%<package> [2004/04/16 \space v2.50 \space ADFA thesis class] +% +%<*driver> +\documentclass{ltxdoc} + \title{The \texttt{adfathesis} class} + \author{Stephen Harker} + \date{Printed \today} + \MakeShortVerb{\=} + \MakeShortVerb{\"} + \newcommand{\bs}{\char '134 } % A backslash character for \tt font +\begin{document} + \maketitle + \DeleteShortVerb{\|} + \DocInput{adfathesis.dtx} +\end{document} +%</driver> +% \fi +% +% \begin{abstract} +% This article describes the \textsf{adfathesis} class, which is designed as +% the ADFA +% PhD thesis style --- a modification to the \textsf{report} class: +% Style information from the `1993 Handbook' for the University College +% known as the `Blue Book', see pages 168 to 170. Updated for 1997. +% This version is modified only to use the \textsf{docstrip} mechanism. +% \end{abstract} +% +% \section{Introduction} +% +% The adfathesis class is based on the Monash University version of +% \textsf{suthesis.sty} called +% \textsf{monthesis.sty} by Tony McGrath, Dept. of Physics, Monash Uni: 5-NOV-87 +% and the \textsf{adfathesis.sty} that is/was on ccadfa.cc.adfa.oz.au. +% +% Some basic information on +% the use of \textsf{adfathesis} follows. This class file can only be used +% under \LaTeXe. Firstly an example of use: + +% \begin{quote} +% \small +% \begin{verbatim} +% \documentclass[a4paper,12pt,openright,twoside]{adfathesis} + +% % Control which chapters are LaTeX'd in this run with + +% \includeonly{chapter1,chapter2,chapter3} + +% \title{How to Write Theses\\ +% With Two Line Titles} +% \authornameonly{John Henry Candidate} +% \author{\Authornameonly \\ B.Sc.(Hons)} +% \copyrightfalse % No copyright page +% \figurespagefalse % No List of Figures +% \tablespagefalse % No List of Tables + +% \begin{document} +% \beforepreface +% \prefacesection{Abstract} +% This thesis tells you all you need to know about... +% \declaration % Declaration page +% \prefacesection{Acknowledgements} +% I would like to thank... +% \afterpreface + +% \include{chapter1} % Introduction +% ... +% \include{chapter6} % Conclusions +% ... +% \appendix +% \include{appendix1} % A Long Proof +% ... +% \clearpage % Needed to get page +% \addcontentsline{toc}{chapter}{References} % in TOC correct. +% \bibliographystyle{adfathesis} +% \bibliography{mybib} +% \end{document} +% \end{verbatim} +% \end{quote} + +% \section{Documentation:} +% This class modifies the standard report class +% to meet the \textsc{adfa} requirements given in the `\emph{University +% College Handbook}'. It sets the margins, interline spacing, the +% figure and table numbering style, and disallows page breaks at +% hyphens. + +% The `\texttt{\bs{}beforepreface}' command creates the title page, a +% copyright page (optionally), and the table of contents. Then the user +% should put preface section(s), using the command +% `\texttt{\bs{}prefacesection\{}\emph{Section Title}\texttt{\}}', this +% should include the declaration page. The tables of tables and figures +% are then produced by the `\texttt{\bs{}afterpreface}' command, which +% also sets things up to start the main body (on arabic page~1). + +% The following commands can control what goes in the front matter +% material: +% \begin{description} +% \small +% \item{\ttfamily\bs{}title\{\emph{thesis title}\}} Title of the thesis. +% \item{\ttfamily\bs{}authornameonly\{\emph{name}\}} The author's name +% without degrees earned, needed for the declaration. +% \item{\ttfamily\bs{}author\{\emph{name}\}} The author's name with +% degrees earned, for the titlepage. +% \item{\ttfamily\bs{}dept\{\emph{department}\}} The default value is +% School of `\emph{Physics}'. +% \item{\ttfamily\bs{}thesistype\{\emph{Type of thesis}\}} The default +% value is `\emph{Doctor of Philosophy}', for an Honours report this should +% be the faculty (e.g.\ `\emph{Science}'). +% \item{\ttfamily\bs{}degreetype\{\emph{Faculty for degree}\}} The default +% value is `\emph{Science}', used for Honours only. +% \item{\ttfamily\bs{}submitdate\{\emph{date}\}} Month and year in which +% submitted; date \LaTeX{}'d if omitted. +% \item{\ttfamily\bs{}copyrightyear\{\emph{year}\}} Year degree +% conferred, or year \LaTeX{}'d if omitted (next year if in December). +% \item{\ttfamily\bs{}declaration} Produce the required declaration that +% the thesis is all the author's own work. +% \item{\ttfamily\bs{}copyrighttrue} Produce or +% \texttt{\bs{}copyrightfalse} don't produce a `\emph{copyright}' page +% (true by default). +% \item{\ttfamily\bs{}figurespagetrue} Produce or +% \texttt{\bs{}figurespagefalse} don't produce a `\emph{List of +% Figures}' page (true by default). +% \item{\ttfamily\bs{}tablespagetrue} Produce or +% \texttt{\bs{}tablespagefalse} don't produce a `\emph{List of +% Tables}' page (true by default). +% \end{description} + +% This class uses space and a half interline spacing, except in +% footnote, figure and table environments where normal spacing is used. +% The command: `\texttt{\bs{}linespread\}\-\{1.655\}}' can be used to +% change this (use whatever you want instead of 1.655). For 12 point +% Computer Modern fonts 1.241 corresponds to space and a half, and 1.655 +% to double spacing. This command should be given in the preamble +% (i.e.\ before the `\texttt{\bs{}begin\{document\}}'). + +% The example given shows the \textsf{12pt} option being used. This is +% required by the 1997 handbook, but may be omitted (at your own risk) +% to get smaller print. There are three options which may be declared +% in \texttt{\bs{}documentclass[a4paper,12pt]\{adfathesis\}}: +% \begin{itemize} +% \item \texttt{draft} which changes the pagestyle to include the date +% on the page header. +% \item \texttt{normalbib} which stops the document using the +% \textsf{Harvard} style, and hence allows use of either the standard +% \LaTeX\ bibliography style or an alternative package. The supplied +% \textsf{adfathesis.bst} may not be appropriate in this case. so you +% could use an alternative such as \textsf{plain.bst}. +% \item \textsf{honours} which changes the titlepage to one more +% appropriate to an Honours report. +% \end{itemize} + +% To get the correct page number for the bibliography in the table of +% contents you need to put a `\texttt{\bs{}clearpage}' command before +% the `\texttt{\bs{}addcontentsline}' command. The thickness of the +% rules used for the chapter headings is controlled by +% `\texttt{\bs{}chaprule}' and can be set to another value, say 0~pt, by +% the command `\texttt{\bs{}setlength\{\bs{}chaprule\}\{0pt\}}' in the +% preamble. There is a maximum value of 6~pt for +% `\texttt{\bs{}chaprule}'. +% +% \StopEventually +% +% \section{The code\label{code}} +% The current version is defined at the top of the file looking +% something like this +% \begin{macrocode} +%<*package> +%\NeedsTeXFormat{LaTeX2e} +%\ProvidesPackage{adfathesis} +% [\filedate\space version\fileversion] +% \end{macrocode} +% +% First we set up some new flags: +% A new flag for draft printing, +% at this stage all I do is reset the page style. +% This is not true by default, must be changed in the thesis BASE file +% A new flag whether to use the Harvard bib package? +% This is true by default, must be changed in the thesis BASE file +% A new flage whether a Honours report rather than PhD or Masters thesis? +% This is not true by default, must be changed in the thesis BASE file +% \begin{macrocode} +\newif\ifATdr@ft +\ATdr@ftfalse +\newif\ifAT@harvbib +\AT@harvbibtrue +\newif\ifATh@nours +\ATh@noursfalse +% \end{macrocode} +% +% Now we define the default values for the flags, and +% make 12 point text the default. +% +% \begin{macrocode} +\newcommand{\ptsize}{} +\DeclareOption{draft} + {\ATdr@fttrue + \PassOptionsToClass{draft}{report}} +\DeclareOption{normalbib} + {\AT@harvbibfalse} +\DeclareOption{harvard} + {\AT@harvbibtrue} +\DeclareOption{honours} + {\ATh@nourstrue} +\DeclareOption{10pt}{\renewcommand{\ptsize}{10pt}} +\DeclareOption{11pt}{\renewcommand{\ptsize}{11pt}} +\DeclareOption{12pt}{\renewcommand{\ptsize}{12pt}} +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{report}} +\ExecuteOptions{12pt} +% \end{macrocode} +% Now process the options and load the standard report class. We merely +% make modifications to the report classs. +% +% \begin{macrocode} +\ProcessOptions\relax +\LoadClass[a4paper,\ptsize]{report} +\ifAT@harvbib\IfFileExists{harvard.sty}{\RequirePackage{harvard}}% + {\ClassError{\filename}{% + The Harvard package was not found.}{% + The Harvard package controls the bibliography appearance. \MessageBreak + \space It is used by default unless you specify the normalbib option. \MessageBreak + \space The Harvard package can be obtained from, e.g., ctan.unsw.edu.au + }}\fi +% \end{macrocode} +% From the Blue book we find the following regulations: +% The size of the paper shall approximate A4 (297mm x 210 mm). +% The margins on each sheet shall be not less than 40mm on the left +% hand side, 20mm on the right hand side, 30mm at the top and 20mm at +% the bottom. +% \TeX\ has default margins of 1 inch (25.4mm) at the top and left. +% +% Use the code from \textsf{size12.clo} to set \verb|\textheight| to an integer +% multiple of \verb|\baselineskip|s. Use \verb|\raggedbottom| and add one +% \verb|\baselineskip| to \verb|\topskip| to allow pagelength to vary. +% \begin{macrocode} +\setlength{\oddsidemargin} {1.5cm} +\setlength{\evensidemargin} {-0.5cm} +\setlength{\marginparwidth} {40\p@} +\setlength{\marginparsep} {10\p@} +\setlength{\topmargin} {-0.6cm} +\setlength{\headheight} {15\p@} +\setlength{\headsep} {0.5cm} +\setlength{\textwidth} {14.9cm} +\setlength\@tempdima{\paperheight} +\addtolength\@tempdima{-30mm} +\addtolength\@tempdima{-20mm} +\divide\@tempdima\baselineskip +\@tempcnta=\@tempdima +\setlength\textheight{\@tempcnta\baselineskip} +\addtolength\textheight{\topskip} +\setlength{\topskip}{1\topskip \@plus 1\baselineskip} +\setlength{\parskip}{0pt} +\raggedbottom +% \end{macrocode} +% +% Set spacing for space and a half, using values from setspace.sty. +% Use the new \verb|\linespread| command rather than +% \verb|\renewcommand{\baselinestretch}{1.25}| etc. +% \begin{macrocode} +\ifcase \@ptsize \relax % 10pt + \linespread{1.25}% +\or % 11pt + \linespread{1.213}% +\or % 12pt + \linespread{1.241}% +\fi +% \end{macrocode} +% +% Next two sections taken from \textsf{setspace}. +% \begin{macrocode} +\newcommand{\displayskipstretch}{\baselinestretch} +\newcommand{\setdisplayskipstretch}[1]{\renewcommand{\displayskipstretch}{#1}} +% \end{macrocode} +% +% Fix up spacing before and after displayed math +% (\verb|arraystretch| seems to do a fine job for inside LaTeX +% displayed math, +% since \verb|array| and \verb|eqnarray| seem to be affected as expected). +% Changing \verb|\baselinestretch| and doing a font change also works +% if done here, +% but then you have to change \verb|@setsize| to remove the call to +% \verb|@nomath|). +% +% \begin{macrocode} +\everydisplay\expandafter{% + \the\everydisplay + \abovedisplayskip \displayskipstretch\abovedisplayskip + \belowdisplayskip \displayskipstretch\belowdisplayskip + \abovedisplayshortskip \displayskipstretch\abovedisplayshortskip + \belowdisplayshortskip \displayskipstretch\belowdisplayshortskip +} +% \end{macrocode} +% +% The Following changed by Stephen Harker, October 1993 to:% +% \begin{itemize} +% \item Make Chapter title centred, and modify size to \verb|\Large| not +% \verb|\Huge|, use small caps for `chapter' and rules above and +% below. Rule thickness defined by new length \verb|\chaprule|. +% To change this use \verb|\setlength|. +% The value is forced to be less than 6 points below! +% \item Make corresponding reductions to size of section, +% subsection and subsubsection headers. +% \item Rename Bibliography section to References. +% \end{itemize} +% \begin{macrocode} +\newlength{\chaprule} +\newlength{\ATchapskip} +\setlength{\chaprule}{0.4\p@} +\setlength{\ATchapskip}{10\p@} +\advance \ATchapskip by -1\chaprule +\renewcommand{\@makechapterhead}[1]{% + \ifdim\chaprule>6\p@ \setlength{\chaprule}{6\p@}\fi + \vspace*{\ATchapskip}% + \noindent\rule{\textwidth}{\chaprule}\par% + \vskip 10\p@ + {\parindent \z@ \centering \normalfont + \ifnum \c@secnumdepth >\m@ne + {\Large\scshape \@chapapp\space \thechapter} + \par\nobreak + \vskip 8\p@ + \fi + \interlinepenalty\@M + \Large #1\par\nobreak + \vskip 10\p@ + \noindent\rule{\textwidth}{\chaprule}\par% + \vskip\ATchapskip + }} +\renewcommand{\@makeschapterhead}[1]{% + \ifdim\chaprule>6\p@ \setlength{\chaprule}{6\p@}\fi + \vspace*{\ATchapskip}% + \noindent\rule{\textwidth}{\chaprule}\par% + \vskip 10\p@ + {\parindent \z@ \centering + \normalfont + \interlinepenalty\@M + \Large #1\par\nobreak + \vskip 10\p@ + \noindent\rule{\textwidth}{\chaprule}\par% + \vskip\ATchapskip + }} + +\renewcommand{\section}{\@startsection{section}{1}{\z@}% + {-1.5ex \@plus-1ex \@minus -.2ex}{0.8ex \@plus.2ex}% + {\normalfont\large\raggedright}} +\renewcommand{\subsection}{\@startsection{subsection}{2}{\z@}% + {-1.2ex \@plus -.5ex \@minus-.2ex}{0.5ex \@plus.1ex}% + {\normalfont\normalsize\itshape\raggedright}} +\renewcommand{\subsubsection}{\@startsection{subsubsection}{3}{\z@}% + {-1.0ex\@plus -.5ex \@minus -.2ex}{0.3ex \@plus .1ex}% + {\normalfont\normalsize\itshape\raggedright}} +\renewcommand{\paragraph}{\@startsection{paragraph}{4}{\z@}% + {1.0ex \@plus.5ex \@minus.2ex}{-1em}% + {\normalfont\normalsize\itshape\raggedright}} +\renewcommand{\subparagraph}{\@startsection{subparagraph}{5}{\parindent}% + {1.0ex \@plus.5ex \@minus .2ex}{-1em}% + {\normalfont\normalsize\itshape\raggedright}} + +\renewcommand{\bibname}{References} +% \end{macrocode} +% +% The following is taken from \textsf{sober.sty}, Nico Poppelier and +% \textsf{rapport1.cls} (NTG classes). +% Makes list (\texttt{enumerate} and \texttt{itemize}) more reasonable +% in vertical space, +% by adjusting the spacing between items. +% Unfortunately in the \verb|size*.clo| files \verb|\small| etc also +% redefine these +% values. We could redefine \verb|\small| etc, but they are size dependent! +% Leave alone, since \verb|\small| is not usually used as an environment, at +% least not for large sections of a document. +% \begin{macrocode} +\def\@listi{\leftmargin\leftmargini + \labelsep .5em% + \labelwidth\leftmargini + \advance\labelwidth-\labelsep + \parsep \z@ + \topsep 0.4ex \@plus\p@ + \itemsep 0\p@ \@plus1\p@} +\let\@listI\@listi +\@listi +\def\@listii{\leftmargin\leftmarginii + \labelsep .5em% + \labelwidth\leftmarginii + \advance\labelwidth-\labelsep + \topsep 0\p@ \@plus\p@ + \parsep \z@ \@plus\p@ + \itemsep \parsep} +\def\@listiii{\leftmargin\leftmarginiii + \labelsep .5em% + \labelwidth\leftmarginiii + \advance\labelwidth-\labelsep + \topsep 0\p@ \@plus\p@ + \parsep \z@ + \partopsep \z@ \@plus\p@ + \itemsep \topsep} +\def\@listiv{\leftmargin\leftmarginiv + \labelsep .5em% + \labelwidth\leftmarginiv + \advance\labelwidth-\labelsep + \topsep 0\p@ \@plus\p@ + \parsep \z@ + \partopsep \z@ \@plus\p@ + \itemsep \topsep} +\def\@listv{\leftmargin\leftmarginv + \labelsep .5em% + \labelwidth\leftmarginv + \advance\labelwidth-\labelsep% + \topsep 0\p@ \@plus\p@ + \parsep \z@ + \itemsep \z@ \@plus\p@} +\def\@listvi{\leftmargin\leftmarginvi + \labelsep .5em + \labelwidth\leftmarginvi + \advance\labelwidth{-\labelsep}% + \topsep 0\p@ \@plus\p@ + \parsep \z@ + \itemsep \z@ \@plus\p@} +% \end{macrocode} +% +% Next re-define \verb|\cleardoublepage| as recommended by Piet van +% Oostrum in the +% documentation for \textsf{fancyhdr.sty} page 15. This is to avoid +% blank pages having headers or footers. +% \begin{macrocode} +\renewcommand{\cleardoublepage}{\clearpage\if@twoside \ifodd\c@page\else + \thispagestyle{empty} + \hbox{}\newpage\if@twocolumn\hbox{}\newpage\fi\fi\fi} +% \end{macrocode} +% +% Reduce widow/orphan problems, mainly from a posting from Donald +% Arsenau on \texttt{comp.text.tex}, 24 Sep 1995. +% Updated to follow comments from Michael Downes on \texttt{comp.text.tex}, +% 31 Aug 1998. +% \begin{macrocode} +\doublehyphendemerits=10000 % No consecutive line hyphens. +\brokenpenalty=4991 % Reduce broken words across columns/pages. +\widowpenalty=9999 % Almost no widows at bottom of page. +\clubpenalty=9996 % Almost no orphans at top of page. +\interfootnotelinepenalty=9999 % Almost never break footnotes. +\predisplaypenalty=10000 % Default value +\postdisplaypenalty=1549 % Few breaks between display and widows +\displaywidowpenalty=1602 % At least as high as \postdisplaypenalty +% \end{macrocode} +% +% Change float placement parameters to reduce problems. Based on +% values posted by Donald Arsenau on \texttt{comp.text.tex} at various times. +% See in particular 17th Nov 1997. +% \begin{macrocode} +\renewcommand{\topfraction}{.85} +\renewcommand{\bottomfraction}{.7} +\renewcommand{\textfraction}{.15} +\renewcommand{\floatpagefraction}{.66} +\renewcommand{\dbltopfraction}{.66} +\renewcommand{\dblfloatpagefraction}{.66} +\setcounter{topnumber}{9} +\setcounter{bottomnumber}{9} +\setcounter{totalnumber}{20} +\setcounter{dbltopnumber}{9} +% \end{macrocode} +% +% Make tables and figures default to small text and be single spaced, +% and modify caption macro to allow this to take effect in the caption. +% Use this version rather than previous redefinition of +% \verb|\@xfloat|, see +% \textsf{setspace.sty} for an improved example of the latter. +% From \texttt{comp.text.tex}, Donald Arsenau 25 July 1996. +% Also reverse \verb|\abovecaptionskip| and \verb|\belowcaptionskip| +% for tables. +% \begin{macrocode} +\renewenvironment{table} + {\setlength{\abovecaptionskip}{0\p@} + \setlength{\belowcaptionskip}{10\p@} + \linespread{1}\normalfont\small\@float{table}} + {\end@float} +\renewenvironment{table*} + {\setlength{\abovecaptionskip}{0\p@} + \setlength{\belowcaptionskip}{10\p@} + \linespread{1}\normalfont\small\@dblfloat{table}} + {\end@dblfloat} +\renewenvironment{figure} + {\linespread{1}\normalfont\small\@float{figure}} + {\end@float} +\renewenvironment{figure*} + {\linespread{1}\normalfont\small\@dblfloat{figure}} + {\end@dblfloat} +\long\def\@caption#1[#2]#3{\par\addcontentsline{\csname + ext@#1\endcsname}{#1}{\protect\numberline{\csname + the#1\endcsname}{\ignorespaces #2}}\begingroup + \@parboxrestore + \if@minipage + \@setminipage + \fi + \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par + \endgroup} +% \end{macrocode} +% +% Also use Donald Arsenau's modified \verb|\@makecaption| which fixes problems +% with spacing of captions before tables. Taken from \texttt{comp.text.tex} +% 21 May 1997. Regular version (acts like regular caption, but with +% Donald Arsenau's improvements). +% \begin{macrocode} +\def\onecaptflag{268 } +\renewcommand{\@makecaption}[2]{\let\@tempa\relax + \ifdim\prevdepth>-99\p@ \vskip\abovecaptionskip \relax + \else \def\@tempa{\vbox to\topskip{}}\fi + {#1: }\@tempa \vadjust{\penalty \onecaptflag}% + #2\@finalstrut\strutbox\par + \ifnum\lastpenalty=\onecaptflag % single line; centre it + \unpenalty \setbox\@tempboxa\lastbox + \nointerlineskip + \hbox to\hsize{\hskip\parfillskip\unhbox\@tempboxa}% + \fi \vskip\belowcaptionskip} +% \end{macrocode} +% +% Number figures, tables and equations by chapter. Re-define footnotes +% and minipage footnotes to be single spaced. Make new macros needed +% for thesis definitions. +% \begin{macrocode} +\renewcommand{\thefigure}{\thechapter.\@arabic\c@figure} +\renewcommand{\thetable}{\thechapter.\@arabic\c@table} +\renewcommand{\theequation}{\thechapter.\@arabic\c@equation} +% \end{macrocode} +% +% Re-define \verb|\@footnotetext| and \verb|\@mpfootnotetext| to use +% single spacing +% rather than the space-and-a-half that is the default elsewhere. +% +% \begin{macrocode} +\renewcommand{\@footnotetext}[1]{\insert\footins{% + \linespread{1}\normalfont\footnotesize% + \interlinepenalty\interfootnotelinepenalty + \splittopskip\footnotesep + \splitmaxdepth \dp\strutbox \floatingpenalty \@MM + \hsize\columnwidth \@parboxrestore + \protected@edef\@currentlabel{% + \csname p@footnote\endcsname\@thefnmark}% + \color@begingroup + \@makefntext{% + \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}% + \color@endgroup}} + +\renewcommand{\@mpfootnotetext}[1]{% + \global\setbox\@mpfootins\vbox{% + \unvbox \@mpfootins + \linespread{1}\normalfont\footnotesize% + \hsize\columnwidth + \@parboxrestore + \protected@edef\@currentlabel{% + \csname p@mpfootnote\endcsname\@thefnmark}% + \color@begingroup + \@makefntext{% + \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}% + \color@endgroup}} +% \end{macrocode} +% +% Now Define thesis related commands. +% Another change is to add \verb|\thesistype| which can be defined +% as appropriate for Masters or Doctoral thesis (default Doctoral). +% \begin{macrocode} +\newcommand{\dept}[1]{\gdef\@dept{#1}} +\newcommand{\thesistype}[1]{\gdef\@thesistype{#1}} +\newcommand{\degreetype}[1]{\gdef\@degreetype{#1}} +\newcommand{\principaladviser}[1]{\gdef\@principaladviser{#1}} +\newcommand{\advis@r}{Adviser} +\newcommand{\principaladvisor}[1]{\gdef\@principaladviser{#1}% + \gdef\advis@r{Advisor}} +\newcommand{\firstreader}[1]{\gdef\@firstreader{#1}} +\newcommand{\secondreader}[1]{\gdef\@secondreader{#1}} +\newcommand{\submitdate}[1]{\gdef\@submitdate{#1}} +\newcommand{\copyrightyear}[1]{\gdef\@copyrightyear{#1}} % \author, \title + % in report + +\renewcommand{\@title}{} +\renewcommand{\@author}{} +\newcommand{\@dept}{Physics} +\newcommand{\@thesistype}{Doctor of Philosophy} +\newcommand{\@degreetype}{Science} +\newcommand{\@principaladviser}{} +\newcommand{\@firstreader}{} +\newcommand{\@secondreader}{} +\newcommand{\@submitdate}{\ifcase\the\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\the\year} +\ifnum\month=12 + \@tempcnta=\year \advance\@tempcnta by 1 + \edef\@copyrightyear{\number\the\@tempcnta} +\else + \newcommand{\@copyrightyear}{\number\the\year} +\fi + +\newif\ifcopyright +\newif\iffigurespage +\newif\iftablespage +\copyrighttrue +\figurespagetrue +\tablespagetrue +% \end{macrocode} +% +% A new definition, mainly for the declaration. +% +% \begin{macrocode} +\newcommand{\authornameonly}[1]{\gdef\Authornameonly{#1}} +% \end{macrocode} +% +% Title page, copyrightpage and declaration page definitions. +% Add re-definition for Honours reports rather than Higher Degree +% theses. +% \begin{macrocode} +\newcommand{\titlep}{% + \pagestyle{empty}% + \null\vskip2.5cm% + \begin{center} + {\rmfamily\Large\uppercase\expandafter{\@title}} + \end{center} + \vfill + \begin{center} + \textsc{A thesis submitted for the degree of \\ + \expandafter{\@thesistype}} + \end{center} + \vfill + \begin{center} + {\rmfamily\normalsize By\\ + \@author}\\ + \end{center} + \vfill + \begin{center} % Department changed to School July 1995 + {\rmfamily\normalsize School of \expandafter{\@dept},\\ + University College, \\ + The University of New South Wales, \\ + Australian Defence Force Academy.} \\ + \vskip1cm + {\rmfamily\normalsize \@submitdate}\\ + \end{center} + \vskip1cm + \newpage} +\ifATh@nours\renewcommand{\titlep}{% + \pagestyle{empty}% + \null\vskip2.5cm% + \begin{center} + {\rmfamily\Large\uppercase\expandafter{\@title}} + \end{center} + \vfill + \begin{center} + {\rmfamily\normalsize \@author}\\ + \end{center} + \vskip1cm + \begin{center} % Department changed to School July 1995 + {\rmfamily\normalsize School of \expandafter{\@dept},\\ + University College, \\ + The University of New South Wales, \\ + Australian Defence Force Academy.} \\ + \vskip1cm + {\rmfamily\normalsize \@submitdate}\\ + \end{center} + \vfill + \begin{center} + \small\textsc{Submitted in partial fulfillment of the + requirements of the degree of \\ + Bachelor of \expandafter{\@degreetype} with Honours} + \end{center} + \newpage}\fi + +\newcommand{\copyrightpage}{% + \null\vfill + \begin{center} + {\Large\copyright\ Copyright \@copyrightyear\\ + by\\ + \@author}\\ + \end{center} + \vfill\newpage} + +\newcommand{\declaration}{% +\newpage +\null\vfill +\begin{center} +\begin{minipage}{11cm} +\setlength{\parindent}{0\p@} +\setlength{\parskip}{2ex \@plus0.5ex} +{\rmfamily\normalsize + +I hereby declare that this submission is my own work and to the best +of my knowledge it contains no material previously published or +written by another person, nor material which to a substantial extent +has been accepted for the award of any other degree or diploma at UNSW +or any other educational institution, except where due acknowledgement +is made in the thesis. Any contribution made to the research by +colleagues, with whom I have worked at UNSW or elsewhere, during my +candidature, is fully acknowledged. + +I also declare that the intellectual content of this thesis is the +product of my own work, except to the extent that assistance from +others in the project's design and conception or in style, +presentation and linguistic expression is acknowledged.} +\par +\vspace{2.5cm} +\mbox{}\hfill\Authornameonly +\end{minipage} +\end{center} +\vfill\null +\addcontentsline{toc}{chapter}{Declaration}} +% \end{macrocode} +% +% Add definitions for \verb|\beforepreface|, \verb|\prefacesection| +% and \verb|\afterpreface| +% to allow page numbering and headerstyle to be changed. +% +% \begin{macrocode} +\newcommand{\beforepreface}{% + \pagestyle{empty} + \titlep + \if@twoside\cleardoublepage\fi + \pagenumbering{roman} + \ifATdr@ft\pagestyle{draft}\else\pagestyle{plain}\fi + \setcounter{page}\@ne% Reset the page number to 1, i.e. titlepage is page 0 + \ifcopyright\copyrightpage\fi + } + +\newcommand{\prefacesection}[1]{% + \chapter*{#1} + \addcontentsline{toc}{chapter}{#1}} + +\newcommand{\afterpreface}{% + \if@twoside + \cleardoublepage + \else\newpage + \fi + \tableofcontents + \if@twoside + \cleardoublepage + \else\newpage + \fi + \iftablespage + {\addvspace{10\p@} + \let\saveaddvspace=\addvspace + \def\addvspace##1{} + \listoftables + \let\addvspace=\saveaddvspace} + \if@twoside + \cleardoublepage + \else\newpage + \fi + \fi + \iffigurespage + {\addvspace{10\p@} + \let\saveaddvspace=\addvspace + \def\addvspace##1{} + \listoffigures + \let\addvspace=\saveaddvspace} + \if@twoside + \cleardoublepage + \else\newpage + \fi + \fi + \pagenumbering{arabic} + \ifATdr@ft\pagestyle{draft}\else\pagestyle{plain}\fi} +% \end{macrocode} +% +% Create a brand new page style to include the date in the page header. +% \begin{macrocode} +\newcommand{\ps@draft}{%\let\@mkboth\@gobbletwo + \renewcommand{\@oddfoot}{\@empty}% + \renewcommand{\@oddhead}{\rmfamily\slshape\today\hfil\thepage}% + \renewcommand{\@evenhead}{\rmfamily\slshape\thepage\hfil\today}% + \renewcommand{\@evenfoot}{\@oddfoot}} +% \end{macrocode} +% +% Start with \verb|\pagestyle{plain}| in case front matter isn't processed. +% +% \begin{macrocode} +\pagestyle{plain} +% \end{macrocode} +% +% Modify Table of contents entry for chapter to normal font not bold. +% Second use word Chapter/Appendix before number. Use \verb|\appendixname| +% rather than \verb|\@chapapp| to set width for this element as it is longer! +% +% \begin{macrocode} +\newlength{\@chapwidth}% +\renewcommand*\l@chapter[2]{% + \ifnum \c@tocdepth >\m@ne + \addpenalty{-\@highpenalty}% + \vskip 1.0em \@plus\p@ + \settowidth{\@chapwidth}{\appendixname}% not \@chapapp + \addtolength{\@chapwidth}{\@pnumwidth} + \setlength\@tempdima{\@chapwidth}% + \begingroup + \parindent \z@ \rightskip \@pnumwidth + \parfillskip -\@pnumwidth + \leavevmode \normalfont + \advance\leftskip\@tempdima + \hskip -\leftskip + #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par + \penalty\@highpenalty + \endgroup + \fi} +\def\@chapter[#1]#2{% + \ifnum \c@secnumdepth >\m@ne + \refstepcounter{chapter}% + \typeout{\@chapapp\space\thechapter.}% + \addcontentsline{toc}{chapter}% + {\protect\numberline{\expandafter\@chapapp\space\thechapter}#1}% + \else + \addcontentsline{toc}{chapter}{#1}% + \fi + \chaptermark{#1}% + \addtocontents{lof}{\protect\addvspace{10\p@}}% + \addtocontents{lot}{\protect\addvspace{10\p@}}% + \if@twocolumn + \@topnewpage[\@makechapterhead{#2}]% + \else + \@makechapterhead{#2}% + \@afterheading + \fi} +% \end{macrocode} +% +% \begin{macrocode} +%</package> +% \end{macrocode} +% +% \Finale +% diff --git a/macros/latex/contrib/adfathesis/adfathesis.ins b/macros/latex/contrib/adfathesis/adfathesis.ins new file mode 100644 index 0000000000..745f5e2a5d --- /dev/null +++ b/macros/latex/contrib/adfathesis/adfathesis.ins @@ -0,0 +1,31 @@ +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% adfathesis.ins -- installation file for adfathesis.cls +%% Stephen Harker +%% +%% These macros are placed in the public domain. They may be freely +%% transmitted, reproduced, or modified. No rights are reserved. +%% +%% --------------- start of docstrip commands ------------------ +%% +\def\batchfile{adfathesis.ins} +\input docstrip.tex +\preamble + +adfathesis.cls -- A LaTeX thesis style for the Australian Defence +Force Academy. +Stephen Harker + +These macros are placed in the public domain. They may be freely +transmitted, reproduced, or modified. No rights are reserved. + +\endpreamble +\def\batchfile{adfathesis.dst} +\input docstrip +\keepsilent + +\generateFile{adfathesis.cls}{t}{% + \from{adfathesis.dtx}{package}} diff --git a/macros/latex/contrib/adfathesis/adfathesis.pdf b/macros/latex/contrib/adfathesis/adfathesis.pdf Binary files differnew file mode 100644 index 0000000000..1d915c1a4b --- /dev/null +++ b/macros/latex/contrib/adfathesis/adfathesis.pdf diff --git a/macros/latex/contrib/adfathesis/template.tex b/macros/latex/contrib/adfathesis/template.tex new file mode 100644 index 0000000000..80fbb3da6d --- /dev/null +++ b/macros/latex/contrib/adfathesis/template.tex @@ -0,0 +1,78 @@ +\documentclass[a4paper,12pt,openright,twoside]{adfathesis} +\usepackage{dcolumn} +\usepackage{graphicx} + +%----------------------------------------------------------------------- +% Harvard citation style control. +%----------------------------------------------------------------------- +\citationstyle{agsm} +\renewcommand{\harvardand}{and} + +%----------------------------------------------------------------------- +% Setup Decimal column alignment (using dcolumn). +%----------------------------------------------------------------------- + +\newcolumntype{d}[1]{D{.}{\cdot}{#1}} + +%----------------------------------------------------------------------- +% Control included chapters here +%----------------------------------------------------------------------- + +\includeonly{chapter2} + +\title{A fascinating thesis} +\authornameonly{Fred Nerk} +\author{\Authornameonly \\ B.Sc.} +\copyrightfalse % Set true to get copyright page. +\thesistype{Doctor of Philosophy} % Default value. +\figurespagetrue % Set false to avoid list of figures. +\tablespagefalse % Set true to get list of tables. + +\begin{document} + +\beforepreface +% \declaration % Declaration page. +\prefacesection{Abstract} + This thesis tells you all you need to know about... +\prefaceseciton{Acknowledgements} + I would like to thank... +\afterpreface + +%----------------------------------------------------------------------- +% Begin thesis: use \include for each chapter as a separate file. +%----------------------------------------------------------------------- + +% chapter 1 +\include{chapter1} % Introduction + +% chapter 2 +\include{chapter2} + +% chapter 3 +\include{chapter3} + +% chapter 6 +\include{chapter6} % Conclusions + +%----------------------------------------------------------------------- +% Appendices: use \appendix switch to change to appendices. +%----------------------------------------------------------------------- +\appendix + + +% First appendix +\include{appendix1} % A long proof + +% Second Appendix +\include{appendix2} + + +%----------------------------------------------------------------------- +% Bibliography: The clearpage is needed to get the page reference right. +%----------------------------------------------------------------------- +\clearpage +\addcontentsline{toc}{chapter}{References} +\bibliographystyle{adfathesis} +\bibliography{mybib} + +\end{document} |