From 1edb774eed8bea3f6dbde5b02db6ecd209394cf8 Mon Sep 17 00:00:00 2001
From: Mark Wooding <mdw@distorted.org.uk>
Date: Sun, 25 Aug 2019 00:12:46 +0100
Subject: [PATCH] doc/: Switch to a manually maintained bibliography database.

Actually, the database is maintained mostly by Emacs's BibTeX mode.  In
particular, I (mostly) allow it to choose the citation keys, rather than
using Beebe's somewhat annoying key format, so hack up the document to
match.
---
 doc/Makefile.am            |  3 ++
 doc/concepts.tex           |  9 +++--
 doc/cutting-room-floor.tex |  3 +-
 doc/misc.tex               |  2 +-
 doc/sod.bib                | 94 ++++++++++++++++++++++++++++++++++++++++++++++
 doc/sod.tex                |  4 +-
 doc/structures.tex         |  2 +-
 7 files changed, 107 insertions(+), 10 deletions(-)
 create mode 100644 doc/sod.bib

diff --git a/doc/Makefile.am b/doc/Makefile.am
index ec29260..a1d6ec9 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -90,6 +90,9 @@ TEX_FILES		+= output.tex
 ## Other hacks.
 TEX_FILES		+= cutting-room-floor.tex
 
+## Bibliography database.
+BIB_FILES		+= sod.bib
+
 ## Building the bibliography style.
 EXTRA_DIST		+= mdwalpha.dbj
 
diff --git a/doc/concepts.tex b/doc/concepts.tex
index 68780e2..8e774fe 100644
--- a/doc/concepts.tex
+++ b/doc/concepts.tex
@@ -159,8 +159,8 @@ following properties are expected to hold.
   list, i.e., $B$ is a more specific superclass of $C$ than $A$ is.
 \end{itemize}
 The default linearization algorithm used in Sod is the \emph{C3} algorithm,
-which has a number of good properties described in~\cite{Barrett:1996:MSL}.
-It works as follows.
+which has a number of good properties described
+in~\cite{barrett-1996:monot-super-linear-dylan}.  It works as follows.
 \begin{itemize}
 \item A \emph{merge} of some number of input lists is a single list
   containing each item that is in any of the input lists exactly once, and no
@@ -263,8 +263,9 @@ It works as follows.
 
   \end{itemize}
 
-  (This example combines elements from \cite{Barrett:1996:MSL} and
-  \cite{Ducournau:1994:PMM}.)
+  (This example combines elements from
+  \cite{barrett-1996:monot-super-linear-dylan} and
+  \cite{ducournau-1994:monot-multip-inher-linear}.)
 \end{example}
 
 \subsubsection{Class links and chains}
diff --git a/doc/cutting-room-floor.tex b/doc/cutting-room-floor.tex
index f4b19b3..5590f45 100644
--- a/doc/cutting-room-floor.tex
+++ b/doc/cutting-room-floor.tex
@@ -153,7 +153,8 @@ edge from each class to each of its direct superclasses.  This is the
 In order to resolve inheritance of items, we define a \emph{class precedence
   list} (or CPL) for each class, which imposes a total order on that class's
 superclasses.  The default algorithm for computing the CPL is the \emph{C3}
-algorithm \cite{fixme-c3}, though extensions may implement other algorithms.
+algorithm \cite{barrett-1996:monot-super-linear-dylan}, though extensions may
+implement other algorithms.
 
 The default algorithm works as follows.  Let $C$ be the class whose CPL we
 are to compute.  Let $X$ and $Y$ be two of $C$'s superclasses.
diff --git a/doc/misc.tex b/doc/misc.tex
index 859ec51..b7ed6e5 100644
--- a/doc/misc.tex
+++ b/doc/misc.tex
@@ -184,7 +184,7 @@ refer to the same place; but that doesn't work for these locatives.
 
 An anaphoric macro implicitly binds a well-known name to a value of interest,
 in the course of doing something else.  The concept was popularized by Paul
-Graham \cite{FIXME:OnLisp}.
+Graham \cite{graham-1993:on-lisp}.
 
 The macros described here all bind the variable @|it|.
 
