avoid ugly markup based on the unfortunate conversions of ">>" and "<<" to
guillemets; no need for magic here
diff --git a/Doc/api/abstract.tex b/Doc/api/abstract.tex
index f01512c..119f0d2 100644
--- a/Doc/api/abstract.tex
+++ b/Doc/api/abstract.tex
@@ -630,7 +630,7 @@
   Returns the result of right shifting \var{o1} by \var{o2} on
   success, or \NULL{} on failure.  The operation is done
   \emph{in-place} when \var{o1} supports it.  This is the equivalent
-  of the Python statement \samp{\var{o1} >\code{>=} \var{o2}}.
+  of the Python statement \samp{\var{o1} >>= \var{o2}}.
 \end{cfuncdesc}
 
 
diff --git a/Doc/ext/windows.tex b/Doc/ext/windows.tex
index a821094..ca18a1e 100644
--- a/Doc/ext/windows.tex
+++ b/Doc/ext/windows.tex
@@ -88,7 +88,7 @@
     Once the Debug build has succeeded, bring up a DOS box, and change
     to the \file{example_nt\textbackslash Debug} directory.  You
     should now be able to repeat the following session (\code{C>} is
-    the DOS prompt, \code{>\code{>}>} is the Python prompt; note that
+    the DOS prompt, \code{>>>} is the Python prompt; note that
     build information and various debug output from Python may not
     match this screen dump exactly):
 
diff --git a/Doc/lib/libcodeop.tex b/Doc/lib/libcodeop.tex
index 7d6153e..6972b6f 100644
--- a/Doc/lib/libcodeop.tex
+++ b/Doc/lib/libcodeop.tex
@@ -19,7 +19,7 @@
 \begin{enumerate}
   \item Being able to tell if a line of input completes a Python 
         statement: in short, telling whether to print
-        `\code{>\code{>}>~}' or `\code{...~}' next.
+        `\code{>>>~}' or `\code{...~}' next.
   \item Remembering which future statements the user has entered, so 
         subsequent input can be compiled with these in effect.
 \end{enumerate}
diff --git a/Doc/lib/libdoctest.tex b/Doc/lib/libdoctest.tex
index 4c4f228..b318d2a 100644
--- a/Doc/lib/libdoctest.tex
+++ b/Doc/lib/libdoctest.tex
@@ -333,8 +333,8 @@
 \end{verbatim}
 
 Any expected output must immediately follow the final
-\code{'>\code{>}>~'} or \code{'...~'} line containing the code, and
-the expected output (if any) extends to the next \code{'>\code{>}>~'}
+\code{'>>>~'} or \code{'...~'} line containing the code, and
+the expected output (if any) extends to the next \code{'>>>~'}
 or all-whitespace line.
 
 The fine print:
@@ -386,7 +386,7 @@
 \end{verbatim}
 
 and as many leading whitespace characters are stripped from the
-expected output as appeared in the initial \code{'>\code{>}>~'} line
+expected output as appeared in the initial \code{'>>>~'} line
 that started the example.
 \end{itemize}
 
diff --git a/Doc/lib/libhtmlparser.tex b/Doc/lib/libhtmlparser.tex
index b85ba56..52f8409 100644
--- a/Doc/lib/libhtmlparser.tex
+++ b/Doc/lib/libhtmlparser.tex
@@ -132,7 +132,7 @@
 \begin{methoddesc}{handle_decl}{decl}
 Method called when an SGML declaration is read by the parser.  The
 \var{decl} parameter will be the entire contents of the declaration
-inside the \code{<!}...\code{>} markup.It is intended to be overridden
+inside the \code{<!}...\code{>} markup.  It is intended to be overridden
 by a derived class; the base class implementation does nothing.
 \end{methoddesc}
 
diff --git a/Doc/lib/liboperator.tex b/Doc/lib/liboperator.tex
index 41da9b7..5ba3209 100644
--- a/Doc/lib/liboperator.tex
+++ b/Doc/lib/liboperator.tex
@@ -320,7 +320,7 @@
 
 \begin{funcdesc}{irshift}{a, b}
 \funcline{__irshift__}{a, b}
-\code{a = irshift(a, b)} is equivalent to \code{a >}\code{>= b}.
+\code{a = irshift(a, b)} is equivalent to \code{a >>= b}.
 \versionadded{2.5}
 \end{funcdesc}
 
