diff --git a/Doc/lib/libcd.tex b/Doc/lib/libcd.tex
index b3ca8b2..e2571cc 100644
--- a/Doc/lib/libcd.tex
+++ b/Doc/lib/libcd.tex
@@ -6,9 +6,9 @@
 It is available only on Silicon Graphics systems.
 
 The way the library works is as follows.  A program opens the CD-ROM
-device with \code{cd.open()} and creates a parser to parse the data
-from the CD with \code{cd.createparser()}.  The object returned by
-\code{cd.open()} can be used to read data from the CD, but also to get
+device with \function{open()} and creates a parser to parse the data
+from the CD with \function{createparser()}.  The object returned by
+\function{open()} can be used to read data from the CD, but also to get
 status information for the CD-ROM device, and to get information about
 the CD, such as the table of contents.  Data from the CD is passed to
 the parser, which parses the frames, and calls any callback
@@ -27,34 +27,34 @@
 relative to the beginning of the CD, and to the beginning of the
 track.
 
-Module \code{cd} defines the following functions and constants:
+Module \module{cd} defines the following functions and constants:
 
-\setindexsubitem{(in module cd)}
 
 \begin{funcdesc}{createparser}{}
 Create and return an opaque parser object.  The methods of the parser
 object are described below.
 \end{funcdesc}
 
-\begin{funcdesc}{msftoframe}{min\, sec\, frame}
-Converts a \code{(minutes, seconds, frames)} triple representing time
-in absolute time code into the corresponding CD frame number.
+\begin{funcdesc}{msftoframe}{minutes, seconds, frames}
+Converts a \code{(\var{minutes}, \var{seconds}, \var{frames})} triple
+representing time in absolute time code into the corresponding CD
+frame number.
 \end{funcdesc}
 
-\begin{funcdesc}{open}{\optional{device\optional{\, mode}}}
+\begin{funcdesc}{open}{\optional{device\optional{, mode}}}
 Open the CD-ROM device.  The return value is an opaque player object;
 methods of the player object are described below.  The device is the
-name of the SCSI device file, e.g. /dev/scsi/sc0d4l0, or \code{None}.
-If omited or \code{None}, the hardware inventory is consulted to
-locate a CD-ROM drive.  The \code{mode}, if not omited, should be the
-string 'r'.
+name of the SCSI device file, e.g. \code{'/dev/scsi/sc0d4l0'}, or
+\code{None}.  If omitted or \code{None}, the hardware inventory is
+consulted to locate a CD-ROM drive.  The \var{mode}, if not omited,
+should be the string \code{'r'}.
 \end{funcdesc}
 
 The module defines the following variables:
 
-\begin{datadesc}{error}
+\begin{excdesc}{error}
 Exception raised on various errors.
-\end{datadesc}
+\end{excdesc}
 
 \begin{datadesc}{DATASIZE}
 The size of one frame's worth of audio data.  This is the size of the
@@ -65,7 +65,8 @@
 The size of one uninterpreted frame of audio data.
 \end{datadesc}
 
-The following variables are states as returned by \code{getstatus}:
+The following variables are states as returned by
+\function{getstatus()}:
 
 \begin{datadesc}{READY}
 The drive is ready for operation loaded with an audio CD.
@@ -95,7 +96,7 @@
 \end{datadesc}
 
 \begin{datadesc}{STILL}
-The equivalent of \code{PAUSED} on older (non 3301) model Toshiba
+The equivalent of \constant{PAUSED} on older (non 3301) model Toshiba
 CD-ROM drives.  Such drives have never been shipped by SGI.
 \end{datadesc}
 
@@ -108,14 +109,14 @@
 \dataline{ident}
 \dataline{control}
 Integer constants describing the various types of parser callbacks
-that can be set by the \code{addcallback()} method of CD parser
+that can be set by the \method{addcallback()} method of CD parser
 objects (see below).
 \end{datadesc}
 
-Player objects (returned by \code{cd.open()}) have the following
+Player objects (returned by \function{open()}) have the following
 methods:
 
-\setindexsubitem{(CD player object method)}
+\setindexsubitem{(CD player method)}
 
 \begin{funcdesc}{allowremoval}{}
 Unlocks the eject button on the CD-ROM drive permitting the user to
@@ -123,14 +124,14 @@
 \end{funcdesc}
 
 \begin{funcdesc}{bestreadsize}{}
-Returns the best value to use for the \code{num_frames} parameter of
-the \code{readda} method.  Best is defined as the value that permits a
-continuous flow of data from the CD-ROM drive.
+Returns the best value to use for the \var{num_frames} parameter of
+the \method{readda()} method.  Best is defined as the value that
+permits a continuous flow of data from the CD-ROM drive.
 \end{funcdesc}
 
 \begin{funcdesc}{close}{}
 Frees the resources associated with the player object.  After calling
-\code{close}, the methods of the object should no longer be used.
+\method{close()}, the methods of the object should no longer be used.
 \end{funcdesc}
 
 \begin{funcdesc}{eject}{}
@@ -140,15 +141,15 @@
 \begin{funcdesc}{getstatus}{}
 Returns information pertaining to the current state of the CD-ROM
 drive.  The returned information is a tuple with the following values:
-\code{state}, \code{track}, \code{rtime}, \code{atime}, \code{ttime},
-\code{first}, \code{last}, \code{scsi_audio}, \code{cur_block}.
-\code{rtime} is the time relative to the start of the current track;
-\code{atime} is the time relative to the beginning of the disc;
-\code{ttime} is the total time on the disc.  For more information on
-the meaning of the values, see the manual for CDgetstatus.
-The value of \code{state} is one of the following: \code{cd.ERROR},
-\code{cd.NODISC}, \code{cd.READY}, \code{cd.PLAYING},
-\code{cd.PAUSED}, \code{cd.STILL}, or \code{cd.CDROM}.
+\var{state}, \var{track}, \var{rtime}, \var{atime}, \var{ttime},
+\var{first}, \var{last}, \var{scsi_audio}, \var{cur_block}.
+\var{rtime} is the time relative to the start of the current track;
+\var{atime} is the time relative to the beginning of the disc;
+\var{ttime} is the total time on the disc.  For more information on
+the meaning of the values, see the man page \manpage{CDgetstatus}{3dm}.
+The value of \var{state} is one of the following: \constant{ERROR},
+\constant{NODISC}, \constant{READY}, \constant{PLAYING},
+\constant{PAUSED}, \constant{STILL}, or \constant{CDROM}.
 \end{funcdesc}
 
 \begin{funcdesc}{gettrackinfo}{track}
@@ -157,36 +158,37 @@
 the track and the duration of the track.
 \end{funcdesc}
 
-\begin{funcdesc}{msftoblock}{min\, sec\, frame}
+\begin{funcdesc}{msftoblock}{min, sec, frame}
 Converts a minutes, seconds, frames triple representing a time in
 absolute time code into the corresponding logical block number for the
-given CD-ROM drive.  You should use \code{cd.msftoframe()} rather than
-\code{msftoblock()} for comparing times.  The logical block number
+given CD-ROM drive.  You should use \function{msftoframe()} rather than
+\method{msftoblock()} for comparing times.  The logical block number
 differs from the frame number by an offset required by certain CD-ROM
 drives.
 \end{funcdesc}
 
-\begin{funcdesc}{play}{start\, play}
+\begin{funcdesc}{play}{start, play}
 Starts playback of an audio CD in the CD-ROM drive at the specified
 track.  The audio output appears on the CD-ROM drive's headphone and
 audio jacks (if fitted).  Play stops at the end of the disc.
-\code{start} is the number of the track at which to start playing the
-CD; if \code{play} is 0, the CD will be set to an initial paused
-state.  The method \code{togglepause()} can then be used to commence
+\var{start} is the number of the track at which to start playing the
+CD; if \var{play} is 0, the CD will be set to an initial paused
+state.  The method \method{togglepause()} can then be used to commence
 play.
 \end{funcdesc}
 
-\begin{funcdesc}{playabs}{min\, sec\, frame\, play}
-Like \code{play()}, except that the start is given in minutes,
-seconds, frames instead of a track number.
+\begin{funcdesc}{playabs}{minutes, seconds, frames, play}
+Like \method{play()}, except that the start is given in minutes,
+seconds, and frames instead of a track number.
 \end{funcdesc}
 
-\begin{funcdesc}{playtrack}{start\, play}
-Like \code{play()}, except that playing stops at the end of the track.
+\begin{funcdesc}{playtrack}{start, play}
+Like \method{play()}, except that playing stops at the end of the
+track.
 \end{funcdesc}
 
-\begin{funcdesc}{playtrackabs}{track\, min\, sec\, frame\, play}
-Like \code{play()}, except that playing begins at the spcified
+\begin{funcdesc}{playtrackabs}{track, minutes, seconds, frames, play}
+Like \method{play()}, except that playing begins at the spcified
 absolute time and ends at the end of the specified track.
 \end{funcdesc}
 
@@ -198,16 +200,16 @@
 \begin{funcdesc}{readda}{num_frames}
 Reads the specified number of frames from an audio CD mounted in the
 CD-ROM drive.  The return value is a string representing the audio
-frames.  This string can be passed unaltered to the \code{parseframe}
-method of the parser object.
+frames.  This string can be passed unaltered to the
+\method{parseframe()} method of the parser object.
 \end{funcdesc}
 
-\begin{funcdesc}{seek}{min\, sec\, frame}
+\begin{funcdesc}{seek}{minutes, seconds, frames}
 Sets the pointer that indicates the starting point of the next read of
 digital audio data from a CD-ROM.  The pointer is set to an absolute
-time code location specified in minutes, seconds, and frames.  The
-return value is the logical block number to which the pointer has been
-set.
+time code location specified in \var{minutes}, \var{seconds}, and
+\var{frames}.  The return value is the logical block number to which
+the pointer has been set.
 \end{funcdesc}
 
 \begin{funcdesc}{seekblock}{block}
@@ -232,46 +234,40 @@
 Pauses the CD if it is playing, and makes it play if it is paused.
 \end{funcdesc}
 
-Parser objects (returned by \code{cd.createparser()}) have the
+Parser objects (returned by \function{createparser()}) have the
 following methods:
 
-\setindexsubitem{(CD parser object method)}
+\setindexsubitem{(CD parser method)}
 
-\begin{funcdesc}{addcallback}{type\, func\, arg}
+\begin{funcdesc}{addcallback}{type, func, arg}
 Adds a callback for the parser.  The parser has callbacks for eight
 different types of data in the digital audio data stream.  Constants
-for these types are defined at the \code{cd} module level (see above).
-The callback is called as follows: \code{func(arg, type, data)}, where
-\code{arg} is the user supplied argument, \code{type} is the
-particular type of callback, and \code{data} is the data returned for
-this \code{type} of callback.  The type of the data depends on the
-\code{type} of callback as follows:
-\begin{description}
-\item[\code{cd.audio}: ]
-The argument is a string which can be passed unmodified to
-\code{al.writesamps()}.
-\item[\code{cd.pnum}: ]
-The argument is an integer giving the program (track) number.
-\item[\code{cd.index}: ]
-The argument is an integer giving the index number.
-\item[\code{cd.ptime}: ]
-The argument is a tuple consisting of the program time in minutes,
-seconds, and frames.
-\item[\code{cd.atime}: ]
-The argument is a tuple consisting of the absolute time in minutes,
-seconds, and frames.
-\item[\code{cd.catalog}: ]
-The argument is a string of 13 characters, giving the catalog number
-of the CD.
-\item[\code{cd.ident}: ]
-The argument is a string of 12 characters, giving the ISRC
-identification number of the recording.  The string consists of two
-characters country code, three characters owner code, two characters
-giving the year, and five characters giving a serial number.
-\item[\code{cd.control}: ]
-The argument is an integer giving the control bits from the CD subcode
-data.
-\end{description}
+for these types are defined at the \module{cd} module level (see above).
+The callback is called as follows: \code{\var{func}(\var{arg}, type,
+data)}, where \var{arg} is the user supplied argument, \var{type} is
+the particular type of callback, and \var{data} is the data returned
+for this \var{type} of callback.  The type of the data depends on the
+\var{type} of callback as follows:
+
+\begin{tableii}{|l|l|}{code}{Type}{Value}
+  \lineii{audio}{String which can be passed unmodified to
+\function{al.writesamps()}.}
+  \lineii{pnum}{Integer giving the program (track) number.}
+  \lineii{index}{Integer giving the index number.}
+  \lineii{ptime}{Tuple consisting of the program time in minutes,
+seconds, and frames.}
+  \lineii{atime}{Tuple consisting of the absolute time in minutes,
+seconds, and frames.}
+  \lineii{catalog}{String of 13 characters, giving the catalog number
+of the CD.}
+  \lineii{ident}{String of 12 characters, giving the ISRC
+identification number of the recording. \\
+&The string consists of two characters country code, three characters
+owner code, \\
+&two characters giving the year, and five characters giving a serial number.}
+  \lineii{control}{Integer giving the control bits from the CD
+subcode data}
+\end{tableii}
 \end{funcdesc}
 
 \begin{funcdesc}{deleteparser}{}
@@ -282,20 +278,20 @@
 
 \begin{funcdesc}{parseframe}{frame}
 Parses one or more frames of digital audio data from a CD such as
-returned by \code{readda}.  It determines which subcodes are present
-in the data.  If these subcodes have changed since the last frame,
-then \code{parseframe} executes a callback of the appropriate type
-passing to it the subcode data found in the frame.
-Unlike the C function, more than one frame of digital audio data can
-be passed to this method.
+returned by \method{readda()}.  It determines which subcodes are
+present in the data.  If these subcodes have changed since the last
+frame, then \method{parseframe()} executes a callback of the
+appropriate type passing to it the subcode data found in the frame.
+Unlike the \C{} function, more than one frame of digital audio data
+can be passed to this method.
 \end{funcdesc}
 
 \begin{funcdesc}{removecallback}{type}
-Removes the callback for the given \code{type}.
+Removes the callback for the given \var{type}.
 \end{funcdesc}
 
 \begin{funcdesc}{resetparser}{}
 Resets the fields of the parser used for tracking subcodes to an
-initial state.  \code{resetparser} should be called after the disc has
-been changed.
+initial state.  \method{resetparser()} should be called after the disc
+has been changed.
 \end{funcdesc}
diff --git a/Doc/libcd.tex b/Doc/libcd.tex
index b3ca8b2..e2571cc 100644
--- a/Doc/libcd.tex
+++ b/Doc/libcd.tex
@@ -6,9 +6,9 @@
 It is available only on Silicon Graphics systems.
 
 The way the library works is as follows.  A program opens the CD-ROM
-device with \code{cd.open()} and creates a parser to parse the data
-from the CD with \code{cd.createparser()}.  The object returned by
-\code{cd.open()} can be used to read data from the CD, but also to get
+device with \function{open()} and creates a parser to parse the data
+from the CD with \function{createparser()}.  The object returned by
+\function{open()} can be used to read data from the CD, but also to get
 status information for the CD-ROM device, and to get information about
 the CD, such as the table of contents.  Data from the CD is passed to
 the parser, which parses the frames, and calls any callback
@@ -27,34 +27,34 @@
 relative to the beginning of the CD, and to the beginning of the
 track.
 
-Module \code{cd} defines the following functions and constants:
+Module \module{cd} defines the following functions and constants:
 
-\setindexsubitem{(in module cd)}
 
 \begin{funcdesc}{createparser}{}
 Create and return an opaque parser object.  The methods of the parser
 object are described below.
 \end{funcdesc}
 
-\begin{funcdesc}{msftoframe}{min\, sec\, frame}
-Converts a \code{(minutes, seconds, frames)} triple representing time
-in absolute time code into the corresponding CD frame number.
+\begin{funcdesc}{msftoframe}{minutes, seconds, frames}
+Converts a \code{(\var{minutes}, \var{seconds}, \var{frames})} triple
+representing time in absolute time code into the corresponding CD
+frame number.
 \end{funcdesc}
 
-\begin{funcdesc}{open}{\optional{device\optional{\, mode}}}
+\begin{funcdesc}{open}{\optional{device\optional{, mode}}}
 Open the CD-ROM device.  The return value is an opaque player object;
 methods of the player object are described below.  The device is the
-name of the SCSI device file, e.g. /dev/scsi/sc0d4l0, or \code{None}.
-If omited or \code{None}, the hardware inventory is consulted to
-locate a CD-ROM drive.  The \code{mode}, if not omited, should be the
-string 'r'.
+name of the SCSI device file, e.g. \code{'/dev/scsi/sc0d4l0'}, or
+\code{None}.  If omitted or \code{None}, the hardware inventory is
+consulted to locate a CD-ROM drive.  The \var{mode}, if not omited,
+should be the string \code{'r'}.
 \end{funcdesc}
 
 The module defines the following variables:
 
-\begin{datadesc}{error}
+\begin{excdesc}{error}
 Exception raised on various errors.
-\end{datadesc}
+\end{excdesc}
 
 \begin{datadesc}{DATASIZE}
 The size of one frame's worth of audio data.  This is the size of the
@@ -65,7 +65,8 @@
 The size of one uninterpreted frame of audio data.
 \end{datadesc}
 
-The following variables are states as returned by \code{getstatus}:
+The following variables are states as returned by
+\function{getstatus()}:
 
 \begin{datadesc}{READY}
 The drive is ready for operation loaded with an audio CD.
@@ -95,7 +96,7 @@
 \end{datadesc}
 
 \begin{datadesc}{STILL}
-The equivalent of \code{PAUSED} on older (non 3301) model Toshiba
+The equivalent of \constant{PAUSED} on older (non 3301) model Toshiba
 CD-ROM drives.  Such drives have never been shipped by SGI.
 \end{datadesc}
 
@@ -108,14 +109,14 @@
 \dataline{ident}
 \dataline{control}
 Integer constants describing the various types of parser callbacks
-that can be set by the \code{addcallback()} method of CD parser
+that can be set by the \method{addcallback()} method of CD parser
 objects (see below).
 \end{datadesc}
 
-Player objects (returned by \code{cd.open()}) have the following
+Player objects (returned by \function{open()}) have the following
 methods:
 
-\setindexsubitem{(CD player object method)}
+\setindexsubitem{(CD player method)}
 
 \begin{funcdesc}{allowremoval}{}
 Unlocks the eject button on the CD-ROM drive permitting the user to
@@ -123,14 +124,14 @@
 \end{funcdesc}
 
 \begin{funcdesc}{bestreadsize}{}
-Returns the best value to use for the \code{num_frames} parameter of
-the \code{readda} method.  Best is defined as the value that permits a
-continuous flow of data from the CD-ROM drive.
+Returns the best value to use for the \var{num_frames} parameter of
+the \method{readda()} method.  Best is defined as the value that
+permits a continuous flow of data from the CD-ROM drive.
 \end{funcdesc}
 
 \begin{funcdesc}{close}{}
 Frees the resources associated with the player object.  After calling
-\code{close}, the methods of the object should no longer be used.
+\method{close()}, the methods of the object should no longer be used.
 \end{funcdesc}
 
 \begin{funcdesc}{eject}{}
@@ -140,15 +141,15 @@
 \begin{funcdesc}{getstatus}{}
 Returns information pertaining to the current state of the CD-ROM
 drive.  The returned information is a tuple with the following values:
-\code{state}, \code{track}, \code{rtime}, \code{atime}, \code{ttime},
-\code{first}, \code{last}, \code{scsi_audio}, \code{cur_block}.
-\code{rtime} is the time relative to the start of the current track;
-\code{atime} is the time relative to the beginning of the disc;
-\code{ttime} is the total time on the disc.  For more information on
-the meaning of the values, see the manual for CDgetstatus.
-The value of \code{state} is one of the following: \code{cd.ERROR},
-\code{cd.NODISC}, \code{cd.READY}, \code{cd.PLAYING},
-\code{cd.PAUSED}, \code{cd.STILL}, or \code{cd.CDROM}.
+\var{state}, \var{track}, \var{rtime}, \var{atime}, \var{ttime},
+\var{first}, \var{last}, \var{scsi_audio}, \var{cur_block}.
+\var{rtime} is the time relative to the start of the current track;
+\var{atime} is the time relative to the beginning of the disc;
+\var{ttime} is the total time on the disc.  For more information on
+the meaning of the values, see the man page \manpage{CDgetstatus}{3dm}.
+The value of \var{state} is one of the following: \constant{ERROR},
+\constant{NODISC}, \constant{READY}, \constant{PLAYING},
+\constant{PAUSED}, \constant{STILL}, or \constant{CDROM}.
 \end{funcdesc}
 
 \begin{funcdesc}{gettrackinfo}{track}
