> You should run refer directly on your example file and > examine how it's changed it.
I was about to suggest the same. Based on this (and just for fun), I quickly hacked together the attached macros. They are by no means sufficient for a real application, but they should give you some idea on how you might go about if you want to write your own macros instead of including one of the "refer-m*.tmac" macro files provided with groff. By the way, unless the bibliography file is automatically generated and you have no influence over it, I would suggest to get this into a consistent format first (for example, with author first names either all abbreviated or all written out), so you don't have to do extra processing in the macros (e.g., abbreviating names) to achieve consistency in the final output. Also, on my machine I've had to use a space between the opening brackets: and another to .[ [ Large Imagery .]], otherwise refer would glue the reference to the preceding word. (For the same reason, the first argument of bracket-label also has a leading space.)
.\" ---------------------------------------------------------------- .\" start of references .de ]< .sp 2 .ft B References .ft .sp 1 .nh .ad l .. .\" ---------------------------------------------------------------- .\" end of references .de ]> .hy .ad b .. .\" ---------------------------------------------------------------- .\" start of bibliography entry .de ]- .\" clear all registers in preparation for a new item .ds [A .ds [C .ds [D .ds [I .ds [T .ds [W .. .\" ---------------------------------------------------------------- .\" end of bibliography entry .de ][ .in +2n .ti -2n .DT \\*([D\" extract year from date .ref-\\$2 .in -2n .sp .5 .. .\" ---------------------------------------------------------------- .de DT .ds [D \\$\\n(.$\" year is assumed to be the last argument .. .\" ---------------------------------------------------------------- .de ref-article-in-book \\*([A: .ft I \\*([T\c \&. .ft In: .ft I \\*([B\c .ft .tr -\(en .if !'\\*([P'', p.\~\\*([P\c .tr -- \&. .if !'\\*([I''\\*([I, \\*([C (\\*([D) .. .\" ---------------------------------------------------------------- .de ref-book \\*([A: .ft I \\*([T\c .ft \&. .if !'\\*([I''\\*([I, \\*([C (\\*([D) .. .\" ----------------------------------------------------------------