@@ -499,7 +499,7 @@
           {\code{neg(\var{a})}}
   \lineiii{Negation (Logical)}{\code{not \var{a}}}
           {\code{not_(\var{a})}}
-  \lineiii{Right Shift}{\code{\var{a} >\code{>} \var{b}}}
+  \lineiii{Right Shift}{\code{\var{a} >> \var{b}}}
           {\code{rshift(\var{a}, \var{b})}}
   \lineiii{Sequence Repitition}{\code{\var{seq} * \var{i}}}
           {\code{repeat(\var{seq}, \var{i})}}
diff --git a/Doc/lib/libsys.tex b/Doc/lib/libsys.tex
index ea8950a..8a23fbc 100644
--- a/Doc/lib/libsys.tex
+++ b/Doc/lib/libsys.tex
@@ -410,7 +410,7 @@
   Strings specifying the primary and secondary prompt of the
   interpreter.  These are only defined if the interpreter is in
   interactive mode.  Their initial values in this case are
-  \code{'>\code{>}> '} and \code{'... '}.  If a non-string object is
+  \code{'>>>~'} and \code{'... '}.  If a non-string object is
   assigned to either variable, its \function{str()} is re-evaluated
   each time the interpreter prepares to read a new interactive
   command; this can be used to implement a dynamic prompt.
diff --git a/Doc/lib/libtrace.tex b/Doc/lib/libtrace.tex
index bafee61..2465aac 100644
--- a/Doc/lib/libtrace.tex
+++ b/Doc/lib/libtrace.tex
@@ -54,7 +54,7 @@
 
 \item[\longprogramopt{missing}, \programopt{-m}]
 When generating annotated listings, mark lines which
