.\" refer(1) support for mm macros
.
.\" Copyright 2011-2024 Free Software Foundation, Inc.
.\"
.\" Written by Werner Lemberg (wl@gnu.org)
.\"
.\" This file is part of mm, a reimplementation of the Documenter's
.\" Workbench (DWB) troff memorandum macro package for use with GNU
.\" troff.
.\"
.\" groff mm is distributed with groff, the GNU roff typesetting system.
.\"
.\" groff is free software; you can redistribute it and/or modify it
.\" under the terms of the GNU General Public License as published by
.\" the Free Software Foundation, either version 3 of the License, or
.\" (at your option) any later version.
.\"
.\" groff is distributed in the hope that it will be useful, but WITHOUT
.\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
.\" or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
.\" License for more details.
.\"
.\" You should have received a copy of the GNU General Public License
.\" along with this program.  If not, see
.\" <https://www.gnu.org/licenses/>.
.\"
.\" Please submit bug reports using groff's 'BUG-REPORT' file to
.\" http://savannah.gnu.org/bugs/?group=groff.
.
.
.als ref*error @warning
.
.de ref*text-label-start
.  FS "\\$1"
..
.de ref*text-label-end
.  FE
..
.
.de ref*biblio-item-start
.  ref@start-print "\\$1"
..
.de ref*biblio-item-start-nolabel
.  ref@start-print \&
..
.de ref*biblio-item-end
.  ref@stop-print
..
.
.\" used in footnotes only, not the reference list produced by `RP`
.ds ref*refnum-start \" empty
.ds ref*refnum-end   .\"
.
.ds [. \\*[ref*(]\"
.ds .] \\*[ref*)]\"
.
.ds ref*spec!0  Q A T S V N P I C D O
.ds ref*spec!1  Q A T J S V N P I C D O
.ds ref*spec!2  Q A T S V P I C D O
.ds ref*spec!3  Q A T B E S V P I C D O
.ds ref*spec!4  Q A T R G P I C D O
.
.ds ref*spec!A     ",  " "
.ds ref*spec!B     """ " " "in \f2" ""    "\fP"
.ds ref*spec!D     """ " " "("      ")"
.ds ref*spec!E     ",  " " "ed.\& "
.ds ref*spec!G     """ " " "("      ")"
.ds ref*spec!J     ",  " " "\f2"    ""    "\fP"
.ds ref*spec!N     """ "(" ""       ")"
.ds ref*spec!O     ".  " "
.ds ref*spec!P     ",  " " "p.\~"
.ds ref*spec!PP    ",  " " "pp.\~"
.ds ref*spec!T     ",  " " "\(lq"   ""    "\(rq"
.ds ref*spec!T:0   ",  " " "\f2"    ""    "\fP"
.ds ref*spec!T:2   ",  " " "\f2"    ""    "\fP"
.ds ref*spec!V     """ " " "\f3"    "\fR"
.ds ref*spec!dflt  ",  " "
.
.\" For the bibliography section, we emulate the .RS/.RF mechanism of mm
.\" by collecting references (enclosed with .]- and .][) in macro
.\" 'ref*mac'.  This macro gets expanded while calling the .RP macro.
.
.de ref*][-first-pass
.  ec
.  am ref*mac
.    ds [F "\\*([F\"
.    ][ "\\$1" "\\$2"
.    ref*reset
\\..
..
.
.de ref*biblio-start-hook
.  als ref*][-second-pass ][
.  als ][ ref*][-first-pass
.  de ref*item-start-hook
.    eo
.    am ref*mac ][
\\..
..
.
.ds ref*biblio-item-sfx \" empty (ref@start-print supplies the dot)
.
.de ref*biblio-end-hook
.  als ][ ref*][-second-pass
.  rm ref*item-start-hook
.  als ref*print ref*end-print
.  RP
.  als ref*print ref*normal-print
..
.
.mso refer.tmac
.
.\" Local Variables:
.\" mode: nroff
.\" fill-column: 72
.\" End:
.\" vim: set filetype=groff textwidth=72:
