Use \citetitle and \programopt as appropriate.
diff --git a/Doc/lib/lib.tex b/Doc/lib/lib.tex
index f57c961..b0f5705 100644
--- a/Doc/lib/lib.tex
+++ b/Doc/lib/lib.tex
@@ -30,16 +30,16 @@
 language.  It supports a wide range of applications, from simple text
 processing scripts to interactive WWW browsers.
 
-While the \emph{Python Reference Manual} describes the exact syntax and
-semantics of the language, it does not describe the standard library
-that is distributed with the language, and which greatly enhances its
-immediate usability.  This library contains built-in modules (written
-in C) that provide access to system functionality such as file I/O
-that would otherwise be inaccessible to Python programmers, as well as
-modules written in Python that provide standardized solutions for many
-problems that occur in everyday programming.  Some of these modules
-are explicitly designed to encourage and enhance the portability of
-Python programs.
+While the \citetitle[../ref/ref.html]{Python Reference Manual}
+describes the exact syntax and semantics of the language, it does not
+describe the standard library that is distributed with the language,
+and which greatly enhances its immediate usability.  This library
+contains built-in modules (written in C) that provide access to system
+functionality such as file I/O that would otherwise be inaccessible to
+Python programmers, as well as modules written in Python that provide
+standardized solutions for many problems that occur in everyday
+programming.  Some of these modules are explicitly designed to
+encourage and enhance the portability of Python programs.
 
 This library reference manual documents Python's standard library, as
 well as many optional library modules (which may or may not be
@@ -50,11 +50,13 @@
 documented in the Reference Manual.
 
 This manual assumes basic knowledge about the Python language.  For an
-informal introduction to Python, see the \emph{Python Tutorial}; the
-\emph{Python Reference Manual} remains the highest authority on
-syntactic and semantic questions.  Finally, the manual entitled
-\emph{Extending and Embedding the Python Interpreter} describes how to
-add new extensions to Python and how to embed it in other applications.
+informal introduction to Python, see the
+\citetitle[../tut/tut.html]{Python Tutorial}; the
+\citetitle[../ref/ref.html]{Python Reference Manual} remains the
+highest authority on syntactic and semantic questions.  Finally, the
+manual entitled \citetitle[../ext/ext.html]{Extending and Embedding
+the Python Interpreter} describes how to add new extensions to Python
+and how to embed it in other applications.
 
 \end{abstract}
 
diff --git a/Doc/lib/libcurses.tex b/Doc/lib/libcurses.tex
index b147670..a108002 100644
--- a/Doc/lib/libcurses.tex
+++ b/Doc/lib/libcurses.tex
@@ -16,7 +16,8 @@
 
 \begin{seealso}
   \seetext{Tutorial material on using curses with Python is available
-           on the Python Web site as Andrew Kuchling's \emph{Curses
+           on the Python Web site as Andrew Kuchling's
+\citetitle[http://www.python.org/doc/howto/curses/curses.html]{Curses
            Programming with Python}, at
            \url{http://www.python.org/doc/howto/curses/curses.html}.}
 \end{seealso}
diff --git a/Doc/lib/libexcs.tex b/Doc/lib/libexcs.tex
index fb80b76..1c57ee8 100644
--- a/Doc/lib/libexcs.tex
+++ b/Doc/lib/libexcs.tex
@@ -11,15 +11,17 @@
 exceptions is present in the standard library module
 \module{exceptions}; this module never needs to be imported explicitly.
 
-For backward compatibility, when Python is invoked with the \code{-X}
-option, most of the standard exceptions are strings\footnote{For
-forward-compatibility the new exceptions \exception{Exception},
-\exception{LookupError},
-\exception{ArithmeticError}, \exception{EnvironmentError}, and
-\exception{StandardError} are tuples.}.  This option may be used to
-run code that breaks because of the different semantics of class based
-exceptions.  The \code{-X} option will become obsolete in future
-Python versions, so the recommended solution is to fix the code.
+For backward compatibility, when Python is invoked with the
+\programopt{-X} option, most of the standard exceptions are
+strings\footnote{
+  For forward-compatibility the new exceptions \exception{Exception},
+  \exception{LookupError}, \exception{ArithmeticError},
+  \exception{EnvironmentError}, and \exception{StandardError} are
+  tuples.
+}.  This option may be used to run code that breaks because of the
+different semantics of class based exceptions.  The
+\programopt{-X} option will become obsolete in future Python versions,
+so the recommended solution is to fix the code.
 
 Two distinct string objects with the same value are considered different
 exceptions.  This is done to force programmers to use exception names
@@ -122,8 +124,8 @@
 \setindexsubitem{(built-in exception)}
 
 The following exceptions are the exceptions that are actually raised.
-They are class objects, except when the \code{-X} option is used to
-revert back to string-based standard exceptions.
+They are class objects, except when the \programopt{-X} option is used
+to revert back to string-based standard exceptions.
 
 \begin{excdesc}{AssertionError}
 Raised when an \keyword{assert} statement fails.
@@ -150,7 +152,7 @@
 \begin{excdesc}{FloatingPointError}
   Raised when a floating point operation fails.  This exception is
   always defined, but can only be raised when Python is configured
-  with the \code{--with-fpectl} option, or the
+  with the \programopt{-}\programopt{-with-fpectl} option, or the
   \constant{WANT_SIGFPE_HANDLER} symbol is defined in the
   \file{config.h} file.
 \end{excdesc}
diff --git a/Doc/lib/libimaplib.tex b/Doc/lib/libimaplib.tex
index c96eb1f..c275a6e 100644
--- a/Doc/lib/libimaplib.tex
+++ b/Doc/lib/libimaplib.tex
@@ -72,10 +72,10 @@
 extensive example of usage.
 
 \begin{seealso}
-\seetext{Documents describing the protocol, and sources and binaries
-for servers implementing it, can all be found at the University of
-Washington's \emph{IMAP Information Center}
-(\url{http://www.cac.washington.edu/imap/}).}
+  \seetext{Documents describing the protocol, and sources and binaries 
+           for servers implementing it, can all be found at the
+           University of Washington's \emph{IMAP Information Center}
+           (\url{http://www.cac.washington.edu/imap/}).}
 \end{seealso}
 
 
diff --git a/Doc/lib/libobjs.tex b/Doc/lib/libobjs.tex
index d19697b..354bebc 100644
--- a/Doc/lib/libobjs.tex
+++ b/Doc/lib/libobjs.tex
@@ -20,5 +20,5 @@
 grouping operators that have the same priority in the same box.
 Binary operators of the same priority group from left to right.
 (Unary operators group from right to left, but there you have no real
-choice.)  See Chapter 5 of the \emph{Python Reference Manual} for the
-complete picture on operator priorities.
+choice.)  See Chapter 5 of the \citetitle[../ref/ref.html]{Python
+Reference Manual} for the complete picture on operator priorities.
diff --git a/Doc/lib/libparser.tex b/Doc/lib/libparser.tex
index 5a339b2..db49d89 100644
--- a/Doc/lib/libparser.tex
+++ b/Doc/lib/libparser.tex
@@ -35,23 +35,23 @@
 
 Most importantly, a good understanding of the Python grammar processed
 by the internal parser is required.  For full information on the
-language syntax, refer to the \emph{Python Language Reference}.  The
-parser itself is created from a grammar specification defined in the file
-\file{Grammar/Grammar} in the standard Python distribution.  The parse
-trees stored in the AST objects created by this module are the
-actual output from the internal parser when created by the
-\function{expr()} or \function{suite()} functions, described below.  The AST
-objects created by \function{sequence2ast()} faithfully simulate those
-structures.  Be aware that the values of the sequences which are
-considered ``correct'' will vary from one version of Python to another
-as the formal grammar for the language is revised.  However,
-transporting code from one Python version to another as source text
-will always allow correct parse trees to be created in the target
-version, with the only restriction being that migrating to an older
-version of the interpreter will not support more recent language
-constructs.  The parse trees are not typically compatible from one
-version to another, whereas source code has always been
-forward-compatible.
+language syntax, refer to the \citetitle[../ref/ref.html]{Python
+Language Reference}.  The parser itself is created from a grammar
+specification defined in the file \file{Grammar/Grammar} in the
+standard Python distribution.  The parse trees stored in the AST
+objects created by this module are the actual output from the internal
+parser when created by the \function{expr()} or \function{suite()}
+functions, described below.  The AST objects created by
+\function{sequence2ast()} faithfully simulate those structures.  Be
+aware that the values of the sequences which are considered
+``correct'' will vary from one version of Python to another as the
+formal grammar for the language is revised.  However, transporting
+code from one Python version to another as source text will always
+allow correct parse trees to be created in the target version, with
+the only restriction being that migrating to an older version of the
+interpreter will not support more recent language constructs.  The
+parse trees are not typically compatible from one version to another,
+whereas source code has always been forward-compatible.
 
 Each element of the sequences returned by \function{ast2list()} or
 \function{ast2tuple()} has a simple form.  Sequences representing
diff --git a/Doc/lib/libsocket.tex b/Doc/lib/libsocket.tex
index e8c8731..4abe805 100644
--- a/Doc/lib/libsocket.tex
+++ b/Doc/lib/libsocket.tex
@@ -9,13 +9,13 @@
 It is available on \UNIX{} systems that support this interface.
 
 For an introduction to socket programming (in C), see the following
-papers: \emph{An Introductory 4.3BSD Interprocess Communication
-Tutorial}, by Stuart Sechrest and \emph{An Advanced 4.3BSD Interprocess
-Communication Tutorial}, by Samuel J.  Leffler et al, both in the
-\UNIX{} Programmer's Manual, Supplementary Documents 1 (sections PS1:7
-and PS1:8).  The \UNIX{} manual pages for the various socket-related
-system calls are also a valuable source of information on the details of
-socket semantics.
+papers: \citetitle{An Introductory 4.3BSD Interprocess Communication
+Tutorial}, by Stuart Sechrest and \citetitle{An Advanced 4.3BSD
+Interprocess Communication Tutorial}, by Samuel J.  Leffler et al,
+both in the \citetitle{\UNIX{} Programmer's Manual, Supplementary Documents 1}
+(sections PS1:7 and PS1:8).  The \UNIX{} manual pages for the various
+socket-related system calls are also a valuable source of information
+on the details of socket semantics.
 
 The Python interface is a straightforward transliteration of the
 \UNIX{} system call and library interface for sockets to Python's
diff --git a/Doc/lib/libsocksvr.tex b/Doc/lib/libsocksvr.tex
index 13b6d64..120b049 100644
--- a/Doc/lib/libsocksvr.tex
+++ b/Doc/lib/libsocksvr.tex
@@ -16,8 +16,8 @@
 \class{UnixStreamServer} and \class{UnixDatagramServer} classes are
 similar, but use \UNIX{} domain sockets; they're not available on
 non-\UNIX{} platforms.  For more details on network programming, consult
-a book such as W. Richard Steven's \emph{UNIX Network Programming}
-or Ralph Davis's \emph{Win32 Network Programming}.
+a book such as W. Richard Steven's \citetitle{UNIX Network Programming}
+or Ralph Davis's \citetitle{Win32 Network Programming}.
 
 These four classes process requests \dfn{synchronously}; each request
 must be completed before the next request can be started.  This isn't
diff --git a/Doc/lib/libsoundex.tex b/Doc/lib/libsoundex.tex
index 8073a8c..25e82cf 100644
--- a/Doc/lib/libsoundex.tex
+++ b/Doc/lib/libsoundex.tex
@@ -32,13 +32,12 @@
 
 
 \begin{seealso}
-
-\seetext{Donald E. Knuth, \emph{Sorting and Searching,} vol. 3 in
-``The Art of Computer Programming.'' Addison-Wesley Publishing
-Company:  Reading, MA: 1973. pp.\ 391-392.  Discusses the origin and
-usefulness of the algorithm, as well as the algorithm itself.  Knuth
-gives his sources as \emph{U.S. Patents 1261167} (1918) and
-\emph{1435663} (1922), attributing the algorithm to Margaret K. Odell
-and Robert C. Russel.  Additional references are provided.}
-
+  \seetext{Donald E. Knuth, \citetitle{Sorting and Searching}, vol. 3
+           in ``The Art of Computer Programming.'' Addison-Wesley
+           Publishing Company:  Reading, MA: 1973. pp.\ 391-392.
+           Discusses the origin and usefulness of the algorithm, as
+           well as the algorithm itself.  Knuth gives his sources as
+           \emph{U.S. Patents 1261167} (1918) and \emph{1435663}
+           (1922), attributing the algorithm to Margaret K. Odell and
+           Robert C. Russel.  Additional references are provided.}
 \end{seealso}
diff --git a/Doc/lib/libstdtypes.tex b/Doc/lib/libstdtypes.tex
index 39c9290..6ae216b 100644
--- a/Doc/lib/libstdtypes.tex
+++ b/Doc/lib/libstdtypes.tex
@@ -302,14 +302,14 @@
 There are three sequence types: strings, lists and tuples.
 
 Strings literals are written in single or double quotes:
-\code{'xyzzy'}, \code{"frobozz"}.  See Chapter 2 of the \emph{Python
-Reference Manual} for more about string literals.  Lists are
-constructed with square brackets, separating items with commas:
-\code{[a, b, c]}.  Tuples are constructed by the comma operator (not
-within square brackets), with or without enclosing parentheses, but an
-empty tuple must have the enclosing parentheses, e.g.,
-\code{a, b, c} or \code{()}.  A single item tuple must have a trailing
-comma, e.g., \code{(d,)}.
+\code{'xyzzy'}, \code{"frobozz"}.  See Chapter 2 of the
+\citetitle[../ref/ref.html]{Python Reference Manual} for more about
+string literals.  Lists are constructed with square brackets,
+separating items with commas: \code{[a, b, c]}.  Tuples are
+constructed by the comma operator (not within square brackets), with
+or without enclosing parentheses, but an empty tuple must have the
+enclosing parentheses, e.g., \code{a, b, c} or \code{()}.  A single
+item tuple must have a trailing comma, e.g., \code{(d,)}.
 \indexii{sequence}{types}
 \indexii{string}{type}
 \indexii{tuple}{type}
@@ -629,7 +629,8 @@
 \subsubsection{Classes and Class Instances \label{typesobjects}}
 \nodename{Classes and Instances}
 
-See Chapters 3 and 7 of the \emph{Python Reference Manual} for these.
+See Chapters 3 and 7 of the \citetitle[../ref/ref.html]{Python
+Reference Manual} for these.
 
 
 \subsubsection{Functions \label{typesfunctions}}
@@ -667,7 +668,8 @@
 calling \code{\var{m}.im_func(\var{m}.im_self, \var{arg-1},
 \var{arg-2}, \textrm{\ldots}, \var{arg-n})}.
 
-See the \emph{Python Reference Manual} for more information.
+See the \citetitle[../ref/ref.html]{Python Reference Manual} for more
+information.
 
 
 \subsubsection{Code Objects \label{bltin-code-objects}}
@@ -689,7 +691,8 @@
 \stindex{exec}
 \bifuncindex{eval}
 
-See the \emph{Python Reference Manual} for more information.
+See the \citetitle[../ref/ref.html]{Python Reference Manual} for more
+information.
 
 
 \subsubsection{Type Objects \label{bltin-type-objects}}
@@ -715,9 +718,10 @@
 
 \subsubsection{The Ellipsis Object \label{bltin-ellipsis-object}}
 
-This object is used by extended slice notation (see the \emph{Python
-Reference Manual}).  It supports no special operations.  There is
-exactly one ellipsis object, named \code{Ellipsis} (a built-in name).
+This object is used by extended slice notation (see the
+\citetitle[../ref/ref.html]{Python Reference Manual}).  It supports no
+special operations.  There is exactly one ellipsis object, named
+\constant{Ellipsis} (a built-in name).
 
 It is written as \code{Ellipsis}.
 
@@ -868,9 +872,9 @@
 
 \subsubsection{Internal Objects \label{typesinternal}}
 
-See the \emph{Python Reference Manual} for this information.  It
-describes code objects, stack frame objects, traceback objects, and
-slice objects.
+See the \citetitle[../ref/ref.html]{Python Reference Manual} for this
+information.  It describes code objects, stack frame objects,
+traceback objects, and slice objects.
 
 
 \subsection{Special Attributes \label{specialattrs}}
diff --git a/Doc/lib/libundoc.tex b/Doc/lib/libundoc.tex
index 2967cb8..e8f3736 100644
--- a/Doc/lib/libundoc.tex
+++ b/Doc/lib/libundoc.tex
@@ -14,8 +14,9 @@
 
 \begin{description}
 \item[\module{Tkinter}]
---- Interface to Tcl/Tk for graphical user interfaces;
-Fredrik Lundh is working on this one!  See \emph{An Introduction to
+--- Interface to Tcl/Tk for graphical user interfaces; Fredrik Lundh
+is working on this one!  See
+\citetitle[http://www.pythonware.com/library/]{An Introduction to
 Tkinter} at \url{http://www.pythonware.com/library/} for on-line
 reference material.
 
diff --git a/Doc/lib/libwhrandom.tex b/Doc/lib/libwhrandom.tex
index 8df1b77..b79377d 100644
--- a/Doc/lib/libwhrandom.tex
+++ b/Doc/lib/libwhrandom.tex
@@ -22,13 +22,9 @@
 \end{funcdesc}
 
 \begin{funcdesc}{seed}{x, y, z}
-Initializes the random number generator from the integers
-\var{x},
-\var{y}
-and
-\var{z}.
-When the module is first imported, the random number is initialized
-using values derived from the current time.
+Initializes the random number generator from the integers \var{x},
+\var{y} and \var{z}.  When the module is first imported, the random
+number is initialized using values derived from the current time.
 \end{funcdesc}
 
 \begin{funcdesc}{uniform}{a, b}
@@ -43,10 +39,10 @@
 generator = whrandom.whrandom()
 N = generator.random()
 \end{verbatim}
-%
+
 \begin{seealso}
-\seemodule{random}{generators for various random distributions}
-\seetext{Wichmann, B. A. \& Hill, I. D., ``Algorithm AS 183: 
-An efficient and portable pseudo-random number generator'', 
-\emph{Applied Statistics} 31 (1982) 188-190}
+  \seemodule{random}{generators for various random distributions}
+  \seetext{Wichmann, B. A. \& Hill, I. D., ``Algorithm AS 183: 
+           An efficient and portable pseudo-random number generator'',
+           \citetitle{Applied Statistics} 31 (1982) 188-190.}
 \end{seealso}