pdbain@wateng.UUCP (Peter Bain) (01/03/85)
Here is a sed script to convert a refer(1) format citation into something
less cryptic. Perhaps someone could write a sed(1) or awk(1) script to
produce troff (or TeX format?) from refer format.
----------------------------CUT HERE------------------------------
s/^%A/Author:/
s/^%B/Book title:/
s/^%C/City:/
s/^%D/Year:/
s/^%[Ee]/Editor:/
s/^%I/Publisher:/
s/^%J/Journal:/
s/^%K/Keywords:/
s/^%l/Type of Publication:/
s/^%M/Memo Number:/
s/^%m/Month:/
s/^%N/Issue:/
s/^%n/Edition:/
s/^%P/Pages:/
s/^%R/Reference number:/
s/^%T/Title:/
s/^%V/Volume:/
s/^%[OXYZ]/Other Information:/
/^%l/d
----------------------------CUT HERE------------------------------
--
- peter bain
...!{allegra|decvax|clyde|ihnp4 }!watmath!wateng!pdbain
hard mail: CCNG, CPH-2369A, University of Waterloo,
Waterloo, Ont. Canada N2M 5G4
telephone: (519) 885-1211 x2810pdbain@wateng.UUCP (Peter Bain) (08/22/85)
This is an awk(1) script to convert refer(1) format data to a more
human-readable form. Of course, running refer-format stuff through
refer and troff(1) will do the same thing (and much better), but this works
faster.
---------------------------------------------------------
/^%/ {
prevfield = curfield
curfield = substr($0,2,1)
if (curfield == "m")
curfield = "M"
if (fields[curfield])
fields[curfield] = fields[curfield] ", " substr($0,4)
else
fields[curfield] = substr($0,4)
}
/^[^%]/ {
fields[curfield] = fields[curfield] "\n" $0
}
/^$/ {
doc = ""
if (fields["A"]) {
doc = doc fields["A"]
if (fields["l"] ~ /edited.*/ && !fields["E"])
if (fields["e"])
doc = doc "(eds.)"
else
doc = doc "(ed.)"
doc = doc ","
}
if (fields["T"])
if (fields["B"] || fields["J"]) {
if (length(doc fields["T"]) > 73) {
print doc
doc = ""
}
doc = doc "\"" fields["T"] "\", "
} else {
if (length(doc fields["T"]) > 73) {
print doc
doc = ""
}
doc = doc fields["T"] ", "
}
if (fields["J"]) {
if (length(doc fields["J"]) > 73) {
print doc
doc = ""
}
doc = doc fields["J"] ", "
if (fields["V"] ) {
if (fields["N"]) {
volno = fields["V"] "(" fields["N"] ")"
if (length(doc volno) > 73) {
print doc
doc = ""
}
} else
volno = "vol. " fields["V"]
doc = doc volno ", "
volno = ""
}
}
if (fields["M"])
date = fields["M"]
if (fields["D"])
date = date " "fields["D"]
if (date) {
if (length(doc date) > 73) {
print doc
doc = ""
}
doc = doc date ", "
date = ""
}
if (fields["E"]) {
if (length(doc fields["E"]) > 73) {
print doc
doc = ""
}
doc = doc fields["E"]
if (fields["e"])
doc = doc "(eds.)"
doc = doc ", "
}
if (fields["l"] == "dissertation") {
if (fields["Q"]) {
level = fields["Q"] " dissertation,"
if (length(doc level) >73) {
print doc
doc = ""
}
doc = doc level
}
}
if (fields["I"]) {
if (length(doc fields["I"]) >73) {
print doc
doc = ""
}
doc = doc fields["I"] ", "
}
if (fields["S"]) {
if (length(doc fields["S"]) >73) {
print doc
doc = ""
}
doc = doc fields["S"] ", "
}
if (fields["C"]) {
if (length(doc fields["C"]) >73) {
print doc
doc = ""
}
doc = doc fields["C"] ", "
}
if (fields["P"]) {
if (length(doc fields["P"]) >73) {
print doc
doc = ""
}
doc = doc fields["P"] ", "
}
print doc "\n"
for (i in fields)
fields[i] = ""
}
--
- peter bain
...!{allegra|decvax|clyde|ihnp4 }!watmath!wateng!pdbain
hard mail: CCNG, CPH-2369A, University of Waterloo,
Waterloo, Ont. Canada N2M 5G4
telephone: (519) 885-1211 x2810