Clive, 2nd ed. User's manual. Section 2
SYNOPSYS

import "clive/cmd/wr/refs"

const Dir = "/zx/lib/bib" ...
var BibTexOk = true
func Load(dir string) (*Bib, error)
type Bib struct { ... }
    func Load(dir string) (*Bib, error)
type Ref struct { ... }

DESCRIPTION

References for wr using the refer format

    A	Author's name
    B	Title of book containing item
    C	City of publication
    D	Date
    E	Editor(s) of book containing item
    F	Caption
    G	Government (NTIS) ordering number
    I	Issuer (publisher)
    J	Journal name
    K	Keys for searching
    N	Issue number
    O	Other information
    P	Page(s) of article
    R	Technical report number
    S	Series title
    T	Title
    V	Volume number
    W	Where the item can be found locally
    X	Annotations (not in all macro styles)

    Books
    %A	R. E. Griswold
    %A	J. F. Poage
    %A	I. P. Polonsky
    %T	The SNOBOL4 Programming Language
    %I	PRHALL
    %D	second edition 1971

    Journal article
    %A	M. A. Harrison
    %A	W. L. Ruzzo
    %A	J. D. Ullman
    %T	Protection in Operating Systems
    %J	CACM
    %V	19
    %N	8
    %P	461-471
    %D	AUG 1976
    %K	hru

    Article in conference proceedings
    %A	M. Bishop
    %A	L. Snyder
    %T	The Transfer of Information and Authority
    in	a Protection System
    %J	Proceedings of the 7th SOSP
    %P	45-54
    %D	1979

    Article in book
    %A	John B. Goodenough
    %T	A Survey of Program Testing Issues
    %B	Research Directions in Software Technology
    %E	Peter Wegner
    %I	MIT Press
    %P	316-340
    %D	1979

    Technical Reports
    %A	T. A. Budd
    %T	An APL Complier
    %R	University of Arizona Techical Report 81-17
    %C	Tucson, Arizona
    %D	1981

    PhD Thesis
    %A	Martin Brooks
    %T	Automatic Generation of Test Data for
    Recursive	Programs Having Simple Errors
    %I	PhD Thesis, Stanford University
    %D	1980

    Miscellaneous
    %F	BHS--
    %A	Timothy A. Budd
    %A	Robert Hess
    %A	Frederick G. Sayward
    %T	User's Guide for the EXPER Mutation Analysis system
    %O	(Yale university, memo)

CONSTANTS

const (
	Dir  = "/zx/lib/bib" // default bib dir (should become /u/bib)
	Keys = "ATBSJPRVNEFGICDOWX"
)

TYPES

type Bib struct {
	All []*Ref // once loaded, can be used to iterate over the references.
	// contains filtered or unexported fields
}
    A bib maps from words found in references to references

func Load(dir string) (*Bib, error)
    Load the files at the given dir into a Bib set.

func (b *Bib) Cite(keys ...string) *Ref
    Search bib for keys and return at most one reference

func (b *Bib) Cites(keys ...string) []*Ref
    Search bib for keys and return all matching references

func (b *Bib) WriteTo(w io.Writer)

type Ref struct {
	Keys map[rune][]string
}
    A reference maps from the key (eg. 'A') to values (eg. authors)

func (r *Ref) Authors() string
    return authors separated by "," and terminated with a "."

func (r *Ref) Reference() []string
    Return text lines or sentences for a reference. The strings might be written
    in a single paragraph. The first two strings are usually the title and
    author list, but that depends on the existence of such keys.

func (r *Ref) String() string

func (r *Ref) Title() string
    return title terminated in "."

FUNCTIONS

VARIABLES

var BibTexOk = true
    When true, Load() reads .bib files containing "bib2ref ok" in the first line
    (with this line being discarded). Parsing of the bibtex entries is naive and
    assumes that each field is described in a single line.

User's manual, 2nd ed. Section 2