@@ -157,36 +158,37 @@
 the track and the duration of the track.
 \end{funcdesc}
 
-\begin{funcdesc}{msftoblock}{min\, sec\, frame}
+\begin{funcdesc}{msftoblock}{min, sec, frame}
 Converts a minutes, seconds, frames triple representing a time in
 absolute time code into the corresponding logical block number for the
-given CD-ROM drive.  You should use \code{cd.msftoframe()} rather than
-\code{msftoblock()} for comparing times.  The logical block number
+given CD-ROM drive.  You should use \function{msftoframe()} rather than
+\method{msftoblock()} for comparing times.  The logical block number
 differs from the frame number by an offset required by certain CD-ROM
 drives.
 \end{funcdesc}
 
-\begin{funcdesc}{play}{start\, play}
+\begin{funcdesc}{play}{start, play}
 Starts playback of an audio CD in the CD-ROM drive at the specified
 track.  The audio output appears on the CD-ROM drive's headphone and
 audio jacks (if fitted).  Play stops at the end of the disc.
-\code{start} is the number of the track at which to start playing the
-CD; if \code{play} is 0, the CD will be set to an initial paused
-state.  The method \code{togglepause()} can then be used to commence
+\var{start} is the number of the track at which to start playing the
+CD; if \var{play} is 0, the CD will be set to an initial paused
+state.  The method \method{togglepause()} can then be used to commence
 play.
 \end{funcdesc}
 
-\begin{funcdesc}{playabs}{min\, sec\, frame\, play}
-Like \code{play()}, except that the start is given in minutes,
-seconds, frames instead of a track number.
+\begin{funcdesc}{playabs}{minutes, seconds, frames, play}
+Like \method{play()}, except that the start is given in minutes,
+seconds, and frames instead of a track number.
 \end{funcdesc}
 
-\begin{funcdesc}{playtrack}{start\, play}
-Like \code{play()}, except that playing stops at the end of the track.
+\begin{funcdesc}{playtrack}{start, play}
+Like \method{play()}, except that playing stops at the end of the
+track.
 \end{funcdesc}
 
-\begin{funcdesc}{playtrackabs}{track\, min\, sec\, frame\, play}
-Like \code{play()}, except that playing begins at the spcified
+\begin{funcdesc}{playtrackabs}{track, minutes, seconds, frames, play}
+Like \method{play()}, except that playing begins at the spcified
 absolute time and ends at the end of the specified track.
 \end{funcdesc}
 
@@ -198,16 +200,16 @@
 \begin{funcdesc}{readda}{num_frames}
 Reads the specified number of frames from an audio CD mounted in the
 CD-ROM drive.  The return value is a string representing the audio
-frames.  This string can be passed unaltered to the \code{parseframe}
-method of the parser object.
+frames.  This string can be passed unaltered to the
+\method{parseframe()} method of the parser object.
 \end{funcdesc}
 
-\begin{funcdesc}{seek}{min\, sec\, frame}
+\begin{funcdesc}{seek}{minutes, seconds, frames}
 Sets the pointer that indicates the starting point of the next read of
 digital audio data from a CD-ROM.  The pointer is set to an absolute
-time code location specified in minutes, seconds, and frames.  The
-return value is the logical block number to which the pointer has been
-set.
+time code location specified in \var{minutes}, \var{seconds}, and
+\var{frames}.  The return value is the logical block number to which
+the pointer has been set.
 \end{funcdesc}
 
 \begin{funcdesc}{seekblock}{block}
@@ -232,46 +234,40 @@
 Pauses the CD if it is playing, and makes it play if it is paused.
 \end{funcdesc}
 
-Parser objects (returned by \code{cd.createparser()}) have the
+Parser objects (returned by \function{createparser()}) have the
 following methods:
 
-\setindexsubitem{(CD parser object method)}
+\setindexsubitem{(CD parser method)}
 