-were not executed with \code{>}\code{>}\code{>}\code{>}\code{>}\code{>}.
+were not executed with `\code{>>>>>>}'.
 
 \item[\longprogramopt{summary}, \programopt{-s}]
 When using \longprogramopt{count} or \longprogramopt{report}, write a
diff --git a/Doc/ref/ref3.tex b/Doc/ref/ref3.tex
index ba0594f..a756e30 100644
--- a/Doc/ref/ref3.tex
+++ b/Doc/ref/ref3.tex
@@ -1875,8 +1875,8 @@
 called to implement the binary arithmetic operations (\code{+},
 \code{-}, \code{*}, \code{//}, \code{\%},
 \function{divmod()}\bifuncindex{divmod},
-\function{pow()}\bifuncindex{pow}, \code{**}, \code{<}\code{<},
-\code{>}\code{>}, \code{\&}, \code{\^}, \code{|}).  For instance, to
+\function{pow()}\bifuncindex{pow}, \code{**}, \code{<<},
+\code{>>}, \code{\&}, \code{\^}, \code{|}).  For instance, to
 evaluate the expression \var{x}\code{+}\var{y}, where \var{x} is an
 instance of a class that has an \method{__add__()} method,
 \code{\var{x}.__add__(\var{y})} is called.  The \method{__divmod__()}
@@ -1915,8 +1915,8 @@
 called to implement the binary arithmetic operations (\code{+},
 \code{-}, \code{*}, \code{/}, \code{\%},
 \function{divmod()}\bifuncindex{divmod},
-\function{pow()}\bifuncindex{pow}, \code{**}, \code{<}\code{<},
-\code{>}\code{>}, \code{\&}, \code{\^}, \code{|}) with reflected
+\function{pow()}\bifuncindex{pow}, \code{**}, \code{<<},
+\code{>>}, \code{\&}, \code{\^}, \code{|}) with reflected
 (swapped) operands.  These functions are only called if the left
 operand does not support the corresponding operation.  For instance,
 to evaluate the expression \var{x}\code{-}\var{y}, where \var{y} is an
@@ -1942,7 +1942,7 @@
 \methodline[numeric object]{__ior__}{self, other}
 These methods are called to implement the augmented arithmetic
 operations (\code{+=}, \code{-=}, \code{*=}, \code{/=}, \code{\%=},
-\code{**=}, \code{<}\code{<=}, \code{>}\code{>=}, \code{\&=},
+\code{**=}, \code{<<=}, \code{>>=}, \code{\&=},
 \code{\textasciicircum=}, \code{|=}).  These methods should attempt to do the
 operation in-place (modifying \var{self}) and return the result (which
 could be, but does not have to be, \var{self}).  If a specific method
diff --git a/Doc/ref/ref5.tex b/Doc/ref/ref5.tex
index 1f2dc5e..eca2f11 100644
--- a/Doc/ref/ref5.tex
+++ b/Doc/ref/ref5.tex
@@ -1158,7 +1158,7 @@
   \hline
     \lineii{\code{\&}}				{Bitwise AND}
   \hline
-    \lineii{\code{<}\code{<}, \code{>}\code{>}}	{Shifts}
+    \lineii{\code{<<}, \code{>>}}		{Shifts}
   \hline
     \lineii{\code{+}, \code{-}}{Addition and subtraction}
   \hline
diff --git a/Doc/ref/ref6.tex b/Doc/ref/ref6.tex
index 1eb1258..e820867 100644
--- a/Doc/ref/ref6.tex
+++ b/Doc/ref/ref6.tex
@@ -377,7 +377,7 @@
 \begin{productionlist}
   \production{print_stmt}
              {"print" ( \optional{\token{expression} ("," \token{expression})* \optional{","}}}
-  \productioncont{| ">\code{>}" \token{expression}
+  \productioncont{| ">>" \token{expression}
                   \optional{("," \token{expression})+ \optional{","}} )}
 \end{productionlist}
 
diff --git a/Doc/tut/glossary.tex b/Doc/tut/glossary.tex
index c8082d5..17cc767 100644
--- a/Doc/tut/glossary.tex
+++ b/Doc/tut/glossary.tex
@@ -7,7 +7,7 @@
 
 
 \index{>>>}
-\item[\code{>\code{>}>}]
+\item[\code{>>>}]
 The typical Python prompt of the interactive shell.  Often seen for
 code examples that can be tried right away in the interpreter.
 
diff --git a/Doc/tut/tut.tex b/Doc/tut/tut.tex
index 9d45abe..f6cdb1e 100644
--- a/Doc/tut/tut.tex
+++ b/Doc/tut/tut.tex
@@ -264,7 +264,7 @@
 When commands are read from a tty, the interpreter is said to be in
 \emph{interactive mode}.  In this mode it prompts for the next command
 with the \emph{primary prompt}, usually three greater-than signs
-(\samp{>\code{>}>~}); for continuation lines it prompts with the
+(\samp{>>>~}); for continuation lines it prompts with the
 \emph{secondary prompt}, by default three dots (\samp{...~}).
 The interpreter prints a welcome message stating its version number
 and a copyright notice before printing the first prompt:
@@ -423,7 +423,7 @@
 \chapter{An Informal Introduction to Python \label{informal}}
 
 In the following examples, input and output are distinguished by the
-presence or absence of prompts (\samp{>\code{>}>~} and \samp{...~}): to repeat
+presence or absence of prompts (\samp{>>>~} and \samp{...~}): to repeat
 the example, you must type everything after the prompt, when the
 prompt appears; lines that do not begin with a prompt are output from
 the interpreter. %
@@ -455,7 +455,7 @@
 \section{Using Python as a Calculator \label{calculator}}
 
 Let's try some simple Python commands.  Start the interpreter and wait
-for the primary prompt, \samp{>\code{>}>~}.  (It shouldn't take long.)
+for the primary prompt, \samp{>>>~}.  (It shouldn't take long.)
 
 \subsection{Numbers \label{numbers}}
 
diff --git a/Doc/whatsnew/whatsnew20.tex b/Doc/whatsnew/whatsnew20.tex
index bf458fa..7cd0395 100644
--- a/Doc/whatsnew/whatsnew20.tex
+++ b/Doc/whatsnew/whatsnew20.tex
@@ -400,7 +400,7 @@
 % The empty groups below prevent conversion to guillemets.
 The full list of supported assignment operators is \code{+=},
 \code{-=}, \code{*=}, \code{/=}, \code{\%=}, \code{**=}, \code{\&=},
-\code{|=}, \verb|^=|, \code{>{}>=}, and \code{<{}<=}.  Python classes can
+\code{|=}, \verb|^=|, \code{>>=}, and \code{<<=}.  Python classes can
 override the augmented assignment operators by defining methods named
 \method{__iadd__}, \method{__isub__}, etc.  For example, the following
 \class{Number} class stores a number and supports using += to create a