The achicago BibTeX style

A Chicago Manual BibTeX style

           Matt Swift <swift@alum.mit.edu>

Version: 0.8a Date: 1998/08/14

Documentation revision: 1999/03/01

Abstract

The Chicago Manual of Style bibliography style BibTeX macros. The style is mostly style A, but borrows the author-date reference system from style B.

Contents

I Discussion 3

1 User documentation 3

II Implementation 6

2 Version control 6

3 Implementation 6 3.1 Preliminary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 3.2 Macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.3 Basic logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.4 Punctuation and abbreviations . . . . . . . . . . . . . . . . . . . . 9 3.5 Output functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.6 Simple auxiliary functions . . . . . . . . . . . . . . . . . . . . . . . 12 3.7 Queue functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.8 Format queue functions . . . . . . . . . . . . . . . . . . . . . . . . 18 3.9 Format names functions . . . . . . . . . . . . . . . . . . . . . . . . 21 3.10 Make functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3.11 Label functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 3.12 Entry types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

3.12.1 Article . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 3.12.2 Book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 3.12.3 Inbook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.12.4 Incollection . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 3.12.5 Majorthesis . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 3.12.6 Manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 3.12.7 Booklet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 3.12.8 Inproceedings . . . . . . . . . . . . . . . . . . . . . . . . . . 46 3.12.9 Proceedings . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 3.12.10 Misc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 3.12.11 Techreport . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 3.12.12 Unpublished . . . . . . . . . . . . . . . . . . . . . . . . . . 48 3.12.13 Default . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

3.13 Sorting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 3.14 Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

Part I

Discussion

Warning: The dox are spotty for this bibstyle—sorry! This is a pretty stable style, however. I’ve included almost my entire test cases. If you’re puzzled, you may compare frankenstein.bib with what you see in the References section at the end of this document. Or please write me.

Reference list ordering: alphabetical by author or whatever passes for author in the absence of one.

1 User documentation

No bibstyle is going to elgantly handle everything while using them in a way that’s at all compatible with the majority of existing bibstyles out there. And it’s not clear that such a bibstyle would be worth the effort to write and learn to use properly. The time would be better spent, I think, writing some macros to make inserting hand-done exceptions seamlessly into the bibliography, so that the whole process could remain clean and automatic.

For the sceptical, and for your entertainment, an example. I wanted to a cite a certain paper by Freud in my dissertation. The cited paper has a title, date of first publication, and chapter number; I read this paper in a volume of Freud’s papers with a title, volume editor, volume date, publisher, reprint date, and reprint publisher; this volume has a number in a series of publications (The International Psycho-Analytic Library) with a series editor; and also this volume has a volume number within a multivolume work with its own title (Collected Papers) and (supervising) translator. Readers honestly don’t need all that information, but each one of those 15 pieces of information might be highly important for another citation, for which only two or three pieces of information were relevant or available. No one needs to write a bibstyle that handles it all, so at several places, the fields are assumed to be used for either one thing or another. For example, ‘’ series either contains the title of the inclusive multivolume work or the series. When, as rarely happens, a volume is part of both at once, you have to give up one or the other.

Warning: This is a complex bibstyle and the number of potential cases is very high. Please check your output, and write me with cases that are not set according to The Chicago Manual percepts. Please refer to the The Chicago Manual whenever possible.

STAR the new fields.

entry type  description

address Address of publisher of cited edition, whether a reprint or

not.

annotation A complete paragraph or more.

author Table 1: Entry types.

entry type  description

bookauthor Book’s author whenever ‘’ author is referring to the author of a part of the book. Usually an ‘inbook’ or “incollection” entry refers to a book with an editor but no author, but not with introductions and the like.

booktitle Book’s title whenever ‘’ title is referring to a part of the

book.

chapter The ‘’ title names the ‘’ chapterth part of the book. One

expects to have nonempty ‘’ booktitle. See also ‘’ type.

edition Edition information to be given after the book’s title, which is ‘’ booktitle if that is nonempty and ‘’ title other-

              wise. Example: 2d~ed.,2~vols.in1~book

editor NOTE all f* and o* fields are only going to apply to ‘book’, ’incollection’, ’inbook’ entries. FIX: check – booklet? etc.

faddress Address of publisher of first-published edition. Not used

unless ‘’ fyear is nonempty.

flanguage Language of first-published edition. Not used unless ‘’

translator or ‘’ fyear is nonempty.

fpublisher Publisher of first-published edition. Not used unless ‘’

fyear is nonempty.

ftitle Title of first-published edition (probably in ‘’ flanguage).

Not used unless ‘’ fyear is nonempty.

fyear Date of first-published edition. howpublished illustrator For ‘book’ entries only. When the author or editor illus-

trates, use a construction like {theeditor}andothers.

institution For thesis entries only. FIX check journal For ‘article’ entries only. key often default with empty author, editor, organization month For ‘journal’ entries, also season, e.g., Winter note Begins its own block, so capitalize. Concluding puctuation

is supplied automatically if not given in the field.

number For ‘journal’ entry, number of the journal (if no “” volume) or number within the volume. For “book” entry, number of the book in the ‘’ series. Makes sense only when ‘’ series is a series rather than the title of a multivolume work.

oaddress For a reprint, address of ORIGINAL publisher. opublisher For a reprint, publisher of ORIGINAL edition. A

nonempty value implies the cited edition IS a reprint (and so must have ‘’ oyear).

organization Table 1: Entry types.

entry type  description

oyear For a reprint, date of publication of ORIGINAL edition A nonempty value implies the cited edition IS a reprint (and so OUGHT TO have ‘’ opublisher). The value will almost always differ from ‘’ year.

pages publisher Publisher of the cited edition. school series Series to which ‘’ title belongs, or title of a multivolume

work where the volumes have their own titles given in ‘’ booktitle or ‘’ title.

seriesedition Edition information to be given after ‘’ series. Makes sense only when ‘’ series is the title of a multivolume work with titled volumes. In the entry for the multivolume work, that is, when ‘’ series and ‘’ title are identical, use ‘’ seriesedition not ‘’ edition. See also ‘’ edition. Consequence of disobeying last is when references are less than min-crossrefs (i.e., no separate entry for the multivolume work) you get the edition information for the multivolume work appearing after the title of the component volume. Note: you can’t really get away with putting a series editor here. I think you’d have to use the ‘’ note field for that; or we could make yet another field.

title translator For ‘book’ entries only, the translator(s). See also “” flan-

guage. When the author or editor translates, use a con-

struction like {theeditor}andothers.

type For ‘inbook’ entries, the value overrides Chapter. When “” type is empty you get Chapter~<chapter>of. FIX: CHECK: For *-thesis entries, gives thesis-type word, e.g.

Master'sThesis.

volume For ‘journal’ entry, it’s volume. For “book” entry, its number in the ‘’ series, or its volume number in a multivolume book.

year Year of publication of cited edition, whether a reprint or

not.

yearcomp Year work composed. For ‘book’ entry only (so far). Table 1: Entry types.

Part II

Implementation

2 Version control

Version information:

 1 ^^A Keep the /^%% \def\file.../ beginning exact!

2

 3 %% A BibTeX bibliography style
 4 %%    conforming to the Chicago Manual's A style
 5 %%       but with B style author-date citations
 6 %%          by Matt Swift <swift@alum.mit.edu>
 7 %%
 8 %% \def\fileinfo{A Chicago Manual BibTeX style}
 9 %% \def\DoXPackageS {longtable}
10 %% \def\initelyHavECitationS {}
11 %% \def\fileversion{v0.8a}
12 %% \def\filedate{1998/08/14}
13 %% \def\docdate{1999/03/01}
14 %%

15

3 Implementation

3.1 Preliminary

These are global variables. ‘output.state’ will always have one of the four following scalar values, telling us where we are in producing the entry.

16 INTEGERS { output.state before.all mid.sentence after.sentence after.block }

These are used for various internal calculations explained in the functions that use them.

17 INTEGERS { j nameptr namesleft numnames len last.year.tag.num }

These are more scratch variables.

Warning: Suspect a conflict among these scratch variables if a strange problem occurs! I think ‘u’ is the only one that will hold its value past an ‘output’.

18 STRINGS { s t u }

These are label variables used in the calculation of the final ‘long.label’, ‘short.label’,

and sort.key$
19 STRINGS { last.long.label last.long.year.label following.year.tag.label}

These are the fields used. Not every entry type uses every field; the ones which are not ignored are listed with the definition of each entry type. Any fields in the bib database not on this list will be ignored by this bibliography style.

20 ENTRY

21 { address
22  annotation
23  author
24  bookauthor
25  booktitle
26  chapter
27  edition
28  editor
29  faddress
30  flanguage
31  fpublisher
32  ftitle
33  fyear
34  howpublished
35  illustrator
36  institution
37  journal
38  key
39  month
40  note
41  number
42  oaddress
43  opublisher
44  organization
45  oyear
46  pages
47  publisher
48  school
49  series
50  seriesedition
51  title
52  translator
53  type
54  volume
55  year
56  yearcomp

57 }

Integer entry variables. See the discussion of queue functions below and the string entry variable ‘printed.name’.

58 { printed.name.type

59 }

String entry variables.

‘long.label’ and ‘short.label’ hold the strings that will appear in the running text of a citation, preceding ‘year.label’ + ‘year.tag.label’. ‘long.label’ is used by the regular citing commands; ‘short.label’ is used by the short citing commands

(\shortcite etc.).
60 { long.label short.label

‘year.label’ is a string representing the date (the actual ‘’ year field can be longer than 4 characters and have special characters in it, such as the \noop often given in certain examples as a tweak to sort order). ‘year.tag.label’ is either empty or a lower-case letter. The catenation of the two is used in the running text of the citation.

61  year.label year.tag.label

‘long.label’ and ‘short.label’ contain a formatted version of one of the entry’s fields (such as ‘’ author, ‘’ editor, etc.), and is used in the running text at the location of the user’s \cite command. ‘printed.name’ contains the string that appears at the front of the bibliography entry. Usually it is going to be the same thing as ‘long.label’, but sometimes we will be labelling it as a duplicate entry.

‘printed.name’ is going to be set in the sorting passes done before the entrytype functions are called, so, e.g., you might find some “make” functions branching on what’s in ‘printed.name’.

62  printed.name

63 }

stop with the \end{document}.

This bibstyle does not distinguish between sentences and blocks. There are no sentences here, only blocks. In the achicago package, \newblock adds a very small and rubber amount of horizontal space, relaxing somewhat the \frenchspacing in effect. I have not used ‘new.sentence in this bibstyle, but I have not removed the capability of telling the distinction between sentences and blocks. Someone would need to merely put ‘new.sentence somewhere in the bibstyle here, probably replacing a ‘new.block, and then define \newblock to do something more interesting than it presently does. Someone wishing to take advantage of the distinction ought to review all relevant functions carefully.

init.state.constants This should be called before any processing begins.

64 FUNCTION {init.state.consts}
65 { #0 'before.all :=
66 #1 'mid.sentence :=
67 #2 'after.sentence :=
68 #3 'after.block :=

69 }

3.2 Macros

These are required macro abbreviations. The user can redefine them. The billions of macros for obscure journals in all the standard styles just waste memory. They can be added by the user as needed.

70 MACRO {jan} {"January"}
71 MACRO {feb} {"February"}
72 MACRO {mar} {"March"}
73 MACRO {apr} {"April"}
74 MACRO {may} {"May"}
75 MACRO {jun} {"June"}

76 MACRO {jul} {"July"}
77 MACRO {aug} {"August"}
78 MACRO {sep} {"September"}
79 MACRO {oct} {"October"}
80 MACRO {nov} {"November"}
81 MACRO {dec} {"December"}

3.3 Basic logic

not and or
82 FUNCTION {not}
83 {   { #0

84 }

85  { #1

86 }

87 if$

88 }

89

90 FUNCTION {and}
91 {   'skip$
92  { pop$
93  #0

94 }

95 if$

96 }

97