-\begin{funcdesc}{addcallback}{type\, func\, arg}
+\begin{funcdesc}{addcallback}{type, func, arg}
 Adds a callback for the parser.  The parser has callbacks for eight
 different types of data in the digital audio data stream.  Constants
-for these types are defined at the \code{cd} module level (see above).
-The callback is called as follows: \code{func(arg, type, data)}, where
-\code{arg} is the user supplied argument, \code{type} is the
-particular type of callback, and \code{data} is the data returned for
-this \code{type} of callback.  The type of the data depends on the
-\code{type} of callback as follows:
-\begin{description}
-\item[\code{cd.audio}: ]
-The argument is a string which can be passed unmodified to
-\code{al.writesamps()}.
-\item[\code{cd.pnum}: ]
-The argument is an integer giving the program (track) number.
-\item[\code{cd.index}: ]
-The argument is an integer giving the index number.
-\item[\code{cd.ptime}: ]
-The argument is a tuple consisting of the program time in minutes,
-seconds, and frames.
-\item[\code{cd.atime}: ]
-The argument is a tuple consisting of the absolute time in minutes,
-seconds, and frames.
-\item[\code{cd.catalog}: ]
-The argument is a string of 13 characters, giving the catalog number
-of the CD.
-\item[\code{cd.ident}: ]
-The argument is a string of 12 characters, giving the ISRC
-identification number of the recording.  The string consists of two
-characters country code, three characters owner code, two characters
-giving the year, and five characters giving a serial number.
-\item[\code{cd.control}: ]
-The argument is an integer giving the control bits from the CD subcode
-data.
-\end{description}
+for these types are defined at the \module{cd} module level (see above).
+The callback is called as follows: \code{\var{func}(\var{arg}, type,
+data)}, where \var{arg} is the user supplied argument, \var{type} is
+the particular type of callback, and \var{data} is the data returned
+for this \var{type} of callback.  The type of the data depends on the
+\var{type} of callback as follows:
+
+\begin{tableii}{|l|l|}{code}{Type}{Value}
+  \lineii{audio}{String which can be passed unmodified to
+\function{al.writesamps()}.}
+  \lineii{pnum}{Integer giving the program (track) number.}
+  \lineii{index}{Integer giving the index number.}
+  \lineii{ptime}{Tuple consisting of the program time in minutes,
+seconds, and frames.}
+  \lineii{atime}{Tuple consisting of the absolute time in minutes,
+seconds, and frames.}
+  \lineii{catalog}{String of 13 characters, giving the catalog number
+of the CD.}
+  \lineii{ident}{String of 12 characters, giving the ISRC
+identification number of the recording. \\
+&The string consists of two characters country code, three characters
+owner code, \\
+&two characters giving the year, and five characters giving a serial number.}
+  \lineii{control}{Integer giving the control bits from the CD
+subcode data}
+\end{tableii}
 \end{funcdesc}
 
 \begin{funcdesc}{deleteparser}{}
@@ -282,20 +278,20 @@
 
 \begin{funcdesc}{parseframe}{frame}
 Parses one or more frames of digital audio data from a CD such as
-returned by \code{readda}.  It determines which subcodes are present
-in the data.  If these subcodes have changed since the last frame,
-then \code{parseframe} executes a callback of the appropriate type
-passing to it the subcode data found in the frame.
-Unlike the C function, more than one frame of digital audio data can
-be passed to this method.
+returned by \method{readda()}.  It determines which subcodes are
+present in the data.  If these subcodes have changed since the last
+frame, then \method{parseframe()} executes a callback of the
+appropriate type passing to it the subcode data found in the frame.
+Unlike the \C{} function, more than one frame of digital audio data
+can be passed to this method.
 \end{funcdesc}
 
 \begin{funcdesc}{removecallback}{type}
-Removes the callback for the given \code{type}.
+Removes the callback for the given \var{type}.
 \end{funcdesc}
 
 \begin{funcdesc}{resetparser}{}
 Resets the fields of the parser used for tracking subcodes to an
-initial state.  \code{resetparser} should be called after the disc has
-been changed.
+initial state.  \method{resetparser()} should be called after the disc
+has been changed.
 \end{funcdesc}
