Hello, I recently upgraded from version 1.1.4 to 1.1.5fix1. I found that a document that worked perfectly under 1.1.4 no longer worked under 1.1.5fix1. I am using the harvard bibliography style, which triggers the problem. I get errors when I use the \citeasnoun latex command in the caption of a figure. Attached is a stripped down version of my document that generates the problem, with the 'harvard.sty' and 'dcu.bst' files that I use. When I upgraded I did not remove the previous version of LyX (lyx-1.1.4) - a standard policy I have is to leave the old version around for a couple of months :) - and so I was able to confirm that it was not any changes I may have unknowingly made that sparked the problem. Here are my system specs: ------------------------------------------------------------------------------- Compaq Professional Workstation AP550, PIII 733. SuSE Linux 6.3, out-of-the-box kernel. $ uname -a Linux hal8000 2.2.13 #1 Mon Nov 8 15:51:29 CET 1999 i686 unknown $ g++ --version egcs-2.91.66 $ latex --version TeX (Web2C 7.3.1) 3.14159 kpathsea version 3.3.1 Copyright (C) 1999 D.E. Knuth. Kpathsea is copyright (C) 1999 Free Software Foundation, Inc. There is NO warranty. Redistribution of this software is covered by the terms of both the TeX copyright and the GNU General Public License. For more information about these matters, see the files named COPYING and the TeX source. Primary author of TeX: D.E. Knuth. Kpathsea written by Karl Berry and others. ------------------------------------------------------------------------------- Also, thanks guys for such a great package. I find it a lot easier to navigate large documents and typeset maths using LyX than LaTeX. The TOC pulldown in 1.1.5fix1 is a great idea! Dave P.S. I have done a number of tests to make sure it isn't my system, but if it still turns out to be then I am v/sorry to waste your time!! *==========================================================================* David McIver ** Postgraduate Student ** Turbulence, Energy and Combustion Research Group ************ Department of Mechanical Engineering ************ University of Adelaide, Australia ** ** Phone: +61 8 8303 3157 ** Fax: +61 8 8303 4367 ** e-mail: [EMAIL PROTECTED] ** *==========================================================================*
#LyX 1.1 created this file. For more info see http://www.lyx.org/ \lyxformat 2.16 \textclass report \begin_preamble \usepackage{harvard} \newcommand{\noFigYet}[1]{ \vspace{#1} \fbox{Figure to be inserted} \vspace{#1} } \end_preamble \language default \inputencoding default \fontscheme default \graphics default \paperfontsize 12 \spacing single \papersize a4paper \paperpackage a4 \use_geometry 1 \use_amsmath 0 \paperorientation portrait \leftmargin 25mm \topmargin 25mm \rightmargin 25mm \bottommargin 25mm \secnumdepth 3 \tocdepth 2 \paragraph_separation indent \defskip medskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 1 \paperpagestyle default \layout Title Draft Upgrade Report: \newline The Fluidic Precessing Jet Nozzle; Simulation of a flow through a complex geometry in polar coordinates \layout Author David McIver \layout Abstract \begin_inset Info This section will (of coarse) be written last! \end_inset An ellipsis (\SpecialChar \ldots{} ) means that I intend to write more in that section. \layout Abstract Anything in curly brackets is a comment from me. \layout Standard \begin_inset LatexCommand \tableofcontents{} \end_inset \layout Chapter Introduction \layout Standard \begin_inset Info This section should contain the following general points: - why the following - doing LES of precessing jet chamber - predictive capability is needed - high Re # are of interest - that there are no current models - that RANS modelling doesn't predict structure - flow structure dominates combustion It should also say in broad terms what has and hasn't been done. \end_inset \begin_inset LatexCommand \label{chap:intro} \end_inset \layout Standard While conducting research towards his thesis \latex latex \backslash citeasnoun{nathanPhd} \latex default discovered that a precessing motion results when a turbulent pipe jet undergoes a sudden expansion. The resulting asymmetric jet was found to enhance large-scale mixing downstream of the sudden expansion. Further research showed that when applied to burner technology the enhanced large-scale mixing characteristics of the flow produced a flame with increased luminence and lower \begin_inset Formula \( NO_{x} \) \end_inset emissions \latex latex \backslash cite{nox1,nox2} \latex default . The burner jet resulting from this asymmetric flow was named the Fluidic Precessing Jet (hereafter referred to as the FPJ). Since its discovery the FPJ has been implemented in boilers and cement kilns in Australia and overseas. Both experimental and computational research continues into this practical application of a phenomena referred to in the literature as the Coanda effect. \layout Standard \added_space_top medskip The present work documents preliminary research into the computational modelling of the flow within the chamber that is the cause of the precessing motion produced by the FPJ nozzle. Firstly the basis of compuational simulation of turbulent flows is discussed, as is the need for a computational model of a FPJ. The mathematical formulation of an effective computational technique is derived and simulation results using this technique are given. {The results show that this technique is capable of simulating the flows which make up the basis of the FPJ.} Based on these results a proposal is then made for further research into the FPJ flow using this computational technique. \layout Section Fluidic precessing jet flow \layout Standard \begin_inset LatexCommand \label{sec:introFPJflow} \end_inset \begin_float fig \layout Standard \align center \latex latex \backslash noFigYet{20mm} \layout Caption \begin_inset LatexCommand \label{fig:niceFPJ} \end_inset {A picture of the precessing jet} \end_float \layout Standard An understand the flow produced by a fluidic precessing jet nozzle is required before any modelling options are reviewed. This is because the techniques used to study the flow within the nozzle must be capable of capturing the dominant physical processes driving the precessing jet flow. Hence knowledge of the type of flow that is being studied is an important factor in the selection of tools used to study the flow. \layout Subsection Overview \layout Standard \begin_inset LatexCommand \label{subsec:introFPJoview} \end_inset \layout Standard A precessing jet nozzle is shown in figure\SpecialChar ~ \begin_inset LatexCommand \ref{fig:niceFPJ} \end_inset . It consists of an axisymmetric sudden expansion into a chamber of diameter approximately five times or greater than that of the inlet pipe. There is a lip at the exit of the chamber. Fluid flow into the nozzle from the pipe at the back of the chamber. The jet of fluid entering the chamber via the inlet pipe will be referred to as the main jet. Experiments have shown that for the correct nozzle geometry and under the correct flow conditions the main jet of fluid entering the nozzle attaches to the wall of the chamber. The point at which the main jet attaches to the chamber rotates about the inside surface of the chamber with a characteristic frequency. The lip at the end of the chamber combines with the instantaneous pressure field to deflect the fluid passing out of the chamber. The movement of the attachment point combined with the deflection at the lip causes the jet of fluid that exits the cavity to rotate about the axis of the nozzle. \layout Standard To futher complicate the flow, two different modes for the flow through the FPJ nozzle have been observed. The flow switches between a precessing mode in which the main jet remains attached to the wall of the cavity and an axisymmetric mode where the main jet detaches from the wall of the cavity and flows directly through the sudden expansion configuration. Figure\SpecialChar ~ \begin_inset LatexCommand \ref{fig:FPJmodes} \end_inset shows a two-dimensional representation of the flow inside the nozzle for both of these modes taken from \latex latex \backslash citeasnoun{nhl1998} \latex default . \begin_float fig \layout Standard \align center \latex latex \backslash noFigYet{20mm} \layout Caption \begin_inset LatexCommand \label{fig:FPJmodes} \end_inset A two-dimensional schematic of the two modes of fluid flow through a FPJ nozzle. \shape italic a \shape default ) the precessing mode that dominates the flow, and \shape italic b \shape default ) the intermittant axial mode. Taken from \latex latex \backslash citeasnoun{nhl1998} \latex default . \end_float \layout Standard \begin_inset LatexCommand \BibTeX[dcu]{temp} \end_inset \the_end
@Phdthesis{nathanPhd, author = {G.J. Nathan}, title = {The Enhanced Mixing Burner}, school = {Department of Mechanical Engineering}, year = 1988, address = {University of Adelaide}, annote = {Gus's PhD thesis} } @Article{nhl1998, author = {Graham J. Nathan and Simon J. Hill and Russel E. Luxton}, title = {An axisymmetric 'fluidic' nozzle to generate jet precession}, journal = JFM, year = 1998, volume = 370, pages = {347--380}, annote = {Comment: Excellent article describing what happens during precession. Also the latest work done on the precessing jet} } @InProceedings{nox1, author = {G.J. Nathan and R.E. Luxton and J.P. Smart}, title = {Reduced \begin{math} {NO}_{x} \end{math} emissions and enhanced large scale turbulence from a precessing jet burner}, booktitle = {24th Symp. (Intl) on Combustion}, year = 1992, pages = {1399--1405}, organization = {The Combustion Institute}, annote = {Referenced by nathan_etal_1998} } @Article{nox2, author = {G.J. Nathan and S.R. Turns and R.V. Bandaru}, title = {The influence of jet precession on \begin{math} {NO}_{x} \end{math} emissions and radiation from turbulent flames}, journal = {Combust. Sci. Technol.}, year = 1996, volume = 112, pages = {211--230}, annote = {Referenced by nathan_etal_1998} }
% BibTeX standard bibliography style `dcu' (one of the harvard family) % version 0.99a for BibTeX versions 0.99a or later, LaTeX version 2.09. % Copyright (C) 1991, all rights reserved. % Copying of this file is authorized only if either % (1) you make absolutely no changes to your copy, including name, or % (2) if you do make changes, you name it something other than % btxbst.doc, plain.bst, unsrt.bst, alpha.bst, abbrv.bst, agsm.bst, % dcu.bst or kluwer.bst. % This restriction helps ensure that all standard styles are identical. % The file harvard.tex has the documentation for this style. % ACKNOWLEDGEMENT: % This document is a modified version of alpha.bst to which it owes much of % its functionality. % AUTHOR % Peter Williams, Key Centre for Design Quality, Sydney University % e-mail: [EMAIL PROTECTED] 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 } { 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" = { " 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 "t" change.case$ } 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$ } { " in " * series emphasize * } 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$ { 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$ " et~al." * } { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = { s #1 "{vv~}{ll}" format.name$ " 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" = { " 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} { 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$ etal.allowed %%%XXX change etal.required and { "\harvarditem[" write$ make.abbr.label write$ "]{" write$ } { "\harvarditem{" write$ } if$ make.full.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 new.block author "author" item.check title.field field.used = { skip$ } { format.title "title" output.check } if$ 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 "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$ 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$ 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 title.field field.used = { skip$ } { format.title "title" output.check } if$ author "author" item.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 title.field field.used = { skip$ } { format.title "title" output.check } if$ author "author" item.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 new.block author "author" item.check title.field field.used = { skip$ } { format.title emphasize "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 new.block title.field field.used = { skip$ } { format.title 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 new.block author "author" item.check title.field field.used = { skip$ } { format.btitle "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 new.block title.field field.used = { skip$ } { format.btitle "title" output.check } if$ 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 emphasize 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 new.block 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} { 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 * 'list.year := } { year extra.label * '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}
%% harvard.sty - harvard bibliography style Version 2.0.5 %% Author: Peter Williams [EMAIL PROTECTED] %% Copyright: Peter Williams 1994 \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{harvard} \RequirePackage{ifthen} \IfFileExists{html.sty}{\RequirePackage{html} \newcommand{\harvardurl}[1]{\htmladdnormallink*{\textbf{URL:} \textit{##1}}{##1}} }{ \newcommand{\harvardurl}[1]{\textbf{URL:} \textit{##1}} } \DeclareOption{full}{\citationmode{full}} \DeclareOption{abbr}{\citationmode{abbr}} \DeclareOption{default}{\citationmode{default}} \DeclareOption{agsmcite}{\citationstyle{agsm}} \DeclareOption{dcucite}{\citationstyle{dcu}} \DeclareOption{round}{\harvardparenthesis{round}\harvardyearparenthesis{round}} \DeclareOption{curly}{\harvardparenthesis{curly}\harvardyearparenthesis{curly}} \DeclareOption{angle}{\harvardparenthesis{angle}\harvardyearparenthesis{angle}} \DeclareOption{square}{\harvardparenthesis{square}\harvardyearparenthesis{square}} \DeclareOption{none}{\harvardparenthesis{none}\harvardyearparenthesis{none}} \DeclareOption*{ \global\edef\HAR@tmp{\CurrentOption} %% Berwin A. Turlach <[EMAIL PROTECTED]> \AtEndDocument{\bibliographystyle{\HAR@tmp}} } %% Kristoffer H. Rose <[EMAIL PROTECTED]> 1995/03/01: %% do not expand macros in citations: put definitions on .aux file instead. {\catcode`\:=12 \catcode`\-=12 \catcode`\>=12 \catcode`\<=12 % \gdef\codeof#1{\expandafter\codeof@\meaning#1<-:}% \gdef\codeof@#1:->#2<-:{#2}} \def\harvardpreambletext{\catcode`\#=12 \harvardpreambletext@} \def\harvardpreambletext@#1{\def\next{#1}\catcode`\#=6 % \immediate\write\@auxout{\string\harvardpreambledefs{% \string\AtBeginDocument{\codeof\next}}}} \def\harvardpreambledefs#1{#1\gdef\harvardpreambledefs##1{}} \newcommand{\harvarditem}[4][\null]{\item[]% \if@filesw{ \def\protect##1{\string ##1\space}% \ifthenelse{\equal{#1}{\null}} {\def\next{{#4}{#2}{#2}{#3}}} {\def\next{{#4}{#2}{#1}{#3}}} \immediate\write\@auxout{\string\harvardcite\codeof\next}% }\fi% \protect\hspace*{-\labelwidth}\protect\hspace*{-\labelsep}\ignorespaces% } \newcommand{\harvardcite}[4]{ \global\@namedef{HAR@fn@#1}{#2} \global\@namedef{HAR@an@#1}{#3} \global\@namedef{HAR@yr@#1}{#4} \global\@namedef{HAR@df@#1}{\csname HAR@fn@#1\endcsname} } \newcommand{\citationmode}[1]{ \renewcommand{\HAR@citemode}{\csname HAR@cite@#1\endcsname} } \newcommand{\HAR@cite@full}{HAR@fn@} \newcommand{\HAR@cite@abbr}{HAR@an@} \newcommand{\HAR@cite@default}{HAR@df@} \newcommand{\HAR@citemode}{\HAR@cite@default} \newcommand{\HAR@citetoaux}[1]{% \if@filesw\immediate\write\@auxout{\string\citation{#1}}\fi% } \newcommand{\HAR@checkdef}[2]{\@ifundefined{HAR@df@#1}% {\textbf{?}\@warning{Citation '#1' on page \thepage \space undefined}}% {#2}% } \newcommand{\HAR@dolist}[2]{\def\@citea{\null}\@for\@citeb:=#1\do% {\@citea\def\@citea{\HAR@hisep\penalty\@m\ }\HAR@checkdef{\@citeb}% {#2{\@citeb}\HAR@hysep\penalty\@m\ % \HAR@year{\@citeb}\HAR@setd{\@citeb}}}% } \def\@enamedef#1{\expandafter\def\csname #1\expandafter\endcsname\expandafter} \newcommand{\HAR@name}[1]{\csname \HAR@citemode#1\endcsname} \newcommand{\HAR@fname}[1]{\csname HAR@fn@#1\endcsname} \newcommand{\HAR@aname}[1]{\csname HAR@an@#1\endcsname} \newcommand{\HAR@year}[1]{\csname HAR@yr@#1\endcsname} \newcommand{\HAR@setd}[1]{% \global\@enamedef{HAR@df@#1}{\csname HAR@an@#1\endcsname}% } %% Berwin A. Turlach <[EMAIL PROTECTED]> \global\@namedef{HAR@df@*}{\csname HAR@fn@*\endcsname} \renewcommand{\nocite}[1]{\HAR@citetoaux{#1}% \@for\@citeb:=#1\do% {\HAR@checkdef{\@citeb}{}}}% \renewcommand{\cite}{\@ifstar{\@ifstar{\HAR@acite}{\HAR@fcite}}{\HAR@dcite}} \newcommand{\HAR@dcite}[2][\null]{\HAR@citetoaux{#2}% {\harvardleft\HAR@dolist{#2}{\HAR@name}\ifthenelse{\equal{#1}{\null}}% {}{, #1}\harvardright}% } \newcommand{\HAR@acite}[2][\null]{\HAR@citetoaux{#2}% {\harvardleft\HAR@dolist{#2}{\HAR@aname}\ifthenelse{\equal{#1}{\null}}% {}{, #1}\harvardright}% } \newcommand{\HAR@fcite}[2][\null]{\HAR@citetoaux{#2}% {\harvardleft\HAR@dolist{#2}{\HAR@fname}\ifthenelse{\equal{#1}{\null}}% {}{, #1}\harvardright}% } \newcommand{\citeaffixed}{\@ifstar{\@ifstar{\HAR@aciteaff}{\HAR@fciteaff}}% {\HAR@dciteaff}% } \newcommand{\HAR@fciteaff}[3][\null]{\HAR@citetoaux{#2}% {\harvardleft#3\ \HAR@dolist{#2}{\HAR@fname}\ifthenelse{\equal{#1}{\null}}% {}{, #1}\harvardright}% } \newcommand{\HAR@aciteaff}[3][\null]{\HAR@citetoaux{#2}% {\harvardleft#3\ \HAR@dolist{#2}{\HAR@aname}\ifthenelse{\equal{#1}{\null}}% {}{, #1}\harvardright}% } \newcommand{\HAR@dciteaff}[3][\null]{\HAR@citetoaux{#2}% {\harvardleft#3\ \HAR@dolist{#2}{\HAR@name}\ifthenelse{\equal{#1}{\null}}% {}{, #1}\harvardright}% } \newcommand{\citeasnoun}{\@ifstar{\@ifstar{\HAR@aciteasn}{\HAR@fciteasn}}% {\HAR@dciteasn}% } \newcommand{\HAR@fciteasn}[2][\null]{\HAR@citetoaux{#2}\HAR@checkdef{#2}{% {\HAR@fname{#2}\ \harvardyearleft\HAR@year{#2}\ifthenelse{\equal{#1}{\null}} {}{, #1}\harvardyearright}\HAR@setd{#2}}% } \newcommand{\HAR@aciteasn}[2][\null]{\HAR@citetoaux{#2}\HAR@checkdef{#2}{% {\HAR@aname{#2}\ \harvardyearleft\HAR@year{#2}\ifthenelse{\equal{#1}{\null}} {}{, #1}\harvardyearright}\HAR@setd{#2}}% } \newcommand{\HAR@dciteasn}[2][\null]{\HAR@citetoaux{#2}\HAR@checkdef{#2}{% {\HAR@name{#2}\ \harvardyearleft\HAR@year{#2}\ifthenelse{\equal{#1}{\null}} {}{, #1}\harvardyearright}\HAR@setd{#2}}% } \newcommand{\possessivecite}{\@ifstar{\@ifstar{\HAR@acitepos}{\HAR@fcitepos}}% {\HAR@dcitepos}% } \newcommand{\HAR@fcitepos}[2][\null]{\HAR@citetoaux{#2}\HAR@checkdef{#2}{% {\HAR@fname{#2}'s \harvardyearleft\HAR@year{#2}\ifthenelse{\equal{#1}{\null}} {}{, #1}\harvardyearright}\HAR@setd{#2}}% } \newcommand{\HAR@acitepos}[2][\null]{\HAR@citetoaux{#2}\HAR@checkdef{#2}{% {\HAR@aname{#2}'s \harvardyearleft\HAR@year{#2}\ifthenelse{\equal{#1}{\null}} {}{, #1}\harvardyearright}\HAR@setd{#2}}% } \newcommand{\HAR@dcitepos}[2][\null]{\HAR@citetoaux{#2}\HAR@checkdef{#2}{% {\HAR@name{#2}'s \harvardyearleft\HAR@year{#2}\ifthenelse{\equal{#1}{\null}} {}{, #1}\harvardyearright}\HAR@setd{#2}}% } \newcommand{\citename}{\@ifstar{\@ifstar{\HAR@acitenam}\HAR@fcitenam}% {\HAR@dcitenam}% } \newcommand{\HAR@fcitenam}[2][\null]{\HAR@citetoaux{#2}\HAR@checkdef{#2}{% {\HAR@fname{#2}\ifthenelse{\equal{#1}{\null}} {}{\ \harvardleft#1\harvardright}}}% } \newcommand{\HAR@acitenam}[2][\null]{\HAR@citetoaux{#2}\HAR@checkdef{#2}{% {\HAR@aname{#2}\ifthenelse{\equal{#1}{\null}} {}{\ \harvardleft#1\harvardright}}}% } \newcommand{\HAR@dcitenam}[2][\null]{\HAR@citetoaux{#2}\HAR@checkdef{#2}{% {\HAR@name{#2}\ifthenelse{\equal{#1}{\null}} {}{\ \harvardleft#1\harvardright}}}% } \newcommand{\citeyear}{\@ifstar{\HAR@citeyrnb}{\HAR@citeyr}} \newcommand{\HAR@citeyrnb}[2][\null]{\HAR@citetoaux{#2}% {\def\@citea{\null}\@for\@citeb:=#2\do% {\@citea\def\@citea{\HAR@hisep\penalty\@m\ }\HAR@checkdef{\@citeb}% {\HAR@year{\@citeb}}}\ifthenelse{\equal{#1}{\null}}% {}{, #1}}% } \newcommand{\HAR@citeyr}[2][\null]{\HAR@citetoaux{#2}% {\harvardleft\def\@citea{\null}\@for\@citeb:=#2\do% {\@citea\def\@citea{\HAR@hisep\penalty\@m\ }\HAR@checkdef{\@citeb}% {\HAR@year{\@citeb}}}\ifthenelse{\equal{#1}{\null}}% {}{, #1}\harvardright}% } \newcommand{\HAR@hysep@apsr}{\null} \newcommand{\HAR@hisep@apsr}{;} \newcommand{\HAR@hysep@agsm}{\null} \newcommand{\HAR@hisep@agsm}{,} \newcommand{\HAR@hysep@dcu}{,} \newcommand{\HAR@hisep@dcu}{;} \newcommand{\HAR@and@agsm}{\&} \newcommand{\HAR@and@dcu}{and} \newcommand{\HAR@and@apsr}{and} \newcommand{\HAR@hysep}{\HAR@hysep@agsm} \newcommand{\HAR@hisep}{\HAR@hisep@agsm} \newcommand{\harvardand}{\HAR@and@agsm} \newcommand{\citationstyle}[1]{% \renewcommand{\HAR@hysep}{\csname HAR@hysep@#1\endcsname} \renewcommand{\HAR@hisep}{\csname HAR@hisep@#1\endcsname} \renewcommand{\harvardand}{\csname HAR@and@#1\endcsname} } \newcommand{\HAR@bl@round}{(} \newcommand{\HAR@br@round}{)} \newcommand{\HAR@bl@square}{[} \newcommand{\HAR@br@square}{]} \newcommand{\HAR@bl@curly}{\{} \newcommand{\HAR@br@curly}{\}} \newcommand{\HAR@bl@angle}{$<$} \newcommand{\HAR@br@angle}{$>$} \newcommand{\HAR@bl@none}{} \newcommand{\HAR@br@none}{} \newcommand{\harvardleft}{\HAR@bl@round} \newcommand{\harvardright}{\HAR@br@round} \newcommand{\harvardparenthesis}[1]{ \renewcommand{\harvardleft}{\csname HAR@bl@#1\endcsname} \renewcommand{\harvardright}{\csname HAR@br@#1\endcsname} \harvardyearparenthesis{#1} } \newcommand{\harvardyearleft}{\HAR@bl@round} \newcommand{\harvardyearright}{\HAR@br@round} \newcommand{\harvardyearparenthesis}[1]{ \renewcommand{\harvardyearleft}{\csname HAR@bl@#1\endcsname} \renewcommand{\harvardyearright}{\csname HAR@br@#1\endcsname} } \newcommand{\HAR@checkcitations}[4]{ \def\HAR@tempa{#2}\expandafter \ifx \csname HAR@fn@#1\endcsname \HAR@tempa \def\HAR@tempa{#3}\expandafter \ifx \csname HAR@an@#1\endcsname \HAR@tempa \def\HAR@tempa{#4}\expandafter \ifx \csname HAR@yr@#1\endcsname \HAR@tempa \else \@tempswatrue \fi \else \@tempswatrue \fi \else \@tempswatrue \fi } \AtEndDocument{\renewcommand{\harvardcite}{\HAR@checkcitations}} \ExecuteOptions{agsm,agsmcite,default,round} \ProcessOptions*