98 FUNCTION {or}
99 {   { pop$

100 #1 101 }

102  'skip$                     %$
103 if$

104 }

3.4 Punctuation and abbreviations

comma space tie colon etal unidentified These definitions are made so that later functions are easier to read. The reason these are functions not macros is so the user cannot change them. They need to come before the output functions.

105 FUNCTION {comma}
106 { ","

107 }

108

109 FUNCTION {colon}
110 { ":"

111 }

112

113 FUNCTION {space}

114 { " "

115 }

116

117 FUNCTION {tie}
118 { "~"

119 }

120

121 FUNCTION {etal}
122 { " et~al."

123 }

Below, we need to be able to set a string to a value which would never be generated from any string in a bibliography database. It’s safe to assume that this string is such a one.

124 FUNCTION {unidentified}
125 { "HiGHlY*Peco@lIEr"

126 }

3.5 Output functions

The ‘output’ function automatically handles interunit punctuation.

A call to ‘output’ should be made with a string and a punctuation mark on the stack. The punctuation mark is what should precede the string in the case the string begins in the middle of a sentence. Strings which begin sentences are preceded by periods. Strings which begin a new block are preceded by periods and the \newblock command. (It makes no sense for a string to begin at the end of a sentence.)

Calls to ‘output.internal’ leave the string on the stack until the next time ’output.internal’ is called, when it will get printed out. The function ‘output.begin’ puts an empty string on the stack, and should be called before beginning any series of calls to ‘output’. ‘output.end’ cleans up and should be called at the conclusion of a series of calls to ‘output’.

output.begin Prepare for a series of calls to ‘output’. Put an empty string on the stack and set ’output.state to ‘before.all’.

127 FUNCTION{output.begin}
128 { ""
129 before.all 'output.state :=

130 }

output.end Conclude a series of calls to ‘output’. Simply calls write$.

131 FUNCTION {output.end}
132 { write$

133 }

new.block Begin a new block.

134 FUNCTION {new.block}
135 { output.state before.all =

136  'skip$
137  { after.block 'output.state :=

138 }

139 if$

140 }

new.sentence Begin a new sentence. FIX: hmm, wouldn’t we want to put a TeX command here for intersentence space now? Why do we mess with the usual spacefactor for periods anyway? When in bibliogrphies are the usual TeX rules not going to be what we want, and give too much space after a period? answer: when a lowercase letter followed by period, in e.g. sec. 2 and so on. often bibstyle will put tie there, but sometimes not I think, so need to have that be not an intersentence space. well, if i start using sentences instead of blocks, I think perhaps doing the same hskip after a sentence with a new command \newsentence perhaps as in \newblock would be the right thing to do.

141 FUNCTION {new.sentence}
142 { output.state before.all = output.state after.block = or
143  'skip$
144  { after.sentence 'output.state :=

145 }

146 if$

147 }

output.internal \stackpunct string/entry(nonnull)null

148 FUNCTION {output.internal}
149 { 's :=     % s := string/entry(nonnull)
150 space * 't :=     % t := punctuation + space
151 output.state mid.sentence =
152  { t * write$

153 }

154  { output.state after.block =
155  { add.period$ write$
156  newline$
157  "\newblock " write$

158 }

159  { output.state before.all =
160  'write$

Final case is ‘output.state’ = ‘after.sentence’, which means we just add a period, but no newline or \newblock command.

161  { add.period$ space * write$

162 }

163  if$

164 }

165  if$

We are now mid-sentence, whether we were before or not.

166  mid.sentence 'output.state :=

167 }

168 if$

The actual string given to ‘output.internal’ is left on the stack here for next time we call ‘output.internal’ or ‘output.end’, whichever comes next.

169 s 170 }

output \stackstring/entry puncteither null OR punct string/entry(nonnull)

Check if string/entry is null. If it’s null do nothing. If it’s nonempty call ‘output.internal’ on it with the given punctuation.

171 FUNCTION {output}
172 { swap$ duplicate$ empty$
173  { pop$
174  pop$

175 }

176  'output.internal
177 if$

178 }

output.bibitem The optional argument to \bibitem will be made the definition of \b @foo where foo is the cite$ key. \b @foo will be executed by all the various citing commands with a definition of \SCcite that is appropriate to each citing command.

The thebibliography environment actually ignores the optional argument to \bibitem. The environment sets the formatting so that the first part of the main entry hangs out to the left and looks like a label.

The unexpandable protection is necessary, instead of a simple protection, in order to work with newclude’s tag option.

I guess we use write$ for each part instead of catenating them and using a single write$ in case the catenation gets longer than BibTEX can handle. I don’t know, this is how I found it. It seems like catenation and a single call to write$ would be faster.

179 FUNCTION {output.bibitem}
180 { newline$
181 "\bibitem[\UnexpandableProtect\SCcite{" write$
182 long.label write$
183 "}{" write$
184 short.label write$
185 "}{" write$
186 year.label year.tag.label * write$
187 "}]{" write$
188 cite$ write$
189 "}" write$
190 newline$            %$

191 }

3.6 Simple auxiliary functions

begin.entry Begin an entry.

192 FUNCTION {begin.entry}

193 { output.begin
194 output.bibitem

195 }

This “make” function needs to precede ‘finish.entry’; see later for a general discussion of “make” functions.

make.annotation Annotations can be omitted simply by nullifying the SCannotation environment. The package or class file should take care of this.

196 FUNCTION {make.annotation}
197 { annotation empty$
198  { ""

199 }

200  { "\begin{SCannotation}"
201  annotation *
202  "\end{SCannotation}" *

203 }

204 if$

205 }

finish.entry Conclude an entry. \stackstringnull

206 FUNCTION {finish.entry}
207 { add.period$
208 output.end
209 newline$
210 make.annotation write$            %$

211

212 }

field.or.null \stackfield literalfield contents or null string if the field was missing

213 FUNCTION {field.or.null}
214 { duplicate$ empty$
215  { pop$

216 "" 217 }

218  'skip$
219 if$                         %$

220 }

italicize \stackstring or entrystring

Italicize the top string on the stack and provide italic corrections. Null goes to null. We want to explicitly italicize rather than use \emph, since semantic emphasis might be indicated in some other way in the document, e.g., slanted type.

221 FUNCTION {italicize}
222 { duplicate$ empty$
223  { pop$

224 "" 225 }

226  { "\textitswitch{" swap$ * "}" *

227 }

228 if$                           %$

229 }

parenthesize \stackstring-or-entry:S”(” + S + ”)”

230 FUnCTION {parenthesize}
231 { duplicate$ empty$
232  { pop$

233 "" 234 }

235  { "(" swap$ * ")" *

236 }

237 if$                           %$

238 }

entry.clip \stackstringstring FIX: btxhak.dvi does not tell us the difference between entry.max$ and global.max$. Guess: global.max$ is the biggest thing BibTEX can deal with internally; entry.max$ is the biggest thing that can be sent to a

write$.

entry.clip \stackstring-Sstring-S-possibly-shortened

Clips a string down to entry.max$, if it’s longer.

239 FUNCTION {entry.clip}
240 { #1 entry.max$ substring$

241 }

check \stackS warningS Issues warning if the string is empty.

242 FUNCTION {check}
243 { 't :=
244 duplicate$ empty$
245  { "empty " t * " in " * cite$ * warning$

246 }

247  'skip$
248 if$

249 }

multi.page.p  \stacknothing#0 or #1

Set ’t to ‘’ pages. Look at ’t character by character for a hypen, comma, or plus. If we find one, return true immediately; else return false.

250 FUNCTION {multi.page.p}
251 { pages 't :=
252 #0 'j :=
253  { j not
254  t empty$ not
255  and

256 }

257  { t #1 #1 substring$
258  duplicate$ "-" =

259  swap$ duplicate$ "," =
260  swap$ "+" =
261  or or
262  { #1 'j :=

263 }

264  { t #2 global.max$ substring$ 't :=

265 }

266  if$

267 }

268 while$

269 j 270 }

n.dashify  \stackstringstring

Make single-dashes into double-dashes.

271 FUNCTION {n.dashify}
272 { 't :=

273 ""

274  { t empty$ not

275 }

276  { t #1 #1 substring$ "-" =
277  { t #1 #2 substring$ "--" = not
278  { "--" *
279  t #2 global.max$ substring$ 't :=

280 }

281  {   { t #1 #1 substring$ "-" =

282 }

283 { "-" *
284 t #2 global.max$ substring$ 't :=

285 }

286  while$

287 }

288 if$

289 }

290  { t #1 #1 substring$ *
291  t #2 global.max$ substring$ 't :=

292 }

293  if$

294 }

295 while$                  %$

296 }

tie.or.space.connect  \stackstring stringstring

If the second string has less than 5 characters, the two are tied together, otherwise they are catenated with a space between them.

297 FUNCTION {tie.or.space.connect}
298 { duplicate$ text.length$ #5 <
299  { tie

300 }

301  { space

302 }

303 if$
304 swap$ * *

305 }

either.or.check \stackmsg fieldnull If field is not empty, give a warning appropriate for saying this field and an already-existing field can’t be both used in the same entry.

306 FUNCTION {either.or.check}
307 { empty$
308  'pop$
309  { "can't use both " swap$ * " fields in " * cite$ * warning$

310 }

311 if$

312 }

3.7 Queue functions

Queue functions expect a string on the stack. If it is empty, and the field for which the function is named is noempty, the string will be replaced with that field. (e.g., ‘author.q’ will put ‘’ author on the stack if ‘’ author is nonempty and the ‘author.q’ was passed an empty string). A chain of queue functions must begin with something on the stack, adn will leave the first nonempty field named in the chain on the stack.

Queue functions also increment an integer variable, ’j, whenever they are passed an empty string. At the end of the queue, ’j tells us which function in the queue contributed the string that results at the end of the queue, starting with zero for the first queue function after ‘start.a.q’. This value will be stored in the integer entry variable ‘printed.name.type’. In order for this to work, queue functions must always be called in the same order: ‘’ author (’#0) ‘’ editor (‘#1’), ‘’ organization (‘#2’), and ‘’ key (‘#3’). For entry types where a certain field should not appear in the queue, use ‘blank.q’ in its place in the order.

Queues are used the above way to generate the string entry variables ‘long.label’, ‘short.label’, and ‘printed.name’, but queue functions are sometimes used individually in an entry-type function, without interest in the value of ’j.

‘start.a.q’ must begin a queue. It initializes ’j and passes an empty string to the first queue function.

start.a.q
313 FUNCTION {start.a.q}
314 { #-1 'j :=

315 "" 316 }

inc.j
key.q
organization.q
editor.q
author.q
blank.q

317 FUNCTION {inc.j}
318 { j #1 + 'j :=

319 }

321 FUNCTION {key.q}
322 { duplicate$ empty$
323  { pop$
324  key field.or.null
325  inc.j

326 }

327  'skip$
328 if$

329 }

330

331 FUNCTION {organization.q}
332 { duplicate$ empty$
333  { pop$
334  organization field.or.null
335  inc.j

336 }

337  'skip$
338 if$

339 }

340

341 FUNCTION {editor.q}
342 { duplicate$ empty$
343  { pop$
344  editor field.or.null
345  inc.j

346 }

347  'skip$
348 if$

349 }

350

351 FUNCTION {author.q}
352 { duplicate$ empty$
353  { pop$
354  author field.or.null
355  inc.j

356 }

357  'skip$
358 if$

359 }

360

361 FUNCTION {blank.q}
362 { duplicate$ empty$
363  'inc.j
364  'skip$
365 if$

366 }

check.q \stackstring-S warning-stringstring-S This should be the final queue command, though it is not a true queue command, since an extra warning string should be on the top of the stack above the string that has passed along the queue. The warning string should be an English disjunctive list of the queue commands that have come before it, so the user can tell which fields are missing. For example “author, organization, or key” if the queue has been ‘author.q’ ’blank.q’ ‘organization.q’ ‘key.q’.

If the queue string is empty, ‘check.q’ issues the warning and puts on the stack an emergency string of the first three letters of the L^{A}TEX key (i.e., cite$), which should allow BibTEX to proceed.

367 FUNCTION {check.q}
368 { 't :=
369 duplicate$ empty$
370  { pop$
371  cite$ #1 #3 substring$ 'u :=
372  "Need " t * " in " * cite$ * "; using:  " * u * warning$

373 u 374 }

375  'skip$
376 if$

377 }

3.8 Format queue functions

Format queue functions may be inserted into a queue with queue functions. If they find an empty string on the stack, they do nothing. If they find a nonempty string, they modify it.

There are 4 cases for the labels, where n is some constant:

one author  Foo
one to n  Foo, Bar, and Baz
use of “and others” Foo, Bar et al.
more than n  Foo et al.

format.short.label.names.q If the string on the stack is empty, do nothing, leaving the empty string there. If passed a nonempty string, format it to produce something appropriate for ‘short.label’.

378 FUNCTION {format.short.label.names.q}
379 { duplicate$ empty$
380  'skip$                            %$ for emacs
381  { 's :=
382  s num.names$ 'numnames :=       %$ for emacs
383  s #1 "{vv~}{ll}" format.name$   %$ for emacs

This constant is the number of authors over which we use ”et al.”. If you change this constant, change some logic below.

384  numnames #2 >
385 { etal *

386 }

387 { numnames #1 =

388  'skip$
389  { s #2 "{ff}{vv}{ll}{ jj}" format.name$ "others" =

Above, I’m trying a simplification that I think should work. OLD: snameptr"{ff}{vv}{ll}{jj}"format.

 name$"others"=
390  { etal *

391 }

392  { " and " * s #2 "{vv~}{ll}" format.name$ *

393 }

394  if$

395 }

396 if$

397 }

398  if$

399 }

400 if$                       %$

401 }

If you want the short label to have 3 (or more) names in it, use this function. The constant is 3 here.

  FUNCTION {format.short.label.names.q}
  { duplicate$ empty$                    %$
      'skip$                             %$
      { 's :=
        s num.names$ 'numnames :=        %$
        s #1 "{vv~}{ll}" format.name$    %$
  %    \end{macrocode}
  %  This constant is the number of authors over which we use "et~al.".
  %    \begin{macrocode}
        numnames #3 >
          { etal *
          }
          { numnames #1 - 'namesleft :=
            #2 'nameptr :=
              { namesleft #0 >
              }
              { nameptr numnames =      % i.e, nameptr points to the last name
                  { s nameptr "{ff}{vv}{ll}{ jj}" format.name$ "others" =
                      { etal *
                      }
                      { numnames #2 >
                          { comma *
                          }
                          'skip
                        if$
                        " and " * s nameptr "{vv~}{ll}" format.name$ *
                      }
                    if$
                  }
                  { ", " * s nameptr "{vv~}{ll}" format.name$ *

                  }
                if$
                nameptr #1 + 'nameptr :=
                namesleft #1 - 'namesleft :=
              }
            while$             %$
          }
        if$
      }
    if$                        %$
  }

format.long.label.names.q If the string on the stack is empty, do nothing, leaving the empty string there. If it is nonempty, format it to produce something appropriate for ‘long.label’.

402 FUNCTION {format.long.label.names.q}
403 { duplicate$ empty$
404  'skip$
405  { 's :=
406  #1 'nameptr :=               % nameptr = 1;
407  s num.names$ 'numnames :=    % numnames = num.names$(s);
408  numnames 'namesleft :=
409  % begin a WHILE loop
410  { namesleft #0 >

411 }

412  { s nameptr "{vv~}{ll}" format.name$ 't :=  % get the next name
413  nameptr #1 >
414  { namesleft #1 >
415  { comma * space * t *

416 }

417  { numnames #2 >
418  { comma *

419 }

420  'skip$
421  if$
422  t "others" =
423  { etal *

424 }

425  { " and " * t *

426 }

427  if$

428 }

429  if$

430 } 431 't

432  if$
433  nameptr #1 + 'nameptr :=          % nameptr += 1;
434  namesleft #1 - 'namesleft :=      % namesleft -= 1;

435 }

436  while$

438 if$                    %$

439 }

3.9 Format names functions

The format functions modify a string on the stack. They make no warnings, produce no output, and place no spaces or punctuation before or after their string, just modify it somehow.

format.names.lastfirst Format a name list. Output first author last name first, and subsequent authors with first name first.

440 FUNCTION {format.names.lastfirst}
441 { 's :=
442 #1 'nameptr :=               % nameptr = 1;
443 s num.names$ 'numnames :=    % numnames = num.name$(s);
444 numnames 'namesleft :=
445 % begin WHILE loop
446  { namesleft #0 >

447 }

448  { nameptr #1 =
449  { s nameptr "{vv~}{ll}{, jj}{, ff}" format.name$ 't :=

450 }

451  { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't :=

452 }

453  if$
454  nameptr #1 >
455  { namesleft #1 >
456  { comma * space * t *

457 }

458  { numnames #2 >
459  { comma *

460 }

461  'skip$
462  if$
463  t "others" =
464  { etal *

465 }

466  { " and " * t *

467 }

468  if$

469 }

470  if$

471 } 472 't

473  if$
474  nameptr #1 + 'nameptr :=          % nameptr += 1;
475  namesleft #1 - 'namesleft :=      % namesleft =- 1;

476 }

477 while$                      %$

478 }

format.names.firstfirst Same as ‘format.names.lastfirst’ but all names are first name first.

479 FUNCTION {format.names.firstfirst}
480 { 's :=
481 #1 'nameptr :=               % nameptr = 1;
482 s num.names$ 'numnames :=    % numnames = num.name$(s);
483 numnames 'namesleft :=
484  { namesleft #0 >

485 }

486  { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't :=
487  nameptr #1 >
488  { namesleft #1 >
489  { comma * space * t *

490 }

491  { numnames #2 >
492  { comma *

493 }

494  'skip$
495  if$
496  t "others" =
497  { etal *

498 }

499  { " and " * t *

500 }

501  if$

502 }

503  if$

504 } 505 't

506  if$
507  nameptr #1 + 'nameptr :=          % nameptr += 1;
508  namesleft #1 - 'namesleft :=      % namesleft =- 1;

509 }

510 while$                      %$

511 }

3.10 Make functions

Make functions expect nothing on the stack, and leave one string there. Any side effects of setting global variables are noted in the comments. If a nonempty string cannot be made due to lack of the right fields, we simply leave an empty on on the stack.

Notice that ‘make.annotation’ has to be above, before ‘finish.entry’.

make.edition We use some logic here because we want to use the ‘’ seriesedition for the ‘’ edition in certain cases.

512 FUNCTION {make.edition}

513 { edition empty$
514  { seriesedition empty$ not series field.or.null title field.or.null = and
515  { seriesedition

516 }

517  { ""

518 }

519  if$                  %$

520 }

521  { edition

522 }

523 if$                      %$

524 }

make.year.month make.year.nomonth Make a year string. We don’t we use ‘year.label’ because that string is sterilized to make it appropriate for use in running text in citations (and for sorting I think); in the bibliography entry, we can be a little more lax, accepting special characters, and text that is not simply four numerals.

525 FUNCTION {make.year.month}
526 { year empty$
527  { ""

528 }

529  { year year.tag.label *
530 month empty$
531 'skip$
532 { comma * space * month * }
533 if$

534 }

535  if$                    %$

536 }

537 FUNCTION {make.year.nomonth}
538 { year empty$              %$
539  { ""

540 }

541  { year year.tag.label *

542 }

543 if$                      %$

544 }

make.year.or.oyear.month Gives a year string. If ‘’ oyear is empty, calls ‘make.year.month’. Warns in almostcertainly-erroneous case of an ‘’ oyear without a ‘’ year.

545 FUNCTION {make.year.or.oyear.month}
546 { oyear empty$
547  { make.year.month

548 }

549  { year empty$
550  { "oyear without year in " cite$ * warning$

551 }

552  'skip$
553  if$

554  oyear year.tag.label *
555  month empty$
556  'skip$
557 { comma * space * month *

558 }

559  if$

560 }

561 if$

562 }

make.authors This is for clarity below. Really we could say ‘printed.name’.

563 FUNCTION {make.authors}
564 { printed.name empty$
565  { "empty `printed.name' in `make.authors in " cite$ * warning$

566 "" 567 }

568  { printed.name

569 }

570 if$

571 }

make.editors.primary This is for when the editor is the leading thing in the bibentry. If ‘printed.name’ is empty, we put an empty string on the stack. If ‘printed.name’ is nonempty and differs from ‘’ editor then ‘printed.name’ is a duplicate editor. We do want to follow this by a suffix. If they’re the same, then we format the ‘’ editor field, add a suffix, and leave it on the stack.

FIX: I don’t think ‘printed.name’ should ever be empty.

572 FUNCTION {make.editors.primary}
573 { printed.name empty$
574  { "empty `printed.name' in `make.editors.primary' in " cite$ * warning$

575 "" 576 }

577  { printed.name
578  editor num.names$ #1 >
579  { ",~eds." *

580 }

581  { ",~ed." *

582 }

583  if$

584 }

585 if$

586 }

make.editors.secondary This is for making editors’ names that follow a title.

587 FUNCTION {make.editors.secondary}
588 { editor empty$
589  { ""

590 }

591  { output.state after.sentence =

592  output.state after.block = or
593  { "E" }
594  { "e" }
595  if$
596  "dited by " * editor format.names.firstfirst *

597 }

598 if$                      %$

599 }

make.bookauthors.secondary This is for making authors’ names that follow a title. When we use this, we are only going to be interested in the ‘’ bookauthor.

600 FUNCTION {make.bookauthors.secondary}
601 { bookauthor empty$
602  { ""

603 }

604  { output.state after.sentence =
605  output.state after.block = or
606  { "B" }
607  { "b" }
608  if$
609  "y " * bookauthor format.names.firstfirst *

610 }

611 if$

612 }

make.translators make.illustrators Translators and illustrators always follow the title.

613 FUNCTION {make.translators}
614 { translator empty$
615  { ""

616 }

617  { output.state after.sentence =
618  output.state after.block = or
619  { "T" }
620  { "t" }
621  if$
622  "ranslated " *
623  flanguage empty$
624  'skip$
625  { "from the " * flanguage * space *

626 }

627  if$
628  "by " * translator format.names.firstfirst *

629 }

630 if$

631 }

632

633 FUNCTION {make.illustrators}
634 { illustrator empty$
635  { ""

636 }

637  { output.state after.sentence =
638  output.state after.block = or
639  { "I" }
640  { "i" }
641  if$
642  "llustrated by " * illustrator format.names.firstfirst *

643 }

644 if$

645 }

make.booktitle.ital
make.title.ital
make.as.ftitle.ital

646 FUNCTION {make.title.ital}
647 { title field.or.null italicize

648 }

649

650 FUNCTION {make.booktitle.ital}
651 { booktitle field.or.null italicize

652 }

653

654 FUNCTION {make.as.ftitle.ital}
655 { ftitle empty$
656  { ""

657 }

658  { "as " ftitle italicize *

659 }

660 if$

661 }

make.title.doublequote Put the title in quotes on the stack. \Wrapquotes is going to properly handle punctuation that follows the closing quotation marks by sucking it inside the quotes.

662 FUNCTION {make.title.doublequote}
663 { title empty$
664  { ""

665 } 666 {

667  "\Wrapquotes{" title * "}" *

668 }

669 if$

670 }

671 FUNCTION {make.pages}
672 { pages empty$
673  { ""

674 }

675  { multi.page.p
676  { pages n.dashify

677 }

678  { pages

679 }

680  if$

681 }

682 if$                      %$

683 }

make.vol.series.num.month.pages For articles, the number of cases to handle these fields is very large: 32 to do it properly! These cases could perhaps be collapsed, but it is going to be much easier to read here and to maintain if we do it brutishly by elaborating each case. The only exception I’ve made is when two adjacent leaves are very similar. The way I’ve laid out this funciton here, adjacent leaves are going to be the pairs of cases with and without a nonempty ‘’ pages.

There are 5 relevant fields, each of which can be empty or not (2^{5} = 32). In the comments below, I mark each case with a series of 1 to 5 letters represent the cases where that field is nonempty: V for ‘’ volume, S for ‘’ series, N for ‘’ number, M for ‘’ month, and P for ‘’ pages. Thus, the case marked with the comment SMP is the one where the ‘’ series, ‘’ month, and ‘’ pages fields are nonempty, and ‘’ volume and ‘’ number are empty.

FIX: when I use ‘make.pages’ in this function, it’s slightly inefficient, since ‘make.pages’ does a check for empty pages which is unnecessary here.

FIX: this does not yet handle entries with nonempty ‘’ series.

FIX: go through and combine adjacent leaves.

We could really put the punctuation that should precede this unit right at the beginning of the string we’re making here, but let’s conform better to the conventions and put this in the scratch variable ’u instead. I don’t think this function will ever get called at any time other than mid-sentence, after the journal title, but who knows. So a call to this function should look like:

   make.vol.series.num.month.pages u output

Remember that when ‘output.internal’ writes the punctuation, it adds a space following, so it is unnecessary to begin the string this function returns with a space. (Occasionally below, we want (and produce) a colon followed by no space; we can do this because we are directly creating this string, not using the ‘output’ routine.)

684 FUNCTION {make.vol.series.num.month.pages}
685 { volume empty$
686  { series empty$
687  { number empty$
688  { month empty$
689 { pages empty$
690  % none of VSNMP
691  { space 'u :=

692 "" 693 } 694 % P

695  { comma 'u :=
696  multi.page.p
697  { "pp." pages n.dashify

698 }

699  { "p." pages

700 }

701  if$
702  tie.or.space.connect

703 }

704 if$

705 }

706 { pages empty$

707 % M

708  { comma 'u :=
709  month

710 }

711  % MP
712  { comma 'u :=
713  month comma * space * make.pages *

714 }

715 if$

716 }

717  if$

718 }

719  { month empty$
720 { pages empty$

721 % N

722  { comma 'u :=
723  "no." number tie.or.space.connect

724 }

725  % NP
726  { comma 'u :=
727  "no." number colon * make.pages * tie.or.space.connect

728 }

729 if$

730 }

731 { pages empty$
732  % NM
733  { comma 'u :=
734  "no." number tie.or.space.connect
735  space * month parenthesize *

736 }

737  % NMP
738  { comma 'u :=
739  "no." number tie.or.space.connect
740  space * month parenthesize *
741  colon * space * make.pages *

742 }

743 if$

744 }

745  if$

746 }

747 if$

748 }

749  { number empty$
750  { month empty$
751 { pages empty$

752 % S 753 { 754 }

755  % SP

756 { 757 }

758 if$

759 }

760 { pages empty$
761  % SM

762 { 763 }

764  % SMP

765 { 766 }

767 if$

768 }

769  if$

770 }

771  { month empty$
772 { pages empty$
773  % SN

774 { 775 }

776  % SNP

777 { 778 }

779 if$

780 }

781 { pages empty$
782  % SNP

783 { 784 }

785  % SNMP

786 { 787 }

788 if$

789 }

790  if$

791 }

792 if$

793 }

794  if$

795 }

796  { series empty$
797  { number empty$
798  { month empty$

799 { pages empty$

800 % V

801  { comma 'u :=
802  "vol." volume tie.or.space.connect

803 }

804  % VP
805  { space 'u :=
806  volume colon * make.pages *

807 }

808 if$

809 }

810 { pages empty$
811  % VM
812  { comma 'u :=
813  "vol." volume tie.or.space.connect
814  space * month parenthesize *

815 }

816  % VMP
817  { space 'u :=
818  volume space *
819  month parenthesize * colon * space * make.pages *

820 }

821 if$

822 }

823  if$

824 }

825  { month empty$
826 { pages empty$
827  % VN
828  { space 'u :=
829  volume ", no." number tie.or.space.connect *

830 }

831  % VNP
832  { space 'u :=
833  volume space *
834  number parenthesize * colon * space * make.pages *

835 }

836 if$

837 }

838 { pages empty$
839  % VNM
840  { space 'u :=
841  volume ", no." number tie.or.space.connect *
842  space * month parenthesize *

843 }

844  % VNMP
845  { space 'u :=
846  volume space * number parenthesize * colon * space *
847  make.pages * space * month parenthesize *

848 }

849 if$

850 }

851  if$

852 }

853 if$

854 }

855  { number empty$
856  { month empty$
857 { pages empty$
858  % VS

859 { 860 }

861  % VSP

862 { 863 }

864 if$

865 }

866 { pages empty$
867  % VSM

868 { 869 }

870  % VSMP

871 { 872 }

873 if$

874 }

875  if$

876 }

877  { month empty$
878 { pages empty$
879  % VSN

880 { 881 }

882  % VSNP

883 { 884 }

885 if$

886 }

887 { pages empty$
888  % VSNM

889 { 890 }

891  % VSNMP

892 { 893 }

894 if$

895 }

896  if$

897 }

898 if$

900  if$

901 }

902 if$                         %$

903 }

make.crossref
904 FUNCTION {make.crossref}
905 { "\citeNP{" crossref * "}" *

906 }

output.series.number Outputs the number with appropriate capitalization. Warns if we also have nonempty ‘’ seriesedition.

907 FUNCTION {output.series.number}
908 { series empty$
909  { number empty$
910  { ""

911 }

912  { "Can't use `number' without `series' in " cite$ * warning$

913 "" 914 }

915  if$

916 }

917  { number empty$
918 { series
919  seriesedition empty$
920  'skip$
921  { comma output
922  new.block
923  seriesedition

924 }

925  if$

926 }

927 { series space *
928  "no." *
929 number tie.or.space.connect
930 "number and seriesedition" seriesedition either.or.check

931 }

932  if$

933 }

934 if$                        %$
935 comma output

936 }

output.volume.series The ‘’ series is not required.

937 FUNCTION {output.volume.series}
938 { volume empty$
939  { ""

940 }

941  { "Volume" volume tie.or.space.connect
942  series empty$
943  'skip$
944  { " of " * series italicize *
945  seriesedition empty$
946  'skip$
947  { comma output
948  new.block
949  seriesedition

950 }

951  if$

952 }

953  if$
954  "volume and number" number either.or.check

955 }

956 if$
957 comma output

958 }

make.chapter.of To say for example “Part 3” instead of “Chapter 3”, put “Part” into the ‘’ type field, and the number and the preposition into the ‘’ chapter field, e.g., “3 of”. A tie is automatically put in between the ‘’ type field and the ‘’ chapter field in this case. We can’t make a decision based on the length of the ‘’ chapter field when it’s going to contain the preposition.

OK, putting the preposition in the chapter field doesn’t work out when you do crossreferences. So let’s try “of” as a general preposition.

959 FUNCTION {make.chapter.of}
960 { chapter empty$
961  { ""

962 }

963  { type empty$
964  { "Chapter"

965 }

966  { type "t" change.case$

967 }

968  if$
969  chapter tie.or.space.connect
970  " of " *

971 }

972 if$

973 }

make.chapter
974 FUNCTION {make.chapter}
975 { chapter empty$
976  { ""

977 }

978  { type empty$
979  { "Chapter"

981  { type "t" change.case$

982 }

983  if$
984  chapter tie.or.space.connect

985 }

986 if$

987 }

make.number.tr
988 FUNCTION {make.number.tr}
989 { type empty$
990  { "Technical Report"

991 }

992  { type "t" change.case$

993 }

994 if$
995 number empty$
996  'skip$
997  { number tie.or.space.connect

998 }

999 if$

1000 }

3.11 Label functions

calc.labels set.printed.name.type Sets ‘short.label’, ‘long.label’ and ‘year.label’ from the original database. Should only need to be called once. We also set ‘printed.name.type’ to an appropriate value, but we do not set ‘printed.name’, that’s done later.

Warning: If this logic with regard to what is used as the printed name does not correspond to what’s actually implemented in each entry-type function, I think you are going to get some weird errors, like ‘make.author’ and ‘make.editors’ are not going to give you what you expect.

1001 FUNCTION {set.printed.name.type}
1002 { j 'printed.name.type :=

1003 }

1004

1005 FUNCTION {calc.labels}
1006 { type$ "book" =
1007 type$ "inbook" =

1008 or

1009  { start.a.q
1010  author.q
1011  editor.q
1012  format.short.label.names.q
1013  blank.q
1014  key.q
1015  set.printed.name.type

1016  "author, editor, or key to make `short.label'" check.q

1017 }

1018  { type$ "proceedings" =
1019  { start.a.q
1020  blank.q
1021  editor.q
1022  format.short.label.names.q
1023  organization.q
1024  key.q
1025  set.printed.name.type
1026  "editor, organization, or key to make `short.label'" check.q

1027 }

1028  { type$ "manual" =
1029  { start.a.q
1030  author.q
1031  format.short.label.names.q
1032  blank.q
1033  organization.q
1034  key.q
1035  set.printed.name.type
1036  "author, organization, or key to make `short.label'" check.q

1037 }

Default case. FIX: have I got all the right cases covered?

1038  { start.a.q
1039  author.q
1040  format.short.label.names.q
1041  blank.q
1042  blank.q
1043  key.q
1044  set.printed.name.type
1045  "author or key to make `short.label'" check.q

1046 } 1047 if$ 1048 } 1049 if$ 1050 } 1051 if$

1052 'short.label :=

1053

1054 start.a.q
1055 author.q
1056 editor.q
1057 format.long.label.names.q
1058 organization.q
1059 key.q
1060 "author, editor, organiztion, or key to make `long.label'" check.q
1061 'long.label :=

1062

1063 oyear empty$

1064  { year

1065 }

1066  { oyear

1067 } 1068 if$

1069 field.or.null purify$ #-1 #4 substring$             %$
1070 'year.label :=

1071 }

3.12 Entry types

3.12.1 Article

article An article from a journal or magazine. Required: ‘’ author, ‘’ title, ‘’ journal, ‘’

year. Optional: ‘’ volume, ‘’ number, ‘’ pages, ‘’ month, ‘’ note. Title quoted.

FIX: this is not true any more. hmm, which warnings to give? Warnings given for no ‘’ pages; no ‘’ volume or ‘’ number; and ‘’ number but no ‘’ volume. It’s a drag, but the latter warning should remain there. The reason is that this bibstyle will produce a very misleading entry if you mistakenly omit the volume and give a number for a journal.

FIX: this is the old def of article, following output of title through end of crossref conditional.

      volume field.or.null
%    \end{macrocode}
%  One item (the volume) is on the stack now. Each of the four cases in the
%  following conditionals should leave a second item on the stack.
%    \begin{macrocode}
      number empty$
        { volume empty$
            { "empty volume and number in " cite$ * warning$
              ""
            }
            { colon
            }
          if$
        }
        { volume empty$
            { "number but no volume in " cite$ * warning$
%    \end{macrocode}
% FIX when a journal has no volume but a number, there should be a comma after
% the journal, a space and then ``no. n:ppp''.  But we have already said
% ``space output'' after the journal name, no doubt.  So we have to make this
% decision earlier.
%    \begin{macrocode}
              "\unskip, no." tie * number * colon *
            }
            { "(" number * ")" * tie.or.space.connect
%    \end{macrocode}

   % FIX: I don't think this is handling the case without pages right -- there
   % will be a colon with nothing following.  I could save either colon or
   % colon+space in a variable, and slap it on before the pages if there are pages
   % and leave it off if there are no pages.  Hmm, no: see chicago:14, item 15.215
   % for how to handle missing pages.  Not easy.
   %
   % Now there's just one item (the volume) on the stack, so leave the following
   % as the second item.
   %    \begin{macrocode}
                 colon space *
               }
             if$
           }
         if$ *
         make.pages "pages" check *
         space output
         month parenthesize space output

A crossref from an article says “See this, pages xxx.” See the Chicago Manual 16:107 for this peculiar bit about the spacing after the colon.

1072 FUNCTION {article}
1073 { begin.entry
1074 make.authors "author" check key.q space output
1075 new.block
1076 make.year.nomonth "year" check space output
1077 new.block
1078 make.title.doublequote "title" check space output
1079 new.block
1080 crossref empty$
1081  { journal italicize "journal" check space output
1082  series empty$
1083  'skip$

FIX: take this out when we finish ‘make.vol.series...’

1084  { "ARTICLE NOT SET UP FOR NONEMPTY SERIES! in " cite$ * warning$

1085 } 1086 if$

1087  volume empty$ number empty$ month empty$ pages empty$ and and and
1088  { "empty volume, number, month, and pages in " cite$ * warning$

1089 }

1090  'skip$

1091 if$

See definition of ‘make.vol.series.num.month.pages’ for why we set ’u in that function.

1092  make.vol.series.num.month.pages u output

1093 }

Unusual case where you are probably citing one journal issue and numerous articles within it, so you have one entry for the issue itself, and others referring to it.

Perhaps there are other cases, but I think what’s right here is to give the crossref and only the pages.

1094  { "In " make.crossref * space output
1095  make.pages "pages" check comma output

1096 } 1097 if$

1098 new.block
1099 note space output
1100 finish.entry

1101 }

3.12.2 Book

book
1102 FUNCTION {book}
1103 { begin.entry
1104 author empty$
1105  { make.editors.primary "author and editor" check comma output

1106 }

1107  { make.authors comma output

1108 } 1109 if$

1110 new.block
1111 make.year.or.oyear.month "year" check comma output
1112 new.block
1113 make.title.ital "title" check comma output
1114 new.block
1115 make.edition comma output
1116 new.block
1117 crossref empty$
1118  { volume empty$
1119  { output.series.number

1120 }

1121  { output.volume.series

1122 } 1123 if$

1124  editor empty$ author empty$ or
1125  'skip$
1126  { new.block
1127  make.editors.secondary comma output

1128 } 1129 if$

1130  new.block
1131  make.translators comma output
1132  new.block
1133  make.illustrators comma output
1134  new.block
1135  oyear empty$
1136  { address comma output

1137  publisher "publisher" check colon output

1138 }

1139  { oaddress comma output
1140  opublisher "opublisher" check colon output
1141  new.block
1142  "Reprint" comma output
1143  address field.or.null comma output
1144  publisher "publisher" check
1145  address empty$
1146  { comma

1147 }

1148  { colon

1149 } 1150 if$

1151  output
1152  year "year" check comma output

1153 } 1154 if$ 1155 }

1156  { volume empty$
1157  { "In "

1158 }

1159  { "Volume" volume tie.or.space.connect
1160  " of " *

1161 } 1162 if$

1163  make.crossref * comma output

1164 } 1165 if$

1166 new.block
1167 yearcomp empty$
1168  'skip$
1169  { "Composed in " yearcomp *
1170  comma output
1171  new.block

1172 } 1173 if$

The ‘’ fyear must be nonempty to get any information about the first-published edition,

The ‘’ fpublisher, ‘’ faddress, and ‘’ flanguage can be empty in any combination. They are all ignored if ‘’ fyear is empty, except for possibly ‘’ flanguage, which will be given with the translator if ‘’ translator is nonempty.

1174 fyear empty$
1175  'skip$
1176  { "First published "
1177  translator empty$ flanguage empty$ not and
1178  { "in " * flanguage * space *

1179 }

1180  'skip$

1181 if$

If ‘’ ftitle is empty, there will be a harmless? extra space.

1182  make.as.ftitle.ital * space output
1183  faddress empty$ fpublisher empty$ not and
1184  { "by "

1185 }

1186  { "in "

1187 } 1188 if$

1189  space output
1190  faddress space output
1191  fpublisher
1192  faddress empty$
1193  { space

1194 }

1195  { colon

1196 } 1197 if$

1198  output
1199  fyear
1200  faddress empty$ fpublisher empty$ and
1201  { space

1202 }

1203  { comma

1204 }

1205  if$ output
1206  new.block

1207 }

1208 if$                      %$
1209 note comma output
1210 finish.entry

1211 }

3.12.3 Inbook

inbook The Chicago Manual doesn’t seem to recognize parts of a book without their own titles. We make up our own version, moving the chapter and page information from the end of the ‘’ booktitle to the front.

1212 FUNCTION {inbook}
1213 { begin.entry
1214 author empty$
1215  { make.editors.primary "author and editor" check comma output

1216 }

1217  { make.authors comma output

1218 } 1219 if$

1220 new.block
1221 make.year.or.oyear.month "year" check comma output
1222 new.block

We store an extra copy of ‘make.chapter.of’ in the variable ‘u’ here, so that we know whether to put pages or not after the ‘’ title sentence (with editors, and so on).

1223 crossref empty$
1224  { make.chapter.of duplicate$ 'u :=
1225  duplicate$ empty$
1226  { pop$
1227  pages empty$
1228  { "empty chapter, type, and pages in " cite$ * warning$
1229  "In "

1230 }

1231  { "Pages " make.pages * " in " *

1232 } 1233 if$ 1234 }

1235  'skip$

1236 if$

1237  comma output
1238  make.title.ital "title" check space output
1239  make.bookauthors.secondary comma output
1240  make.editors.secondary comma output
1241  volume empty$
1242  { output.series.number

1243 }

1244  { output.volume.series

1245 } 1246 if$

1247  make.edition comma output

Here we branch again on the contents of ‘make.chapter.of’. If it is not empty, then we go ahead and ‘make.pages’. If it is empty we don’t, because this means that if ‘’ pages were given, they have already been put earlier.

1248  u empty$
1249  'skip$
1250  { make.pages comma output

1251 } 1252 if$

1253  new.block
1254  make.translators comma output
1255  new.block
1256  make.illustrators comma output
1257  new.block
1258  oyear empty$
1259  { address comma output
1260  publisher "publisher" check colon output

1261 }

1262  { oaddress comma output
1263  opublisher "opublisher" check colon output
1264  new.block
1265  "Reprint" comma output

1266  address field.or.null comma output
1267  publisher "publisher" check
1268  address empty$
1269  { comma

1270 }

1271  { colon

1272 } 1273 if$

1274  output
1275  year "year" check comma output

1276 } 1277 if$ 1278 }

1279  { "In " make.crossref * comma output
1280  make.chapter comma output
1281  make.pages comma output
1282  chapter empty$ pages empty$ and
1283  { "empty chapter and pages in " cite$ * warning$

1284 }

1285  'skip$

1286 if$ 1287 } 1288 if$

1289 new.block
1290 note comma output
1291 finish.entry

1292 }

3.12.4 Incollection

incollection
1293 FUNCTION {incollection}
1294 { begin.entry
1295 author empty$
1296  { make.editors.primary "author and editor" check space output

1297 }

1298  { make.authors space output

1299 } 1300 if$

1301 new.block
1302 make.year.or.oyear.month "year" check space output
1303 new.block
1304 make.title.doublequote "title" check space output
1305 new.block
1306 crossref empty$
1307  { make.chapter.of duplicate$ empty$
1308  { pop$
1309  "In "

1310 }

1311  'skip$

1312 if$

1313  space output
1314  make.booktitle.ital "booktitle" check space output
1315  make.bookauthors.secondary comma output
1316  make.editors.secondary comma output
1317  volume empty$
1318  { output.series.number

1319 }

1320  { output.volume.series

1321 } 1322 if$

1323  make.edition comma output
1324 % FIX: do I need this?  I don't for copleston:cusa
1325 %      make.year.or.oyear.month "year" check comma output
1326  make.pages comma output
1327  chapter empty$ type empty$ and pages empty$ and
1328  { "empty chapter, type, and pages in " cite$ * warning$

1329 }

1330  'skip$

1331 if$

1332  new.block
1333  make.translators space output
1334  new.block
1335  make.illustrators space output
1336  new.block
1337  oyear empty$
1338  { address space output
1339  publisher "publisher" check colon output

1340 }

1341  { oaddress space output
1342  opublisher "opublisher" check colon output
1343  new.block
1344  "Reprint" comma output
1345  address comma output
1346  publisher "publisher" check
1347  address empty$
1348  { comma

1349 }

1350  { colon

1351 } 1352 if$

1353  output
1354  year comma output

1355 } 1356 if$ 1357 }

1358  { new.block
1359  "In " make.crossref * space output
1360  make.chapter comma output

1361  make.pages comma output
1362  chapter empty$ pages empty$ and
1363  { "empty chapter and pages in " cite$ * warning$

1364 }

1365  'skip$

1366 if$ 1367 } 1368 if$

1369 new.block
1370 note space output
1371 finish.entry

1372 }

3.12.5 Majorthesis

format.thesis thesis phdthesis mastersthesis majorthesis minorthesis Theses are all set in the same way, with a different type name. An entry with entry type ‘thesis’ ought to have a nonempty “” type. The other four alias entry types simply supply an explicit value for “” type, which are overridden by a nonempty “” type.

FIX The “” type field should be hooked into a variable and done with the babel package: \majorthesisname and so on.

1373 FUNCTION {format.thesis}
1374 { 'u :=
1375 begin.entry
1376 make.authors "author" check key.q space output
1377 new.block
1378 make.year.month "year" check space output
1379 new.block
1380 make.title.doublequote "title" check space output
1381 new.block
1382 u "type" check space output
1383 school "school" check comma output
1384 address comma output
1385 new.block
1386 note space output
1387 finish.entry

1388 }

1389 FUNCTION {thesis}
1390 { type field.or.null format.thesis

1391 }

1392 FUNCTION{mastersthesis}
1393 { type empty$
1394  { "Master's thesis"

1395 }

1396  { type

1397 } 1398 if$

1399 format.thesis

1400 }

1401 FUNCTION {minorthesis}
1402 { mastersthesis

1403 }

1404 FUNCTION {phdthesis}
1405 { type empty$
1406  { "Ph.D.~diss."

1407 }

1408  { type

1409 } 1410 if$

1411 format.thesis

1412 }

1413 FUNCTION {majorthesis}
1414 { phdthesis

1415 }

3.12.6 Manual

manual Technical documentation. Required: ‘’ title (italicized). Optional: ‘’ author or ‘’ organization or ‘’ key, ‘’ address, ‘’ edition, ‘’ month, ‘’ year, ‘’ note. Logic: lead item is first nonempty field of ‘’ author, ‘’ organization, and ‘’ key. Subsequent nonempty fields in that list are ignored.

1416 FUNCTION {manual}
1417 { begin.entry
1418 printed.name space output
1419 new.block
1420 make.year.month space output
1421 new.block
1422 make.title.ital "title" check comma output
1423 new.block
1424 make.edition comma output
1425 new.block
1426 address space output
1427 organization colon output
1428 new.block
1429 note space output
1430 finish.entry

1431 }

3.12.7 Booklet

booklet A work that is printed and bound, but without a named publisher or sponsoring institution. Required: ‘’ title. Optional: ‘’ author, ‘’ howpublished, ‘’ address, ‘’ month, ‘’ year, ‘’ note. Title is quoted. ‘’ key used if ‘’ author is empty.

1432 FUNCTION {booklet}
1433 { begin.entry
1434 make.authors key.q comma output
1435 new.block
1436 make.year.month space output

1437 new.block
1438 make.title.doublequote "title" check comma output
1439 new.block
1440 howpublished space output
1441 address comma output
1442 new.block
1443 note space output
1444 finish.entry

1445 }

3.12.8 Inproceedings

inproceedings conference An article in a conference proceedings. Required: ‘’ author, ‘’ title, ‘’ booktitle, ‘’ year. Optional: ‘’ editor, ‘’ volume or ‘’ number, ‘’ series, ‘’ pages, ‘’ address, ‘’ month, ‘’ organization, ‘’ publisher, ‘’ note. ‘’ key used where ‘’ author empty. Title quoted.

1446 FUNCTION {inproceedings}
1447 { begin.entry
1448 make.authors "author" check key.q space output
1449 new.block
1450 make.year.month "year" check space output
1451 new.block
1452 make.title.doublequote "title" check space output
1453 new.block
1454 crossref empty$
1455  { make.editors.secondary space output
1456  make.booktitle.ital "booktitle" check comma output
1457  volume empty$
1458  { output.series.number

1459 }

1460  { output.volume.series

1461 } 1462 if$

1463  make.edition comma output
1464  new.block
1465  organization space output
1466  address space output
1467  publisher colon output
1468  make.pages comma output

1469 }

1470  { "In " make.crossref * space output
1471  make.chapter comma output
1472  make.pages comma output
1473  chapter empty$ pages empty$ and
1474  { "empty chapter and pages in " cite$ * warning$

1475 }

1476  'skip$

1477 if$ 1478 } 1479 if$

1480 new.block
1481 note space output
1482 finish.entry

1483 }

1484 FUNCTION {conference}
1485 { inproceedings

1486 }

3.12.9 Proceedings

proceedings The proceedings of a conference. Required: ‘’ title, ‘’ year. Optional: ‘’ editor, ‘’ volume or ‘’ number, ‘’ series, ‘’ address, ‘’ month, ‘’ organization, ‘’ publisher, ‘’ note. ‘’ key used for empty ‘’ editor. Title italicized.

1487 FUNCTION {proceedings}
1488 { begin.entry
1489 make.editors.primary key.q space output
1490 new.block
1491 make.year.month "year" check space output
1492 new.block
1493 make.title.ital "title" check comma output
1494 new.block
1495 make.edition comma output
1496 new.block
1497 volume empty$
1498  { output.series.number

1499 }

1500  { output.volume.series

1501 } 1502 if$

1503 new.block
1504 organization space output
1505 address comma output
1506 publisher colon output
1507 new.block
1508 note comma output
1509 finish.entry

1510 }

3.12.10 Misc

Required: none. The rest are optional. First ‘’ author (‘’ key if empty). Then ‘’ year with ‘’ month. Then ‘’ title, quoted. Then ‘’ howpublished. Then ‘’ note.

1511 FUNCTION {misc}
1512 { begin.entry
1513 make.authors key.q space output
1514 new.block
1515 make.year.month space output
1516 new.block

1517 title space output
1518 new.block
1519 howpublished comma output
1520 new.block
1521 note space output
1522 finish.entry

1523 }

3.12.11 Techreport

techreport A report published by a school or other institution, usually numbered within a series. Required: ‘’ author, ‘’ title, ‘’ institution, ‘’ year. Optional: ‘’ type, ‘’ number, ‘’ address, ‘’ month, ‘’ note. ‘’ key used when ‘’ author empty.

1524 FUNCTION {techreport}
1525 { begin.entry
1526 make.authors "author" check key.q comma output
1527 new.block
1528 make.year.month "year" check comma output
1529 new.block
1530 make.title.doublequote "title" check comma output
1531 new.block
1532 make.number.tr comma output
1533 institution "institution" check comma output
1534 address comma output
1535 new.block
1536 note comma output
1537 finish.entry

1538 }

3.12.12 Unpublished

unpublished A document having an author and title, but not formally published. Required: ‘’ author, ‘’ title, ‘’ note. Optional: ‘’ month, ‘’ year. Uses ‘’ key for no ‘’ author.

1539 FUNCTION {unpublished}
1540 { begin.entry
1541 make.authors "author" check key.q space output
1542 new.block
1543 make.year.month space output
1544 new.block
1545 make.title.doublequote "title" check space output
1546 new.block
1547 note "note" check space output
1548 finish.entry

1549 }

3.12.13 Default

default.type
1550 FUNCTION {default.type}

1551 { misc }

3.13 Sorting

sortify Prepare the string on the stack for sort comparison \stack⟨string⟩⟨string⟩

1552 FUNCTION {sortify}
1553 { purify$
1554 "l" change.case$

1555 }

chop.word \stack⟨string⟩ ⟨num⟩ ⟨string⟩⟨string⟩

  % stack: S n T
  %
  % if S = substr(1,n,T)
  %    then substr(n+1, max, T)
  %    else S
  %
  % if T begins with S, then chop it off the beginning of T.
  %
1556 FUNCTION {chop.word}
1557 { 't :=
1558 'len :=
1559 t #1 len substring$ =
1560  { t len #1 + global.max$ substring$

1561 } 1562 't 1563 if$ 1564 }

sort.format.names \stack⟨list of names⟩⟨list of names suitable for sorting⟩

1565 FUNCTION {sort.format.names}
1566 { 's :=
1567 #1 'nameptr :=

1568 ""

1569 s num.names$ 'numnames :=
1570 numnames 'namesleft :=
1571  { namesleft #0 >

1572 }

1573  { nameptr #1 >
1574  { "   " *

1575 }

1576  'skip$

1577 if$

1578  s nameptr "{vv{ } }{ll{ }}{  f{ }}{  jj{ }}" format.name$ 't :=
1579  nameptr numnames = t "others" = and
1580  { etal *

1581 }

1582  { t sortify *

1583 } 1584 if$

1585  nameptr #1 + 'nameptr :=
1586  namesleft #1 - 'namesleft :=

1587 }

1588 while$

1589 }

make.title.sort FIX: explain why we do all this.

1590 FUNCTION {make.title.sort}
1591 { title field.or.null
1592 't :=
1593 "A " #2
1594  "An " #3
1595  "The " #4 t chop.word
1596  chop.word
1597 chop.word
1598 sortify
1599 #1 global.max$ substring$              %$

1600 }

make.author.sort Put an author-sort string on the stack. If there is no ‘’ author field, use the ‘’ key field.

1601 FUNCTION {make.author.sort}
1602 { author empty$
1603  { key empty$
1604  { "to sort, need author or key in " cite$ * warning$

1605 "" 1606 }

1607  { key sortify

1608 } 1609 if$ 1610 }

1611  { author sort.format.names

1612 }

1613 if$                      %$

1614 }

make.author.editor.sort Put an author-or-editor sort string on the stack. If there is no ‘’ author field, use the ‘’ editor field. If there is no ‘’ editor field either, use the ‘’ key field.

1615 FUNCTION {make.author.editor.sort}
1616 { author empty$
1617  { editor empty$
1618  { key empty$
1619  { "to sort, need author, editor, or key in " cite$ * warning$

1620 "" 1621 }

1622  { key sortify

1624 if$ 1625 }

1626  { editor sort.format.names

1627 } 1628 if$ 1629 }

1630  { author sort.format.names

1631 }

1632 if$                  %$

1633 }

make.author.organization.sort Put an author-or-organization-sort string on the stack. If there is no ‘’ author field, use the ‘’ organization field. If there is no ‘’ organization field either, use the ‘’ key field.

1634 FUNCTION {make.author.organization.sort}
1635 { author empty$
1636  { organization empty$
1637  { key empty$
1638  { "to sort, need author, organization, or key in " cite$ * warning$

1639 "" 1640 }

1641  { key sortify

1642 } 1643 if$ 1644 }

1645  { organization sortify

1646 } 1647 if$ 1648 }

1649  { author sort.format.names

1650 } 1651 if$ 1652 }

make.editor.organization.sort Put an editor-or-organization-sort string on the stack. If there is no ‘’ editor field, use the ‘’ organization field. If there is no ‘’ organization field either, use the ‘’ key field.

1653 FUNCTION {make.editor.organization.sort}
1654 { editor empty$
1655  { organization empty$
1656  { key empty$
1657  { "to sort, need editor, organization, or key in " cite$ * warning$

1658 "" 1659 }

1660  { key sortify

1661 } 1662 if$ 1663 }

1664  { organization sortify

1665 } 1666 if$ 1667 }

1668  { editor sort.format.names

1669 }

1670 if$                %$

1671 }

presort To do: confirm this with the manual, 15.65.

Set labels ‘long.label’, ‘short.label’, and ‘year.label’. Set sort.key$ to ‘long.label’ + ‘year.label’ + X + title, where X is a string involving the author, editor, organization, or key, depending on the entry type.

Note that ‘year.tag.label’ is not set yet.

FIX: Why do we insert four spaces between those elements?

1672 FUNCTION {presort}
1673 { calc.labels
1674 long.label sortify

1675 " " *

1676 year.label *

1677 " " *

1678 type$ "book" = type$ "inbook" = or
1679  'make.author.editor.sort
1680  { type$ "proceedings" =
1681  'make.editor.organization.sort
1682  { type$ "manual" =
1683  'make.author.organization.sort
1684  % default case:
1685  'make.author.sort

1686 if$ 1687 } 1688 if$ 1689 } 1690 if$ 1691 * 1692 " " *

1693 make.title.sort *
1694 entry.clip
1695 'sort.key$ :=

1696 }

initialize.extra.label.stuff
1697 FUNCTION {initialize.label.vars}
1698 { unidentified 'last.long.label :=
1699 unidentified 'last.long.year.label :=
1700 "" 'following.year.tag.label :=
1701 #0 'last.year.tag.num :=

1702 }

forward.pass make.printed.name Pass through the new list, comparing current entry’s ‘long.label’ plus ‘year.label’ to the last entry’s, stored in the global variable ‘last.long.year.label’. If they are the same, increment ‘last.year.tag.num’ and set ‘year.tag.label’ to the nth lowercase letter, where n is the global integer variable ‘last.year.tag.num’. If they are not the same, set ‘last.long.year.label’ to the current ‘long.label’ plus ‘year.label’, set ‘year.tag.label’ to nil, and set ‘last.year.tag.num’ to 0.

After this pass, ‘year.tag.label’ will be blank for all first entries, and “b,” “c,” etc. for second entries, third entries, and so on. The “a”’s will be added in the right places by the reverse pass.

We also use the forward pass to set the proper value of ‘printed.name’. Let S be the value of the field indicated by ‘printed.name.type’. Then ‘printed name will be \SCduplicate{S} whenever the current ‘long.label’ is the same as the global variable ‘last.long.label’, or simply a copy of S otherwise.

1703 FUNCTION {make.printed.name}
1704 { printed.name.type #0 =
1705  { author field.or.null format.names.lastfirst

1706 }

1707  { printed.name.type #1 =
1708  { editor field.or.null format.names.lastfirst

1709 }

1710  { printed.name.type #2 =
1711  { organization field.or.null

1712 }

1713  { key field.or.null

1714 } 1715 if$ 1716 } 1717 if$ 1718 } 1719 if$ 1720 }

1721

1722 FUNCTION {forward.pass}
1723 { long.label year.label * entry.clip
1724 duplicate$ last.long.year.label =
1725  % same as last entry
1726  { pop$
1727  last.year.tag.num #1 + 'last.year.tag.num :=
1728  last.year.tag.num int.to.chr$ 'year.tag.label :=

1729 }

1730  % different from last entry
1731  { "a" chr.to.int$ 'last.year.tag.num :=
1732  "" 'year.tag.label :=
1733  'last.long.year.label :=

1734 } 1735 if$

FIX: Handle repeated ‘’ organization and ‘’ key.

Above, we compared the current entry’s ‘long.label’ plus ‘year.label’ to the last entry’s. Here we just compare ‘long.label’. FIX: Hmm, I don’t think ‘long.label’ is ever going to be ‘unidentified’ here. I’m commenting out this logic.

1736 long.label entry.clip
1737 %  duplicate$ unidentified =
1738 %    { pop$
1739 %      unidentified 'last.long.label :=
1740 %      make.printed.name 'printed.name :=

1741 % } 1742 % {

1743  duplicate$ last.long.label =
1744  { pop$
1745  "\SCduplicate{" make.printed.name * "}" *

1746 }

1747  { 'last.long.label :=
1748  make.printed.name

1749 } 1750 if$

1751  'printed.name :=

1752 % }

1753 %  if$

1754 }

reverse.pass Pass through the entries in reverse order. Set current ‘year.tag.label’ to “a” on entries that precede ones with “b”s. Set ‘following.year.tag.label’ to the current ‘year.tag.label’.

1755 FUNCTION {reverse.pass}
1756 { following.year.tag.label "b" =
1757  { "a" 'year.tag.label :=

1758 }

1759  'skip$

1760 if$

1761 year.tag.label 'following.year.tag.label :=

1762 }

begin.bib end.bib These two functions are called to begin and end the entire bibliography.

1763 FUNCTION {begin.bib}
1764 { preamble$ empty$
1765  'skip$
1766  { preamble$ write$ newline$

1767 } 1768 if$

1769 "\begin{thebibliography}{}" write$ newline$

1770 }

1771 FUNCTION {end.bib}
1772 { newline$
1773 "\end{thebibliography}" write$ newline$

1774 }

3.14 Actions

This is the main subroutine which calls all the others.

1775 READ

1776

1777 EXECUTE {init.state.consts}

1778

1779 ITERATE {presort}
1780 SORT

1781

1782 EXECUTE {initialize.label.vars}

1783

1784 ITERATE {forward.pass}
1785 REVERSE {reverse.pass}

1786

1787 EXECUTE {begin.bib}
1788 ITERATE {call.type$}
1789 EXECUTE {end.bib}

References

Abrams, M. H. 1973. Natural Supernaturalism: Tradition and Revolution in Romantic Literature. New York: W. W. Norton and Co.

Abrams, M. H. et al., eds. 1979. The Norton Anthology of English Literature. 4th ed. 2 vols. New York: W. W. Norton and Co.

Acheson, James. 1979. “Murphy’s Metaphysics.” Journal of Beckett Studies, no. 5:9–23.

Ackerley, Chris. 1997. “ ‘Do Not Despair’: Samuel Beckett and Robert Greene.” Journal of Beckett Studies, n.s., 6 (1): 119–24.

Alighieri, Dante. 1961. The Purgatorio. Translated from the Italian by John Ciardi. New York: New American Library.

. 1970. The Paradiso. Translated from the Italian by John Ciardi. New York: New American Library.

. 1984. Purgatorio: A Verse Translation. Bantam Classic ed. Volume 2 of The Divine Comedy. Translated from the Italian by Allen Mandelbaum. Illustrated by Barry Moser. New York: Bantam Books. Notes by Laury Magnus, Allen Mandelbaum, and Anthony Oldcorn, with Daniel Feldman.

Amiran, Eyal. 1993. Wandering and Home: Beckett’s Metaphysical Narrative. University Park: Pennsylvania State University Press.

Anspaugh, Kelly. 1996. “ ‘Faith, Hope, and—What Was It?’: Beckett Reading Joyce Reading Dante.” Journal of Beckett Studies, n.s., 5 (1–2): 19–38.

Bair, Deirdre. 1990. Samuel Beckett: A Biography. New York: Summit Books. First published in 1978 by Harcourt Brace Jovanovich (New York) and Jonathan Cape, but this edition does not appear, technically, to be a reprint.

Beckett, Samuel. 1954. Waiting for Godot. First Evergreen ed. Translated from the French by the author. New York: Grove Press. Reprint, New York: Grove Press, 1956. Composed in 1948. First published as En attendant Godot in 1952. Premiered in French in 1953, in English in 1955.

. 1956a, 7 April. Letter to Barney Rosset of Grove Press in the Special Collections of Syracuse University Library, Syracuse, New York.

. 1956b. Pages 108–19 in Yellow, Volume 10 of New American Library Mentor Books. New York: New American Library. First published (with minor differences) in Beckett 1972.

. 1972. More Pricks Than Kicks. New York: Grove Press. First published by Chatto and Windus, 1934.

. 1986. Happy Days: The Production Notebook of Samuel Beckett. Edited by James Knowlson. New York: Grove Press. First published in London: Faber and Faber, 1985.

. 1992a. Endgame: With a Revised Text. Volume 2 of The Theatrical Notebooks of Samuel Beckett. Edited by S. E. Gontarski. London: Faber and Faber.

. 1992b. Krapp’s Last Tape: With a Revised Text. Volume 3 of The Theatrical Notebooks of Samuel Beckett. Edited by James Knowlson. New York: Grove Press.

. 1994. Waiting for Godot: With a Revised Text. Volume 1 of The Theatrical Notebooks of Samuel Beckett. Edited by Dougald McMillan and James Knowlson. New York: Grove Press. First published in Great Britain: Faber and Faber, 1993.

. 1995. Samuel Beckett: The Complete Short Prose, 1929–1989. Edited by S. E. Gontarski. New York: Grove Press.

Blake, William. 1966. Blake’s Job: William Blake’s Illustrations of the Book of Job. Edited by S. Foster Damon. University Press of New England.

Bloom, Harold. 1973. The Anxiety of Influence: A Theory of Poetry. New York: Oxford University Press.

. 1988. “Introduction.” In Samuel Beckett’s Molloy, Malone Dies, The Unnamable, edited by Harold Bloom, Modern Critical Interpretations, 1–12. New York: Chelsea House Publishers.

Borges, Jorge Luis. 1963. Ficciones. Edited by Anthony Kerrigan. Translated from the Spanish by the editor et al. New York: Grove Weidenfeld. First published in Buenos Aires: Emecé Editores, 1956.

Brater, Enoch. 1989. Why Beckett. New York: Thames and Hudson.

Bryden, Mary. 1995. “Beckett and the Three Dantean Smiles.” Journal of Beckett Studies, n.s., 4 (2): 29–33.

. 1998. Samuel Beckett and the Idea of God. New York: St. Martin’s Press.

Buning, Marius. 1990. “Samuel Beckett’s Negative Way: Intimations of the Via Negativa in his Late Plays.” Chapter 9 of European Literature and Theology in the Twentieth Century: Ends of Time, edited by David Jasper and Colin Crowder, 129–42. New York: St. Martin’s Press.

Burrows, Rachel. 1989. “Interview with Rachel Burrows, Dublin, Bloomsday, 1982.” Journal of Beckett Studies, no. 11–12:6–15. Interviewed by S. E. Gontarski, Martha Feshenfeld, and Dougald McMillan.

Calder, John. 1979. “Review of Samuel Beckett: A Biography by Deirdre Bair (Jonathan Cape, 1978).” Journal of Beckett Studies, no. 4:74–79.

Carey, Phyllis. 1992. “Stephen Dedalus, Belacqua Shuah, and Dante’s Pietà.” In Carey and Jewinski 1992b, Chapter 8, 104–16.

Carey, Phyllis and Ed Jewinski. 1992a. “Introduction.” In Carey and Jewinski 1992b, xi–xviii.

, eds. 1992b. Re: Joyce’n Beckett. New York: Fordham University Press.

Carroll, John S. 1906. Prisoners of Hope: an Exposition of Dante’s Purgatorio. London: Hodder and Stoughton.

Cassedy, Steven. 1988. “Mathematics, Relationism, and the Rise of Modern Literary Aesthetics.” Journal of the History of Ideas 49 (1): 109–32.

Coetzee, J. M. 1972. “The Manuscript Revisions of Beckett’s Watt.” Journal of Modern Literature 2:472–80.

Cohn, Ruby, ed. 1975. Samuel Beckett: A Collection of Criticism. New York: McGraw-Hill.

. 1980. Just Play: Beckett’s Theater. Princeton: Princeton University Press.

Common Prayer. 1789. The Book of Common Prayer and Administration of the Sacraments and Other Rites and Ceremonies of the Church. New York. “This edition … was … reproduced from a certified edition … as adopted by the General Convention of 1928 and emended by subsequent Conventions.”

Connor, Steven. 1982. “Beckett’s Animals.” Journal of Beckett Studies, no. 8:29–44.

Copleston, Frederick. 1950. “The Pseudo-Dionysius.” Chapter 9 of Augustine to Scotus, Volume 2 of A History of Philosophy. 9 vols. in 3 books. Newman Press. Reprint, New York: Image Books, 1985.

. 1953. “Nicholas of Cusa.” Chapter 15 of Ockham to Suarez, Volume 3 of A History of Philosophy. 9 vols. in 3 books. Newman Press. Reprint, New York: Image Books, 1985.

Cronin, Anthony. 1996. Samuel Beckett: The Last Modernist. London: Harper-Collins.

Culik, Hugh. 1983. “The Place of Watt in Beckett’s Development.” Modern Fiction Studies 29 (1): 57–71 (spring).

. 1993. “Mathematics as Metaphor: Samuel Beckett and and the Esthetics of Incompleteness.” Papers on Language & Literature 29 (2): 131–51 (spring).

Davies, Paul. 1994. The Ideal Real: Beckett’s Fiction and Imagination. Associated University Presses.

Dearlove, J. E. 1977. “ ‘Last Images’: Samuel Beckett’s Residual Fiction.” Journal of Modern Literature 6 (1): 104–126 (February).

Donne, John. 1980. Paradoxes and Problems. Edited by Helen Peters. Oxford: Clarendon Press.

Driver, Tom F. 1961. “Beckett by the Madeleine.” The Columbia University Forum 4 (3): 21–25 (summer).

Eliot, George. 1984. Middlemarch. New York: Random House.

Ellis, Reuben J. 1989. “ ‘Matrix of Surds’: Heisenberg’s Algebra in Beckett’s Murphy.” Papers on Language & Literature 25 (1): 120–23 (winter).

Ellmann, Richard. 1982. James Joyce. New and Rev. ed. New York: Oxford University Press. First published in 1959.

Ellmann, Richard, Robert O’Clair, et al., eds. 1988. Norton Anthology of Modern Poetry. 2d ed. New York: W. W. Norton and Co.

Empson, William. 1966. Seven Types of Ambiguity. 3d ed. New York: New Directions.

Euclid. 1952. The Thirteen Books of Euclid’s Elements. Volume 11 of Great Books of the Western World. Translated by Sir Thomas L. Heath. Chicago: Encylopaedia Britannica.

Farrow, Anthony. 1991. Early Beckett: Art and Allusion in More Pricks Than Kicks and Murphy. Troy, New York: Whitston Publishing Company.

Federman, Raymond and John Fletcher. 1970. Samuel Beckett: His Works and His Critics; An Essay in Bibliography. Berkeley: University of California Press.

Fergusson, Francis. 1953. Dante’s Drama of the Mind: A Modern Reading of the Purgatorio. Princeton University Press.

Fletcher, John. 1967. Samuel Beckett’s Art. London: Chatto and Windus.

Flexner, Stuart Berg et al., eds. 1987. The Random House Dictionary of the English Language. 2d ed. New York: Random House.

Freud, Sigmund. 1961. Beyond the Pleasure Principle. Edited by James Strachey. Translated from the German by James Strachey. New York: Liveright. Reprint, New York: W. W. Norton and Co., 1990. First published in 1920. On p. xxxvii: “The present translation is a corrected reprint of the Standard Edition version” (i.e., English translation of 1955).

Frye, Northrop. 1957. “Anatomy of Criticism.” In Criticism: The Major Texts, edited by Walter Jackson Bate, Enl. ed., 609–25. San Diego: Harcourt Brace Jovanovich.

Gardner, Martin. 1979. Chapter 10 of Cyclic Numbers, 111–22. New York: Alfred A. Knopf.

Gascoigne, George. 1907. The Posies. Volume 1 of The Complete Works of George Gascoigne. 2 vols. Edited by John W. Cunliffe. Grosse Pointe, Michigan: Scholarly Press. Reprint, Cambridge: Cambridge University Press, 1969.

Gates, David. 1996. “He Couldn’t Go On, He Went On.” The New York Times Book Review, 26 May, 4.

Gleitman, Henry. 1986. Psychology. 2d ed. New York: W. W. Norton and Co.

Gontarski, S. E., ed. 1985. The Intent of Undoing in Samuel Beckett’s Dramatic Texts. Bloomington: Indiana University Press.

Gove, Philip Babcock et al., eds. 1993. Webster’s Third New International Dictionary of the English Language, Unabridged: A Merriam-Webster. Springfield, Massachusetts: Merriam-Webster.

Green, David. 1994. “A Note on Augustine’s Thieves.” Journal of Beckett Studies, n.s., 3 (2): 77–78.

1996. “Beckett’s Dream: More Niente than Bel.” Journal of Beckett Studies, n.s., 5 (1–2): 67–80.

Greene, Robert. n.d. [1881–86]. “The Repentance of Robert Greene.” In The Life and Complete Works in Prose and Verse of Robert Greene, edited by Alexander B. Grosart, Volume 12 of Huth Library, 15 vols., 151–88. London and Aylesbury: printed for private circulation. Reprint, New York: Russell and Russell, 1964.

Gregory, Richard L., ed. 1987. The Oxford Companion to the Mind. Oxford: Oxford University Press.

Harper, George Mills. 1992. “Review of The Irish Beckett by John P. Harrington (Syracuse: Syracuse University Press, 1991).” Journal of Beckett Studies, n.s., 2 (1): 131–34.

Harrington, John P. 1992. “A Note on Malone Dies and Local Phenomena.” Journal of Beckett Studies, n.s., 1 (1–2): 141–43.

Harvey, Lawrence E. 1970. Samuel Beckett: Poet and Critic. Princeton: Princeton University Press.

Heraclitus. 1970. The Cosmic Fragments. Edited by G. S. Kirk. Cambridge: Cambridge University Press.

Hill, Geoffrey. 1989. “A Pharisee to Pharisees: Reflections on Vaughan’s ‘The Night.’ ” English 38 (summer): 97–113.

Hobson, Harold. 1956. “Samuel Beckett, Dramatist of the Year.” International Theater Annual, no. 1:153–55.

Hopkins, Gerard Manley. 1953. Poems and Prose. Edited by W. H. Gardner. PenGuin Books.

Iser, Wolfgang. 1985. “The Pattern of Negativity in Beckett’s Prose.” In Samuel Beckett, edited by Harold Bloom, Modern Critical Views, 125–36. New York: Chelsea House Publishers.

Israel, Calvin. 1979. “Review of Samuel Beckett: A Biography by Deirdre Bair (New York: Harcourt Brace Jovanovich, 1978).” Journal of Beckett Studies, no. 4:80–85.

James, William. 1890. The Principles of Psychology. 2 vols. New York: Henry Holt and Co. Reprint, New York: Dover Publications, 1950.

Jewinski, Ed. 1992. “James Joyce and Samuel Beckett: From Epiphany to Anti-Epiphany.” In Carey and Jewinski 1992b, Chapter 11, 160–74.

Johnson, Mark. 1987. The Body in the Mind: The Bodily Basis of Meaning, Imagination, and Reason. Chicago: University of Chicago Press.

Jones, Anthony. 1981. “The French Murphy: From ‘rare bird’ to ‘cancre.’ ” Journal of Beckett Studies, no. 6:37–50.

Joyce, James. 1939. Finnegans Wake. New York: PenGuin Books.

. 1968. Dubliners. Rev. ed. Viking. Reprint, New York: Penguin Books, 1976. First published in 1916 (USA).

. 1986. Ulysses: The Corrected Text. First Vintage Books ed. Edited by Hans Walter Gabler et al. New York: Random House. First published in 1922.

. 1993. A Portrait of the Artist as a Young Man. Case Studies in Contemporary Criticism. Edited by R. B. Kershner. Boston: Bedord Books of St. Martin’s Press.

Juliet, Charles. 1995. Conversations with Samuel Beckett and Bram van Velde. Translated from the French by Janey Tucker. Academic Press Leiden. First published as Rencontres avec Bram van Velde and Rencontre avec Samuel Beckett in Montpellier: Editions Fata Morgana, 1973, 1986.

Jung, C. G. 1966. “Psychology and Literature.” In The Collected Works of C. G. Jung, edited by Sir Herbert Read, Michael Fordham, and Gerhard Adler, Volume 15, 84–105. Translated by R. F. C. Hull. Princeton University Press.

1968a. Analytical Psychology: Its Theory and Practice. The Tavistock Lectures. New York: Vintage Books.

1968b. “Lecture 3.” In Jung 1968a, 78–113.

Kennedy, Sighle. 1971. Murphy’s Bed: A Study of Real Sources and Sur-real Associations in Samuel Beckett’s First Novel. Lewisburg, Pennsylvania: Bucknell University Press.

Kenner, Hugh. 1968. Samuel Beckett: A Critical Study. New ed. Berkeley: University of California Press.

. 1975. “Shades of Syntax.” In Cohn 1975, 21–31.

Knowlson, James. 1996. Damned to Fame: The Life of Samuel Beckett. New York: Simon and Schuster.

Knowlson, James and John Pilling. 1979. Frescoes of the Skull: The Later Prose and Drama of Samuel Beckett. London: John Calder.

Koffka, K. 1935. Principles of Gestalt Psychology. New York: Harcourt, Brace and World.

Krance, Charles. 1983. “Odd Fizzles: Beckett and the Heavenly Sciences.” Bucknell Review 27 (2): 96–107.

Kroll, Jeri L. 1978. “Belacqua as Artist and Lover: ‘What a Misfortune.’ ” Journal of Beckett Studies, no. 3:10–39.

Lakoff, George. 1987. Women, Fire, and Dangerous Things: What Categories Reveal about the Mind. Chicago: University of Chicago Press.

Lakoff, George and Mark Johnson. 1980. Metaphors We Live By. Chicago: University of Chicago Press.

Lees, Heath. 1984. “Watt, Music, Tuning and Tonality.” Journal of Beckett Studies, no. 9:5–24.

Levy, Jay A. 1992. “Conversations with Samuel Beckett.” The American Scholar 61 (1): 124–31 (winter).

Linden, Stanton J. 1978. “Herbert and the Unveiling of Diana: Stanza Three of ‘Vanitie.’ ” The George Herbert Journal 1 (spring): 30–37.

Lippman, Carlee. 1993. “Proprioceptive Deficit in Beckett’s ‘Not I.’ ” Journal of Beckett Studies, n.s., 2 (2): 81–83.

Lodge, David. 1968. “Some Ping Understood.” Encounter 30 (2): 85–89 (February). Also in McCarthy 1986, 119–27.

Marculescu, Ileana. 1989. “Beckett and the Temptation of Solipsism: ‘Esse est aut percipere aut percipi.’ ” Journal of Beckett Studies, no. 11–12:53–64.

McCarthy, Patrick A., ed. 1986. Critical Essays on Samuel Beckett. Critical Essays on Modern British Literature. Boston: G. K. Hall and Co.

McHugh, Roland. 1991. Annotations to Finnegans Wake. Rev. ed. Baltimore: Johns Hopkins University Press.

McMillan, Dougald. 1975. “Samuel Beckett and the Visual Arts: The Embarrassment of Allegory.” In Cohn 1975, 121–35.

Melville, Herman. 1988. Moby-Dick, or The Whale. Volume 6 of The Writings of Herman Melville. 15 vols. Edited by Harrison Hayford, Hershel Parker, and G. Thomas Tanselle. Evanston, Illinois: Northwestern University Press and The Newberry Library.

Merwin, W. S. 1970. The Carrier of Ladders. New York: Atheneum.

Milton, John. 1998. “Paradise Lost.” In The Riverside Milton, edited by Roy Flannagan, 296–710. Boston: Houghton Mifflin.

Miskinis, Steven. 1996. “Enduring Recurrence: Samuel Beckett’s Nihilistic Poetics.” ELH 63 (4): 1047–1067 (winter).

Montgomery, Angela. 1991. “Beckett and Science: Watt and the Quantum Universe.” Comparative Criticism 13:171–81.

Mood, John J. 1971. “ ‘The Personal System’—Samuel Beckett’s Watt.” Publications of the Modern Language Association of America 86 (2): 255–65.

Morris, William, ed. 1981. The American Heritage Dictionary of the English Language. Boston: Houghton Mifflin.

Murphy, P. J., Werner Huber, Rolf Breuer, and Konrad Schoell. 1994. Critique of Beckett Criticism: A Guide to Research in English, French, and German. Literary Criticism in Perspective. Columbia: Camden House.

Niven, Ivan Morton, Herbert S. Zuckerman, and Hugh L. Montgomery. 1991. Theory of Numbers. 5th ed. New York: Wiley.

O’Brien, Eoin. 1986. The Beckett Country: Samuel Beckett’s Ireland. New York: Black Cat Press in association with Riverrun Press.

. 1992. “Foreward.” In Dream of Fair to middling Women, by Samuel Beckett, edited by Eoin O’Brien and Edith Fournier, xi–xx. New York: Arcade Publishing in association with Riverrun Press.

O’Hara, J. D. 1981. “Jung and the Narratives of Molloy.” Journal of Beckett Studies, no. 7:19–47.

1992. “Freud and the Narrative of Moran.” Journal of Beckett Studies, n.s., 2 (1): 47–63.

1994. “Beckett Backs Down: From Home to Murphy via Valéry.” Journal of Beckett Studies, n.s., 3 (2): 37–55.

Opie, Iona and Peter Opie, eds. 1952. The Oxford Dictionary of Nursery Rhymes. Corrected ed. Oxford: Clarendon Press. First published in 1951.

Ovid [Publius Ovidius Naso]. 1977. Ovid in Six Volumes. 3d ed. The Loeb Classical Library. Translated by Frank Justus Miller. Cambridge, Massachusetts: Harvard University Press. Composed in 0007.

Perkins, David, ed. 1967. English Romantic Writers. San Diego: Harcourt Brace Jovanovich.

Pilling, John, ed. 1994. The Cambridge Companion to Beckett. Cambridge: Cambridge University Press.

. 1998. Beckett Before Godot. Cambridge: Cambridge University Press.

Posnock, Ross. 1981. “Beckett, Valéry and Watt.” Journal of Beckett Studies, no. 6:51–62.

Preminger, Alex and T. V. F. Brogan, eds. 1993. The New Princeton Encyclopedia of Poetry and Poetics. Princeton: Princeton University Press.

Putnam, Samuel, Maida Castelhun Darton, George Reavey, and J. Bronowski, eds. 1931. France, Spain, England and Ireland. Volume 1 of The European Caravan: An Anthology of the New Spirit in European Literature. Brewer, Warren and Putnam. Subsequent volumes were not published.

Rabinovitz, Rubin. 1984. The Development of Samuel Beckett’s Fiction. Urbana: University of Illinois Press.

. 1989. “Beckett and Psychology.” Journal of Beckett Studies, no. 11– 12:65–77.

. 1992. Innovation in Samuel Beckett’s Fiction. Urbana: University of Illinois Press.

. 1995. “Samuel Beckett’s Revised Aphorisms.” Contemporary Literature 36 (2): 203–25.

Renaud, Madeleine. 1967. “Beckett the Magnificant.” In Beckett at 60: A Festschrift, edited by John Calder, 81–83. London: Calder and Boyars.

Ricks, Christopher B. 1993. Beckett’s Dying Words. The Clarendon Lectures, 1990. New York: Oxford University Press.

Rudin, Walter. 1976. Principles of Mathematical Analysis. 3d ed. International Series in Pure and Applied Mathematics. New York: McGraw-Hill. First published in 1953.

Sacks, Oliver W. 1985. The Man Who Mistook His Wife for a Hat and Other Clinical Tales. New York: Summit Books.

Scruton, Roger. 1983. “Beckett and the Cartesian Soul.” Chapter 16 of The Aesthetic Understanding: Essays in the Philosophy of Art and Culture, 222–41. Manchester, England: Carcanet Press.

Segrè, Elisabeth Bregman. 1977. “Style and Structure in Beckett’s Ping: That Something Itself .” Journal of Modern Literature 6 (1): 127–47 (February).

Sharp, Cecil J. 1932. English Folk Songs from the Southern Appalachians: Comprising 274 Songs and Ballads with 968 Tunes, Including 39 Tunes Contributed by Olive Dame Campbell. 2d and enl. ed. Edited by Maud Karpeles. London: Oxford University Press. First published in 1917.

Shenker, Israel. 1956. “Moody Man of Letters: A Portrait of Samuel Beckett, Author of the Puzzling ‘Waiting for Godot.’ ” New York Times, 6 May, sec. 2, pp. 1, 3.

Shimony, Abner. 1989. “The Conceptual Foundations of Quantum Mechanics.” In The New Physics, 373–95. Cambridge: Cambridge University Press.

Simpson, J. A. and E. S. C. Weiner, eds. 1989. The Oxford English Dictionary. 2d ed. New York: Oxford University Press.

Smith, Anna. 1993. “Proceeding by Aporia: Perception and Poetic Language in Samuel Beckett’s Worstward Ho.” Journal of Beckett Studies, n.s., 3 (1): 21–37.

Smith, Sir William and Sir John Lockwood. 1976. Chambers Murray Latin-English Dictionary. Edinburgh and London (respectively): W and R Chambers and John Murray. Also known as A Smaller Latin-English Dictionary in a 1933 edition.

Stern, Richard. 1991. “Samuel Beckett.” Salmagundi, no. 90–91 (spring– summer): 179–90.

Stevenson, Key Gilliland. 1986. “Belacqua in the Moon: Beckett’s Revisions of ‘Dante and the Lobster.’ ” In McCarthy 1986, 36–46.

Swift, Jonathan. 1969. A Tale of a Tub. Edited by Edward Hodnett. New York: AMS Press.

Topsfield, Valerie. 1988. The Humour of Samuel Beckett. New York: St. Martin’s Press.

Unger, Peter. 1979. “I Do Not Exist.” Chapter 10 of Perception and Identity: Essays Presented to A. J. Ayer, With His Replies, edited by Graham Macdonald, 235–51. Cornell University Press.

University of Chicago Press. 1993. The Chicago Manual of Style. 14th ed. Chicago: University of Chicago Press.

Vernon, William Warren. 1907. Readings on the Purgatorio of Dante: Chiefly Based on the Commentary of Benvenuto da Imola. 3d ed. rev., 2 vols. London: Methuen. First published in 1889.

Whitman, Walt. 1965. Leaves of Grass. Edited by Sculley Bradley and Harold W. Blodgett. New York University Press. Reprint, New York: W. W. Norton and Co., 1973. First published in 1891.

Winston, Mathew. 1977. “Watt’s First Footnote.” Journal of Modern Literature 6 (1): 69–82 (February).

Wolfson, Harry Austryn. 1973. Studies in the History of Philosophy and Religion. 2 vols. Edited by Isadore Twersky and George H. Williams. Harvard University Press.

Wolosky, Shira. 1995. Language Mysticism: The Negative Way of Language in Eliot, Beckett, and Celan. Stanford: Stanford University Press.

Work, John Wesley. 1915. Folk Song of the American Negro. Nashville, Tennessee. Reprint, New York: Negro Universities Press, 1969.

Zeifman, Hersh. 1975. “Religious Imagery in the Plays of Samuel Beckett.” In Cohn 1975, 85–94.

Zurbrugg, Nicholas. 1989. “Review of Samuel Beckett Special Issue of Irish University Review: A Journal of Irish Studies 14 (1), spring 1984.” Journal of Beckett Studies, pp. 163–66.

Index

Numbers written in italic refer to the page where the corresponding entry is described, the ones underlined to the code line of the definition, the rest to the code lines where the entry is used.

Symbols

n.dashify . . . . . . . . \underline{271}

A

majorthesis . . . . . . \underline{1373}
make.annotation . . . \underline{196}
make.as.ftitle.ital  \underline{646}
make.author.editor.sort

. . . . . . . . . . \underline{1615}

make.author.organization.sort

. . . . . . . . . . \underline{1634}

make.author.sort . \underline{1601}
make.authors . . . . . . \underline{563}
make.bookauthors.secondary

. . . . . . . . . . . \underline{600}

make.booktitle.ital  \underline{646}
make.chapter . . . . . . \underline{974}
make.chapter.of . . . \underline{959}
make.crossref . . . . . \underline{904}
make.edition . . . . . . \underline{512}
make.editor.organization.sort

. . . . . . . . . . \underline{1653}

make.editors.primary

. . . . . . . . . . . \underline{572}

make.editors.secondary

. . . . . . . . . . . \underline{587}

make.illustrators . \underline{613}
make.number.tr . . . . \underline{988}
make.printed.name   \underline{1703}
make.title.doublequote

. . . . . . . . . . . \underline{662}

make.title.ital . . . \underline{646}
make.title.sort . . \underline{1590}
make.translators . . \underline{613}
make.vol.series.num.month.pages

. . . . . . . . . . . \underline{684}

make.year.month . . . \underline{525}
make.year.nomonth . \underline{525}
make.year.or.oyear.month

. . . . . . . . . . . \underline{545}

calc.labels . . . . . . \underline{1001}

manual . . . . . . . . . . \underline{1416}

parenthesize . . . . . . \underline{230}

mastersthesis . . . . \underline{1373}

B

\begin . . . . . . 200, 1769 \bibitem . . . . . . . . . 181

C

\citeNP . . . . . . . . . . 905

D

\def . . . . . . . . . . 1, 8–13 editor.q . . . . . . . . . \underline{317} \docdate . . . . . . . . . 13

\DoXPackageS . . . . . . . 9

E

techreport . . . . . . \underline{1524}
default.type . . . . . \underline{1550}

begin.bib . . . . . . . \underline{1763}

begin.entry . . . . . . . \underline{192}

\end . . . . . . . . 202, 1773

set.printed.name.type

. . . . . . . . . . \underline{1001}

reverse.pass . . . . . \underline{1755}

new.block . . . . . . . . \underline{134}

new.sentence . . . . . . \underline{141}

key.q . . . . . . . . . . . . \underline{317}

F

\file . . . . . . . . . . . . . 1 \filedate . . . . . . . . 12 \fileinfo . . . . . . . . . 8

\fileversion . . . . . . 11

H

phdthesis . . . . . . . \underline{1373} check . . . . . . . . . . . . \underline{242} check.q . . . . . . . . . . \underline{367} thesis . . . . . . . . . . \underline{1373} chop.word . . . . . . . \underline{1556}

I

tie . . . . . . . . . . . . . \underline{105}

tie.or.space.connect

. . . . . . . . . . . \underline{297}

field.or.null . . . . . \underline{213}
finish.entry . . . . . . \underline{206}
\initelyHavECitationS

. . . . . . . . . . . . 10

minorthesis . . . . . . \underline{1373}
either.or.check . . . \underline{306}

L

blank.q . . . . . . . . . . \underline{317}

N

inbook . . . . . . . . . . \underline{1212} inc.j . . . . . . . . . . . . \underline{317}

incollection . . . . . \underline{1293}

and . . . . . . . . . . . . . \underline{82} end.bib . . . . . . . . . \underline{1763} \newblock . . . . . . . . 157

unidentified . . . . . . \underline{105}
init.state.constants  \underline{64}
initialize.extra.label.stuff

. . . . . . . . . . \underline{1697}

inproceedings . . . . \underline{1446}
unpublished . . . . . . \underline{1539}
entry.clip . . . . . . . \underline{239}

O

colon . . . . . . . . . . . . \underline{105} comma . . . . . . . . . . . . \underline{105}

conference . . . . . . \underline{1446}

book . . . . . . . . . . . . \underline{1102} booklet . . . . . . . . . \underline{1432}

format.long.label.names.q

. . . . . . . . . . . \underline{402}

format.names.firstfirst

. . . . . . . . . . . \underline{479}

format.names.lastfirst

. . . . . . . . . . . \underline{440}

format.short.label.names.q

. . . . . . . . . . . \underline{378}

format.thesis . . . . \underline{1373}
sort.format.names   \underline{1565}

sortify . . . . . . . . . \underline{1552}

forward.pass . . . . . \underline{1703}

not . . . . . . . . . . . . . \underline{82}

P

space . . . . . . . . . . . . \underline{105}

R

or . . . . . . . . . . . . . . \underline{82} presort . . . . . . . . . \underline{1672}

organization.q . . . . \underline{317}
proceedings . . . . . . \underline{1487}

article . . . . . . . . . \underline{1072}

S

\SCcite . . . . . . . . . . 181

\SCduplicate . . . . . 1745

T

etal . . . . . . . . . . . . . \underline{105} italicize . . . . . . . . \underline{221} start.a.q . . . . . . . . \underline{313}

\textitswitch . . . . . 226

U

multi.page.p . . . . . . \underline{250}
\UnexpandableProtect

. . . . . . . . . . . 181 author.q . . . . . . . . . \underline{317} output . . . . . . . . . . . \underline{171}

                          output.begin . . . . . . \underline{127}
                          output.bibitem . . . . \underline{179}
                          output.end . . . . . . . \underline{131}
                          output.internal . . . \underline{148}
                          output.series.number

. . . . . . . . . . . \underline{907}

                          output.volume.series

. . . . . . . . . . . \underline{937}

W

                          \Wrapquotes . . . . . . . 667