diff --git a/doc/sod.bib b/doc/sod.bib
new file mode 100644
index 0000000..fed8d6d
--- /dev/null
+++ b/doc/sod.bib
@@ -0,0 +1,94 @@
+%%% -*-latex-*-
+%%%
+%%% Bibliography database for Sod manual
+%%%
+%%% (c) 2019 Straylight/Edgeware
+%%%
+
+%%%----- Licensing notice ---------------------------------------------------
+%%%
+%%% This file is part of the Simple Object Definition system.
+%%%
+%%% SOD 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 2 of the License, or
+%%% (at your option) any later version.
+%%%
+%%% SOD 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 SOD; if not, write to the Free Software Foundation,
+%%% Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+%%%
+%%% Much of the bibliographic data in this file was originally compiled
+%%% and placed in the public domain by Nelson H. F. Beebe of the University
+%%% of Utah Department of Mathematics.
+
+@Article{barrett-1996:monot-super-linear-dylan,
+  author       = "Kim Barrett and Bob Cassels and Paul Haahr and David
+                  A. Moon and Keith Playford and Andrew L. M. Shalit and
+                  P. Tucker Withington",
+  title	       = "A Monotonic Superclass Linearization for {Dylan}",
+  journal      = "ACM SIG{\-}PLAN Notices",
+  year	       = 1996,
+  volume       = 31,
+  number       = 10,
+  pages	       = "69--82",
+  month	       = oct,
+  issn	       = "0362-1340 (print), 1523-2867 (print), 1558-1160
+                  (electronic)"
+}
+
+@Article{ducournau-1994:monot-multip-inher-linear,
+  author       = "R. Ducournau and M. Habib and M. Huchard and
+                  M. L. Mugnier",
+  title	       = "Proposal for a Monotonic Multiple Inheritance
+                  Linearization",
+  journal      = "ACM SIG{\-}PLAN Notices",
+  year	       = 1994,
+  volume       = 29,
+  number       = 10,
+  pages	       = "164--175",
+  month	       = oct,
+  issn	       = "0362-1340 (print), 1523-2867 (print), 1558-1160
+                  (electronic)"
+}
+
+@Book{ansi-1999:c,
+  author       = "{American National Standards Institute}",
+  title	       = "{ANSI\slash ISO\slash IEC 9899-1999}: Programming
+                  Languages --- {C}",
+  publisher    = "American National Standards Institute",
+  year	       = 1999,
+  address      = "1430 Broadway, New York, NY 10018, USA",
+  pages	       = "????",
+  isbn	       = "????",
+  url	       = "http://webstore.ansi.org/ansidocstore/product.asp?sku=ANSI%2FISO%2FIEC+9899%2D1999"
+}
+
+@Book{graham-1993:on-lisp,
+  author       = "Paul Graham",
+  title	       = "On {Lisp}",
+  publisher    = "Prentice Hall",
+  year	       = 1993,
+  pages	       = 432,
+  isbn	       = "0130-305529",
+  url	       = "http://www.paulgraham.com/onlisp.html"
+}
+
+@Book{iso-1990:c,
+  author       = "{ISO}",
+  title	       = "{ISO\slash IEC 9899:1990}: {Programming} languages ---
+                  {C}",
+  publisher    = "International Organization for Standardization",
+  year	       = 1990,
+  address      = "Geneva, Switzerland",
+  pages	       = "????",
+  isbn	       = "????",
+  url	       = "http://www.iso.ch/cate/d17782.html"
+}
+
+%%%----- That's all, folks --------------------------------------------------
diff --git a/doc/sod.tex b/doc/sod.tex
index 1e2a1a6..9b2964d 100644
--- a/doc/sod.tex
+++ b/doc/sod.tex
@@ -174,9 +174,7 @@
 %%%--------------------------------------------------------------------------
 \backmatter
 
-\bibliography{%
-  isostd,%
-  sigplan1990}
+\bibliography{sod}
 \printindex
 
 %%%----- That's all, folks --------------------------------------------------
diff --git a/doc/structures.tex b/doc/structures.tex
index 242d199..01e1ecd 100644
--- a/doc/structures.tex
+++ b/doc/structures.tex
@@ -422,7 +422,7 @@ and this is followed by corresponding members
 \end{prog}
 for each of $C$'s superclasses $A$ in the same chain in some (unimportant)
 order.  The (somewhat obtuse) purpose of this union is to engage the `common
-initial sequence' rule of \cite[6.5.2.3]{ISO:1990:IIP,ANSI:1999:AII}.
+initial sequence' rule of \cite[6.5.2.3]{iso-1990:c,ansi-1999:c}.
 
 \subsubsection{The ichain structure}
 The @|ichain| structure contains (in order), a pointer
-- 
2.11.0

