# bib2ref.awk - convert bibtex entries to refer records # # Requires bib-parse.awk and bib-canon.awk. function bib_pass(raw) { } function r_field(tag, v) { if (v != "") { gsub(/[{}]/, "", v) gsub(/[ \t\r\n]+/, " ", v) printf "%%%s %s\n", tag, bib_trim(v) } } function r_names(tag, v, n, parts, i) { gsub(/[{}]/, "", v) gsub(/[ \t\r\n]+/, " ", v) n = split(v, parts, / +[Aa][Nn][Dd] +/) for (i = 1; i <= n; i++) if (bib_trim(parts[i]) != "") printf "%%%s %s\n", tag, bib_trim(parts[i]) } function bib_entry(type, key, d, p, m) { if (bib_out_n++) print "" r_names("A", bib_get("author")) r_names("E", bib_get("editor")) r_field("T", bib_get("title")) r_field("J", bib_get("journal")) r_field("B", bib_get("booktitle")) d = bib_get("year") m = bib_get("month") if (m != "") d = (d != "") ? m " " d : m r_field("D", d) r_field("V", bib_get("volume")) r_field("N", bib_get("number")) p = bib_get("pages") gsub(/--/, "-", p) r_field("P", p) if (bib_get("publisher") != "") r_field("I", bib_get("publisher")) else if (bib_get("institution") != "") r_field("I", bib_get("institution")) else if (bib_get("school") != "") r_field("I", bib_get("school")) r_field("C", bib_get("address")) r_field("K", bib_get("keywords")) r_field("X", bib_get("abstract")) r_field("O", bib_get("note")) }