summaryrefslogtreecommitdiff
path: root/biblio/bibtex/ms-dos/kempson/btxguide.tex
blob: 1c43b5597a7ec292d864fd35d28e2934ee00a41c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
\documentstyle[11pt,draft]{article}

%
%-----------------------------------------------------------------------
%	SET UP THE PAGE LAYOUT FOR A4 PAPER
%-----------------------------------------------------------------------
\topmargin 0 pt
\textheight 46\baselineskip
\advance\textheight by \topskip
\oddsidemargin 0in
\textwidth 6.3 in 
\def\textfraction{0.1}
\def\floatpagefraction{0.7}
%
%-----------------------------------------------------------------------
%	DEFINE SOME USEFUL MACROS
%-----------------------------------------------------------------------
\newcommand{\BT}{{\rm B\kern.05em{\sc i\kern-.025em b}\kern-.08em
    T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}}
\newcommand{\TC}{Turbo C}
\newcommand{\VV}{{\tt VAX/VMS}}
\newcommand{\UX}{{\tt UNIX}}
\newcommand{\PSCL}{{\tt PASCAL}}
\newcommand{\WEB}{{\tt WEB}}
\newcommand{\WIIC}{{\tt WEB2C}}
\newcommand{\FTN}{{\tt FORTRAN}}
\newcommand{\DOS}{{\tt MS-DOS}}
\newcommand{\us}{{\tt \char '137}}		% a real underscore in \tt font
\newcommand{\bs}{\char '134}			% a backslash in \tt font
\let\_=\us					% map \_ -> {\tt \us}
\title{An Implementation of \BT{} for \DOS{}}
\author{Niel Kempson}
\date{19 June 1989}

\begin{document}
\maketitle
\tableofcontents
\listoftables
{\def\thepage{\mbox{}}\clearpage}
\pagenumbering{arabic}
%
%-----------------------------------------------------------------------
%	INTRODUCTION
%-----------------------------------------------------------------------
\section{Introduction}
This document describes an implementation of \BT{} for the IBM 
PC running the \DOS{} operating system. It does not describe the creation of
bibliographic databases and their use by \LaTeX{}; this is covered in detail
in references~\cite{latexbook,btxdoc,btxhak}.

%-----------------------------------------------------------------------
\subsection{Background}
Over the last year, I have seen numerous requests (including my own) for
a public domain \DOS{} implementation of \BT{} v0.99, but no
responses.\footnote{Arbortext provide an implementation of \BT{} v0.99
as part of their \LaTeX{} package for the IBM  PC. This implementation
is, of course, copyrighted and costs money.}  I needed such a version
for the preparation of my PhD thesis, so I decided to produce one
myself. 

I have never used \PSCL{} and I don't have a \PSCL{} compiler for the IBM
PC, so a \WEB{} change file was not a practical  proposition.  I do have
some experience of C and a C compiler, so I decided to translate the
original \WEB{} source of \BT{} into C.\footnote{I'm a \FTN{} man really,
but translating \BT{} into \FTN{} didn't sound like a very good idea.}
The target compiler is Borland Turbo C v2.0, which is cheap, draft ANSI
compatible and in my possession.

Initially, I tried to use Tim Morgan's excellent \WIIC{} system which 
translates the \PSCL{} produced from the \WEB{} into C.  A test translation 
was soon compiled and tested on a Sun 3/50 with no problems whatsoever;
porting the C source to \DOS{} was rather more difficult.  Like the \PSCL{} 
code produced by most \WEB{} programs, the C code is rather monolithic and 
is greatly dependent on a large number of global variables.

\TC{} is restricted by the limitations of \DOS{} and the segmented 
architecture of the Intel 8086 family; arrays must normally be less than 
64kB in size, as must areas of common (global) variables.  After many 
iterations, the code was finally split up into enough small sections to 
allow compilation and linking, but the program crashed the operating system!

Enough was enough, I decided to start again with a manual translation of the
\WEB{} source into C.  The code is designed to be compiled with the \TC{} 
compiler and run under the \DOS{} operating system, but conditional 
compilation switches allow the code to be compiled and run on a \VV{} 
system. The \VV{} implementation allows me to test my version against the
proven \VV{} \BT{} \WEB{} implementation and to use the excellent debugging
facilities available under \VV{}.\footnote{The large memory requirements of
\BT{} mean that after loading the \TC{} debugger, there isn't enough free 
memory to load and run \BT{}.}


%-----------------------------------------------------------------------

\subsection{Acknowledgements}
\BT{} was created by Oren Patashnik in consultation with Leslie Lamport.  I 
have indexed my C code to the sections of his original \WEB{} source, and 
have made verbatim copies of most of the comments therein.  If this version 
of \BT{} doesn't work, it will be my fault since the version I copied 
{\em does \/} work.  Oren Patashnik has also provided some extra
documentation for \BT{} users~\cite{btxdoc,btxhak}; the \LaTeX{} sources
are included in this distribution.

Tim Morgan should be congratulated on creating the excellent \WIIC{}
system which is a real boon for \UX{} systems with grotty \PSCL{}
compilers. It's a shame that \DOS{} is too primitive to cope with large
programs. 

Thanks to PKware for creating the  \verb|ZIP| archiving utility which is used
to pack the files in this distribution.

Finally, my thanks to the people who volunteered to test my first version 
of \BT{}, especially Tim Hoverd \verb|<tim%uucp.logcam@uk.ac.ukc>| who
discovered a bug!

%-----------------------------------------------------------------------

\subsection{System requirements}
An IBM PC or compatible with at least 384kB of memory running \DOS{} or
\verb|PC-DOS| version 3.0 or later.

\subsubsection{Free Memory}\label{subsubsec:free-memory}
Before the program is run, there should be at least 242kB of free
memory. This can be checked with the \DOS{} program \verb|CHKDSK|. If 
\verb|CHKDSK| reports less than 248,000 free bytes of memory, \BT{} will
fail with one of the messages below:

\begin{verbatim}
    Fatal error: Couldn't allocate xxxxxx bytes for array `aaaaaa'

    Fatal error: Insufficient memory to allocate dynamically sized arrays.
\end{verbatim}

\noindent where \verb|`xxxxxx'| is a decimal number and \verb|`aaaaaa'| is 
the name of one of \BT{}'s work arrays.

Although \BT{} will run with only 242kB of free memory, its capacity will
be severely limited if there is less than 287kB free, and a warning message
will be issued of the form:

\begin{verbatim}
    Warning: Memory limitations have restricted BibTeX's processing capability.
             (MAX_CITES = xxxx, MAX_ENT_STRS = xxxx, MAX_FIELDS = xxxxx)
\end{verbatim}
See section~\ref{subsubsec:dynmem} for an explanation of the message.

\subsubsection{Disk Space}
To install \BT{}, at least 300kB of free disk space is permanently required,
with up to 1MB required for installation.  If \BT{} is to be built from
source code, 1MB will be required permanently, and up to 2.5MB required for
installation.

\subsubsection{C Compiler}
This implementation of \BT{} was developed using the Borland \TC{} v2.0 
compiler.  The compiler is only required if you wish to build \BT{} from the
source code.  The code should be portable to other ANSI C compilers 
({\em e.g.\/} Microsoft C v5) with only minor changes.  If you do port this 
implementation of \BT{} to another \DOS{} C compiler, please let me know so 
that I can include the code modifications in the distribution.  My contact 
address is given in section~\ref{sec:contact-address}.

%-----------------------------------------------------------------------

\subsection{Files distributed}
This implementation of \BT{} is distributed as two \verb|ZIP| archives,
namely:

\begin{tabular}{lp{4.8in}}
 & \\
{\tt BIBTEX.ZIP} & All you need to get \BT{} up and running.  Contains 
		    the \BT{} program, style files and documentation. \\
{\tt SOURCES.ZIP} & The source code for \BT{}. \\
 & \\
\end{tabular}

\noindent To extract the files from the archive, you need the program
\verb|PKUNZIP|.

%
%-----------------------------------------------------------------------
%	USING BIBTEX
%-----------------------------------------------------------------------
\section{Using \BT{}}


\subsection{Invoking \BT{}}\label{subsec:invoking}
The format of the \BT{} command is:\footnote{{\tt MS-DOS>} is used to 
represent the \DOS{} prompt string.}

\begin{verbatim}
    MS-DOS> BIBTEX [aux-file]
\end{verbatim}
where the optional parameter \verb|aux-file| is the name of the \verb|AUX| 
file {\em without\/} the \verb|AUX| extension added.  If \verb|aux-file| is 
not specified, \BT{} will prompt for it:

\begin{verbatim}
    MS-DOS> BIBTEX
    This is BibTeX version 0.99c (MS-DOS Turbo C Release 1.00, 14 June 1989)
    Please type input file name (no extension)--
\end{verbatim}
Assuming that \BT{} is invoked with the command:

\begin{verbatim}
    MS-DOS> BIBTEX btxdoc
\end{verbatim}

\noindent \BT{} will read \verb|btxdoc.aux| and, if all goes well, will
create 2 new files:

\begin{tabular}{lp{4.8in}}
 & \\
{\tt btxdoc.bbl}    & the formatted bibliography information generated by
			\BT{} and read by \LaTeX's \verb|\bibliography| 
			command. \\
{\tt btxdoc.blg}    & \BT's log file containing a transcript of everything 
		 	written to the terminal during the \BT{} run. \\
& \\
\end{tabular}

\noindent This implementation of \BT{} should then behave just like
other versions of \BT{}! 

\subsection{Features of this implementation}
This implementation attempts to emulate as closely as possible the original  
\WEB{} source so that subsequent changes to the \BT{} \WEB{} source can be 
implemented as readily as possible.  Features of this implementation that 
should be noted are listed below.

%-----------------------------------------------------------------------

\subsubsection{Output Files}
\BT{} creates the (\verb|BBL| and \verb|BLG|) output files by appending the
appropriate extension to the \verb|aux-file| command line argument.  If you
tell \BT{} to process a file in the current default directory, the output
files will be there too.  The command:

\begin{verbatim}
    MS-DOS> BIBTEX btxdoc
\end{verbatim}
will create \verb|btxdoc.bbl| and \verb|btxdoc.blg| in the current
default directory. If, however, you specify an explicit file path for the
input file, for example with the command:

\begin{verbatim}
    MS-DOS> BIBTEX \latex\report\btxdoc
\end{verbatim}
the output files will be \verb|\latex\report\btxdoc.bbl| and
\verb|\latex\report\btxdoc.blg|. I consider this to be bad behaviour, in
that output files should always be written to the current default directory,
but it has been preserved because I wanted to mimic the \WEB{} source as
closely as possible.

%-----------------------------------------------------------------------

\subsubsection{\DOS{} Environment Variables}\label{subsubsec:dos-env-vars}
\BT{} normally requires 3 types of input files, each of which may be
located in a different area of your system.  They are:


\begin{tabular}{lp{5.1in}}
 & \\
{\tt AUX} files	&    	\LaTeX{} output which is processed by \BT{}. These
			files are normally in the current default
			directory. \\
{\tt BIB} files	&   	Your \BT{} reference databases used by \BT{} to 
			resolve the \verb|\cite| command references in your 
			\LaTeX{} source file.  These files are often kept in 
			a separate directory as they are common to many 
			documents. \\
{\tt BST} files	&	The \BT{} style files that tell \BT{} how to 
			format the citations. These files are often kept with 
			the \LaTeX{} style files. \\
 & \\
\end{tabular}


\noindent When \BT{} tries to open an input file and fails, the string
specified by an appropriate \DOS{} environment variable is prepended to the
file name and the file opening retried. The environment variables supported
are:


\begin{tabular}{lp{4.8in}}
 & \\
{\tt TEXINPUTS}		& 	Used to locate {\tt BST} files \\
{\tt TEXBIB}		& 	Used to locate {\tt BIB} files \\
 & \\
\end{tabular}

\noindent
The value of these environment variables must be suitable for prepending to
a file name  ({\em i.e.\/} it must contain only one path, not a list of
paths separated by semicolons). An example of setting these
environment variables for use by \BT{} is:

\begin{verbatim}
    MS-DOS> SET TEXINPUTS=c:\tex\inputs
    MS-DOS> SET TEXBIB=d:\latex\bibtex\
\end{verbatim}
It does not matter whether you specify a trailing backslash after the path
element.

If, for example, the environment variables had been set as above and the
\verb|alpha| bibliography style had been specified, \BT{} would attempt to
open \verb|alpha.bst| and if that failed, the file 
\verb|c:\tex\inputs\alpha.bst| would be tried.

%-----------------------------------------------------------------------

\subsubsection{Dynamic Memory Allocation}\label{subsubsec:dynmem}
The \WEB{} source of \BT{} declares many large arrays which are used to hold
the information contained in the style and bibliography database files.  The
total storage required by these arrays considerable, with one array of
nearly 300kB.

Under virtual memory operating systems ({\em e.g.\/} \UX, \VV), there is not
normally a problem allocating memory; the array sizes can be predetermined
and memory allocated statically by the compiler.

If the array sizes were predetermined and allocated by the compiler (as in 
the \WEB{} source), \BT{}'s capacity would have to be limited to support IBM
PCs with limited memory, or maximized and support only IBM PCs with 
sufficient memory installed.  An alternative would be to produce several 
versions of \BT{} for different memory sizes.

I want \BT{} to be usable by as many PC users as possible, so at 
startup, \BT{} determines how much memory is available and adjusts its 
processing capacity accordingly.  The algorithm used is arbitrary, adjusting
the size of the following constants declared in the \WEB{} source of \BT{}:

\begin{tabular}{lp{4.7in}}
 & \\
{\tt MAX\_CITES} & the maximum number of {\tt \bs cite} commands allowed in 
		   the \LaTeX{} source.\\
{\tt MAX\_ENT\_STRS} & the maximum total number of string fields allowed in the 
		       bibliographic database(s).\\
{\tt MAX\_FIELDS} & the maximum total number of fields allowed in the 
		    bibliographic database(s).
\end{tabular}

\noindent The size of these arrays is tabulated against the free memory
available before running \BT{}:

\begin{center}
\begin{tabular}{|c|r|r|r|}
\hline
{\bf Free Memory} & {\tt MAX\_CITES} & {\tt MAX\_ENT\_STRS} & 
			{\tt MAX\_FIELDS}\\
\hline
242kB &   0\hspace*{1.5em} &     0\hspace*{1.5em} &      0\hspace*{1.2em} \\
250kB &  17\hspace*{1.5em} &    68\hspace*{1.5em} &    391\hspace*{1.2em} \\
287kB & 100\hspace*{1.5em} &   400\hspace*{1.5em} &  2,300\hspace*{1.2em} \\
300kB & 128\hspace*{1.5em} &   512\hspace*{1.5em} &  2,944\hspace*{1.2em} \\
350kB & 240\hspace*{1.5em} &   960\hspace*{1.5em} &  5,520\hspace*{1.2em} \\
400kB & 352\hspace*{1.5em} & 1,408\hspace*{1.5em} &  8,096\hspace*{1.2em} \\
450kB & 464\hspace*{1.5em} & 1,856\hspace*{1.5em} & 10,672\hspace*{1.2em} \\
500kB & 576\hspace*{1.5em} & 2,304\hspace*{1.5em} & 13,248\hspace*{1.2em} \\
550kB & 688\hspace*{1.5em} & 2,752\hspace*{1.5em} & 15,824\hspace*{1.2em} \\
577kB & 750\hspace*{1.5em} & 3,000\hspace*{1.5em} & 17,250\hspace*{1.2em} \\
\hline
\end{tabular}
\end{center}

\noindent \BT{} will refuse to run if the free memory available is less
than 242kB, and will issue warnings if the calculated value of
\verb|MAX_CITES| is less than 100.  The warning message will be of the form:

\begin{verbatim}
    Warning: Memory limitations have restricted BibTeX's processing capability.
             (MAX_CITES = xxxx, MAX_ENT_STRS = xxxx, MAX_FIELDS = xxxxx)
\end{verbatim}
If sufficient memory is available ({\em e.g.\/} when running 
under certain \DOS{} `extenders'), \BT{} will set the array 
sizes to those in the \WEB{} source, {\em i.e.\/} \verb|MAX_CITES|=750, 
\verb|MAX_ENT_STRS|=3000 and \verb|MAX_FIELDS|=17250.


%
%-----------------------------------------------------------------------
%	INSTALLING BIBTEX
%-----------------------------------------------------------------------
\section{Installing and Testing \BT{}}

%-----------------------------------------------------------------------

\begin{table}[htbp]
\begin{tabular}{|l|p{5in}|}
\hline
{\bf File} & {\bf Description} \\
\hline
{\tt BIBTEX.EXE}& the \BT{} program \\
{\tt ABBRV.BST} & the {\tt abbrv} \BT{} bibliography style \\
{\tt ALPHA.BST} & the {\tt alpha} \BT{} bibliography style \\
{\tt PLAIN.BST} & the {\tt plain} \BT{} bibliography style \\
{\tt UNSRT.BST} & the {\tt unsrt} \BT{} bibliography style \\
{\tt BTXDOC.TEX}& the \LaTeX{} source for~\cite{btxdoc} \\
{\tt BTXHAK.TEX}& the \LaTeX{} source for~\cite{btxhak}\\
{\tt BTXDOC.BIB}& the \BT{} database used by ~\cite{btxdoc} and 
		   \cite{btxhak}\\
{\tt BTXAMPL.BIB}& the \LaTeX{}  of a test document which references every 
		   entry in the {\tt XAMPL.BIB} database\\
{\tt XAMPL.BIB}	& an example \BT{} database which illustrates many of the 
		  entry types allowed\\
{\tt BTXAMPL.XUA}& a reference version of the {\tt BTXAMPL.AUX} file which is 
		  used for testing \BT{}\\
{\tt BTXAMPL.LBB}& a reference version of the {\tt BTXAMPL.BBL} file which is 
		  used for testing \BT{}\\
{\tt BTXDOC.XUA}& a reference version of the {\tt BTXDOC.AUX} file which is 
		  used for testing \BT{}\\
{\tt BTXDOC.LBB}& a reference version of the {\tt BTXDOC.BBL} file which is 
		  used for testing \BT{}\\
{\tt BTXHAK.XUA}& a reference version of the {\tt BTXHAK.AUX} file which is 
		  used for testing \BT{}\\
{\tt BTXHAK.LBB}& a reference version of the {\tt BTXHAK.BBL} file which is 
		  used for testing \BT{}\\
\hline
\end{tabular}
\caption{Contents of the {\tt BIBTEX.ZIP} archive}%
\label{table:bibtex}
\end{table}

%------------------------------------------------------------------------

\subsection{Files required and where to put them}\label{subsec:where}
All of the files required to get \BT{} up and running are contained in the
archive \verb|BIBTEX.ZIP| and are listed in
table~\ref{table:bibtex}. Use \verb|PKUNZIP| to unpack the archive
\verb|BIBTEX.ZIP|.  It is recommended that you create a temporary directory
for this, then once installation is complete, the directory and its contents
can be safely deleted.

On my system, all \TeX{} related programs are kept in the directory
\verb|c:\tex\bin|, style and macro files in \verb|c:\tex\inputs|, the
common bibliographical databases in \verb|d:\latex\bibtex| and the \BT{}
documentation in \verb|c:\tex\doc|.  Assuming that the archive
\verb|BIBTEX.ZIP| is on a floppy disk in drive \verb|A:|, the following
\DOS{} commands could be used to extract and install the \BT{} files and then
set the \DOS{} environment variables appropriately:

\begin{verbatim}
    MS-DOS> MD \BTXTMP
    MS-DOS> CD \BTXTMP
    MS-DOS> PKUNZIP A:BIBTEX

    MS-DOS> COPY *.exe  c:\tex\bin
    MS-DOS> COPY *.bst  c:\tex\inputs
    MS-DOS> COPY *.bib  d:\latex\bibtex
    MS-DOS> COPY btx*.* c:\tex\doc

    MS-DOS> CD \
    MS-DOS> DEL \BTXTMP
    MS-DOS> RD \BTXTMP

    MS-DOS> SET PATH=c:\dos;c:\bin;c:\util;c:\tex\bin
    MS-DOS> SET TEXINPUTS=c:\tex\inputs
    MS-DOS> SET TEXBIB=d:\latex\bibtex
\end{verbatim}


%-----------------------------------------------------------------------

\subsection{Building \BT{} from sources}
Use \verb|PKUNZIP| to unpack the archive \verb|SOURCES.ZIP|; this will create 
the \BT{} source files listed in table~\ref{table:sources}.  The source code
has been split into many parts to ensure that each module is less than 64kB in
size and is thus able to be compiled  and edited in the \TC{} integrated
development environment.

To generate the \BT{} program \verb|BIBTEX.EXE|, simply use the \verb|MAKE| 
program supplied with \TC{} by executing the command:

\begin{verbatim}
    MS-DOS> MAKE bibtex
\end{verbatim}
The executable program \verb|BIBTEX.EXE|  will be created in the current 
working directory.

\begin{table}[htbp]
\begin{tabular}{|l|p{5in}|}
\hline
{\bf File} & {\bf Description} \\
\hline
{\tt MAKEFILE}		& \TC{} makefile for building \BT{}. \\
{\tt BIBTEX.PRJ} 	& \TC{} project file for building \BT{} from
			  within the integrated development environment. \\
{\tt TCCONFIG.TC} 	& \TC{} configuration file for the integrated 
		   	  development environment. \\
 & \hfill \\
{\tt BIBTEX.H} 		& header file defining the macros used in the \BT{} 
			  \WEB{} source. \\
{\tt DATATYPE.H} 	& header file defining the data types used. \\
{\tt EXTVARS.H} 	& header file declaring the external global 
			  variables. \\
{\tt GBLPROCS.H} 	& header file containing declaring all of the global
			  functions used. \\
{\tt GBLVARS.H} 	& header file declaring and allocating space for 
			  global variables. \\
{\tt SYSDEP.H} 		& header file declaring system dependent items. \\
 & \hfill \\
{\tt BIBTEX.C} 		& the main module of \BT{} containing system 
			  dependent functions. \\
{\tt PART1.C} 		& {\raggedright
			  source module containing \BT{} functions from \\
			  {\tt aux\_err\_stuff\_after\_right\_brace}
			  to {\tt bst\_integers\_command}.} \\
{\tt PART2.C} 		& {\raggedright
			  source module containing \BT{} functions from
			  {\tt build\_in} to \\
			  {\tt enough\_text\_chars}.} \\
{\tt PART3.C} 		& {\raggedright
			  source module containing \BT{} functions from 
			  {\tt execute\_fn} to \\
			  {\tt get\_bib\_command\_or\_entry}.} \\
{\tt PART4.C} 		& {\raggedright
			  source module containing \BT{} functions from \\
			  {\tt get\_bst\_command\_and\_process} 
			  to {\tt pop\_whole\_stack}.} \\
{\tt PART5.C} 		& {\raggedright
			  source module containing \BT{} functions from \\
			  {\tt pre\_def\_certain\_strings}
			  to {\tt scan\_balanced\_braces}.} \\
{\tt PART6.C} 		& {\raggedright 
			  source module containing \BT{} functions from
			  {\tt str\_eq\_buf} to \\
			  {\tt x\_add\_period}.} \\
{\tt PART7.C} 		& {\raggedright
			  source module containing \BT{} functions from
			  {\tt x\_change\_case} to \\
			  {\tt x\_num\_names}.} \\
{\tt PART8.C} 		& source module containing \BT{} functions from
			  {\tt x\_plus} to {\tt x\_write}. \\
\hline
\end{tabular}
\caption{Contents of the {\tt SOURCES.ZIP} archive}%
\label{table:sources}
\end{table}


%-----------------------------------------------------------------------

\subsection{Testing \BT{}}
The \LaTeX{} source file \verb|btxdoc.tex| for the \BT{} 
documentation~\cite{btxdoc} is provided as part of this distribution.  If it
is  processed with \LaTeX{} and \BT{} using the following commands:

\begin{verbatim}
    MS-DOS> LATEX btxdoc
    MS-DOS> BIBTEX btxdoc
    MS-DOS> LATEX btxdoc
    MS-DOS> LATEX btxdoc
\end{verbatim}
the files \verb|btxdoc.aux| and \verb|btxdoc.bbl| will be created (amongst 
others).  Reference versions of these files (\verb|btxdoc.xua| and 
\verb|btxdoc.lbb| respectively) are provided as part of the distribution, 
and they should be identical to the files created as a result of the above 
commands.  The files can be compared using the \DOS{} utility \verb|COMP| 
with the commands:

\begin{verbatim}
    MS-DOS> COMP btxdoc.aux btxdoc.xua
    MS-DOS> COMP btxdoc.bbl btxdoc.lbb
\end{verbatim}

\noindent\verb|COMP| should report that no differences were found.  This procedure 
should be repeated with the provided files \verb|btxhak| and \verb|btxampl|.
If, in all cases, no differences are found, you may be confident that your 
new version of \BT{} has been installed correctly.

%
%-----------------------------------------------------------------------
%	PROBLEMS
%-----------------------------------------------------------------------
\section{Problems}
If you believe that \BT{} is behaving incorrectly, I'd like to hear from you!
Before reporting a bug, I'd be grateful if you would follow a few steps to 
help isolate the problem.

A bug is usually suspected as the result of \BT{} issuing an error message 
or by the production of unexpected results.  Either of these can be 
caused by a real bug in the \BT{} implementation, or the correct behaviour 
in response to misuse.  It is assumed that you have read the \BT{} 
documentation~\cite{latexbook,btxdoc}.

%-----------------------------------------------------------------------
\subsection{Unexpected Results}
Sometimes the output generated by \BT{} is not what you expect, especially:
\begin{itemize}
  \item formatting of names and initials
  \item the sorting of the references
\end{itemize}
Check the bibliography style file, which should describe how the citations 
are supposed to be formatted.

%-----------------------------------------------------------------------
\subsection{Error Messages}
\BT{} will generate warning, error and fatal messages under several 
circumstances, including:
\begin{itemize}
  \item \BT{} refuses to run, or reports restricted processing capacity due 
	to memory limitations.  See sections~\ref{subsubsec:dynmem} 
	and~\ref{subsubsec:free-memory}.
  \item \BT{} couldn't open a file.  The offending file name is reported.  
	Check that the file exists and is in the current working directory 
	or in the directory referenced by the appropriate \DOS{} environment
	variable.  See section~\ref{subsubsec:dos-env-vars}.
  \item errors in the bibliographic database.  The offending file and line 
	number are usually identified.  Check the bibliographic database 
	against the documentation~\cite{latexbook,btxdoc}.
  \item one of \BT{}'s internal capacity limits has been exceeded. The error
	message will detail which limit has been exceeded.    See 
	section~\ref{subsubsec:dynmem}.
  \item errors in the bibliographic style file detected by \BT{}. The errors
	are characterized by the message {\tt *Please notify the bibstyle 
	designer*}.  If the style file used was provided with this 
	implementation, consider it a bug.  If you are using style files 
	from another source, note that the style file must have been 
	designed for \BT{} v0.99 or later.  Style files designed for \BT{} 
	v0.98 or earlier {\em will not\/} work with \BT{} v0.99.
  \item internal errors detected by \BT{}. These errors are characterized by
	the message {\tt *Please notify the BibTeX maintainer*}.  This is 
	definitely the result of a bug.
\end{itemize}


%-----------------------------------------------------------------------

\subsection{Bug Reports}
If you have access to another implementation of \BT{} ({\em e.g.\/} on a 
\UX{} or \VV{} system), try processing the same files with that 
implementation and compare results.  If that implementation produces 
satisfactory results where the \DOS{} implementation does not, you can be 
reasonably sure that you've found a bug.  I have tested the \DOS{} version 
against the \VV{} implementation, but there are bound to be errors which
haven't been detected.

Once you're fairly sure that this implementation of \BT{} is at fault,
I'd like to hear from you so that I can fix the problem.  To help me
diagnose the fault, please supply the following information with your bug 
report:

\begin{itemize}
  \item	a description of the problem
  \item	the {\tt AUX} and {\tt BIB} input files that caused the problem
  \item	the {\tt BBL} and {\tt BLG} output files produced by \BT{}
  \item if possible, the {\tt BBL} and {\tt BLG} output files produced by 
	another implementation of \BT{}.
\end{itemize}

\noindent Please send the bug report to me, preferably at the e-mail
address given in section~\ref{sec:contact-address} below.  Please {\em do
not\/} send bug reports to Oren Patashnik as any fault is almost bound to
be in my translation from the original \WEB{} source.
%
%-----------------------------------------------------------------------
%	CONTACT ADDRESSES
%-----------------------------------------------------------------------
\section{Contact Address}\label{sec:contact-address}
If you have any suggestions or (constructive) criticisms, I would welcome 
your comments, preferably to the e-mail address below.

\begin{tabular}{@{}ll}
 & \\
{\bf Name}	&	Niel Kempson\\
{\bf Mail} 	&	School of Electrical Engineering and Science,\\
		&	Royal Military College of Science,\\
		&	Shrivenham,\\
		&	SWINDON\\
		&	SN6 8LA\\
		&	United Kingdom \\
		& \\
{\bf Phone}	&	Swindon (0793) 785687 (UK)\\
		&	+44-793-785687        (International)\\
		& \\
{\bf E-mail}	&  
    \begin{tabular}[t]{@{}ll}
	{\tt JANET} & {\tt tex@uk.ac.cranfield.rmcs}\\
	{\tt INTERNET} & {\tt tex\%uk.ac.cranfield.rmcs@nsfnet-relay.ac.uk}\\
	{\tt BITNET/EARN} & {\tt tex\%uk.ac.cranfield.rmcs@ukacrl}\\
	{\tt UUCP} & {\tt \{mcvax|uunet|ukc\}!rmcs.cranfield.ac.uk!tex}
    \end{tabular}
\end{tabular}


%
%-----------------------------------------------------------------------
%	BIBLIOGRAPHY (Included here so that this guide can be printed 
%		      BEFORE installing BibTeX)
%-----------------------------------------------------------------------
\addcontentsline{toc}{section}{References}
\begin{thebibliography}{99}
  \bibitem{latexbook}
  Leslie Lamport.
  \newblock {\em {\LaTeX \rm:} {A} Document Preparation System}.
  \newblock Addison-Wesley, 1986.

\bibitem{btxdoc}
  Oren Patashnik.
  \newblock {{\BT ing}}.
  \newblock Documentation for general {\BT} users, 8~February 1988.
  \newblock {\bf Note:~} the \TeX{} source for this document is in the 
		file {\tt BTXDOC.TEX}

\bibitem{btxhak}
  Oren Patashnik.
  \newblock Designing {\BT} styles.
  \newblock The part of \BT's documentation that's not meant for general
    users, 8~February 1988.
  \newblock {\bf Note:~} the \TeX{} source for this document is in the 
		file {\tt BTXHAK.TEX}\end{thebibliography}

\end{document}