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
|
%%% ====================================================================
%%% @LaTeX-style-file{
%%% filename = "bibref.sty",
%%% version = "1.0beta",
%%% date = "29 September 1995",
%%% time = "14:36:27 EDT",
%%% author = "David M. Jones",
%%% address = "MIT Laboratory for Computer Science
%%% Room NE43-316
%%% 545 Technology Square
%%% Cambridge, MA 02139
%%% USA",
%%% telephone = "(617) 253-5936",
%%% FAX = "(617) 253-3480",
%%% checksum = "21394 117 377 3498",
%%% email = "dmjones@theory.lcs.mit.edu",
%%% codetable = "ISO/ASCII",
%%% keywords = "",
%%% supported = "yes",
%%% abstract = "",
%%% docstring = "The checksum field above contains a CRC-16
%%% checksum as the first value, followed by the
%%% equivalent of the standard UNIX wc (word
%%% count) utility output of lines, words, and
%%% characters. This is produced by Robert
%%% Solovay's checksum utility.",
%%% }
%%% ====================================================================
%% This is an experimental package to support back references from
%% reference sections to the pages where individual items are cited.
%% I.e., the reference section would
%%
%% Zofia Adamowicz. A sharp version of the bounded
%% {Matijasevich} conjecture and the end-extension problem.
%% Journal of Symbolic Logic}, 57(2):597--616, June 1992. (pages
%% 1, 3-5, 54)
%%
%% if that item were cited on pages 1, 3, 4, 5 and 54.
%%
%% To use this feature, you'll need to make a small change to your
%% BibTeX bibliography style file. In the standard styles, all that
%% is needed is to modify the function fin.entry as follows:
%%
%% FUNCTION {fin.entry}
%% { add.period$
%% write$
%% "\bibref{" cite$ "}" * * write$ % added line
%% newline$
%% }
%%
%% Then load the bibref package by adding
%%
%% \usepackage{bibref}
%%
%% to your document preamble, and run LaTeX as normal. After running
%% LaTeX, invoke makeindex as follows:
%%
%% makeindex -s bibref.ist -o <jobname>.bnd <jobname>.bdx
%%
%% The next time you run LaTeX, the back-references should magically
%% appear.
%%
%% See plaintst.tex and xplain.bst for an example.
\RequirePackage{index}
\newindex{@bib}{bdx}{bnd}{}
\newcommand{\biblabel}[2]{%
\global\@namedef{br@#1}{#2}%
}
\newcommand{\bibref}[1]{%
\unskip\space
\@ifundefined{br@#1}{%
% (\textbf{??})%
}{%
\edef\reserved@a{\@nameuse{br@#1}}%
\afterassignment\@bibref\count@\reserved@a\relax\@nil
}%
}
\def\@bibref#1\@nil{%
\if\relax#1%
(page~\reserved@a)%
\else
(pages~\reserved@a)%
\fi
}
\let\@@cite\cite
\renewcommand{\cite}[2][]{%
\@for\@citea:=#2\do{%
\edef\reserved@a{%
\noexpand\index[@bib]{\@citea}%
}%
\reserved@a
}%
\def\reserved@a{#1}%
\ifx\reserved@a\@empty
\@@cite{#2}%
\else
\@@cite[#1]{#2}%
\fi
}
\renewcommand{\bibliography}[1]{%
\if@filesw
\immediate\write\@auxout{\string\bibdata{#1}}%
\fi
\@input@{\jobname.bnd}%
\@input@{\jobname.bbl}%
}
\endinput
|