diff --git a/Doc/lib/libcgi.tex b/Doc/lib/libcgi.tex
index d736f39..4768f0f 100644
--- a/Doc/lib/libcgi.tex
+++ b/Doc/lib/libcgi.tex
@@ -40,8 +40,8 @@
 generate a minimal header section looks like this:
 
 \begin{verbatim}
-	print "Content-type: text/html"	# HTML is following
-	print				# blank line, end of headers
+    print "Content-type: text/html"     # HTML is following
+    print                               # blank line, end of headers
 \end{verbatim}
 
 The second section is usually HTML, which allows the client software
@@ -49,9 +49,9 @@
 Here's Python code that prints a simple piece of HTML:
 
 \begin{verbatim}
-	print "<TITLE>CGI script output</TITLE>"
-	print "<H1>This is my first CGI script</H1>"
-	print "Hello, world!"
+    print "<TITLE>CGI script output</TITLE>"
+    print "<H1>This is my first CGI script</H1>"
+    print "Hello, world!"
 \end{verbatim}
 
 (It may not be fully legal HTML according to the letter of the
@@ -77,16 +77,16 @@
 the fields \code{name} and \code{addr} are both set to a non-empty string:
 
 \begin{verbatim}
-	form = cgi.FieldStorage()
-	form_ok = 0
-	if form.has_key("name") and form.has_key("addr"):
-		if form["name"].value != "" and form["addr"].value != "":
-			form_ok = 1
-	if not form_ok:
-		print "<H1>Error</H1>"
-		print "Please fill in the name and addr fields."
-		return
-	...further form processing here...
+    form = cgi.FieldStorage()
+    form_ok = 0
+    if form.has_key("name") and form.has_key("addr"):
+        if form["name"].value != "" and form["addr"].value != "":
+            form_ok = 1
+    if not form_ok:
+        print "<H1>Error</H1>"
+        print "Please fill in the name and addr fields."
+        return
+    ...further form processing here...
 \end{verbatim}
 
 Here the fields, accessed through \code{form[key]}, are themselves instances
@@ -101,20 +101,20 @@
 concatenates any number of username fields, separated by commas:
 
 \begin{verbatim}
-	username = form["username"]
-	if type(username) is type([]):
-		# Multiple username fields specified
-		usernames = ""
-		for item in username:
-			if usernames:
-				# Next item -- insert comma
-				usernames = usernames + "," + item.value
-			else:
-				# First item -- don't insert comma
-				usernames = item.value
-	else:
-		# Single username field specified
-		usernames = username.value
+    username = form["username"]
+    if type(username) is type([]):
+        # Multiple username fields specified
+        usernames = ""
+        for item in username:
+            if usernames:
+                # Next item -- insert comma
+                usernames = usernames + "," + item.value
+            else:
+                # First item -- don't insert comma
+                usernames = item.value
+    else:
+        # Single username field specified
+        usernames = username.value
 \end{verbatim}
 
 If a field represents an uploaded file, the value attribute reads the 
@@ -124,14 +124,14 @@
 attribute:
 
 \begin{verbatim}
-	fileitem = form["userfile"]
-	if fileitem.file:
-		# It's an uploaded file; count lines
-		linecount = 0
-		while 1:
-			line = fileitem.file.readline()
-			if not line: break
-			linecount = linecount + 1
+    fileitem = form["userfile"]
+    if fileitem.file:
+        # It's an uploaded file; count lines
+        linecount = 0
+        while 1:
+            line = fileitem.file.readline()
+            if not line: break
+            linecount = linecount + 1
 \end{verbatim}
 
 The file upload draft standard entertains the possibility of uploading
@@ -252,7 +252,7 @@
 followed by the pathname of the Python interpreter, for instance:
 
 \begin{verbatim}
-	#!/usr/local/bin/python
+    #!/usr/local/bin/python
 \end{verbatim}
 
 Make sure the Python interpreter exists and is executable by ``others''.
@@ -274,9 +274,9 @@
 before importing other modules, e.g.:
 
 \begin{verbatim}
-	import sys
-	sys.path.insert(0, "/usr/home/joe/lib/python")
-	sys.path.insert(0, "/usr/local/lib/python")
+    import sys
+    sys.path.insert(0, "/usr/home/joe/lib/python")
+    sys.path.insert(0, "/usr/local/lib/python")
 \end{verbatim}
 
 (This way, the directory inserted last will be searched first!)
@@ -312,7 +312,7 @@
 request by entering a URL into your browser of the form:
 
 \begin{verbatim}
-	http://yourhostname/cgi-bin/cgi.py?name=Joe+Blow&addr=At+Home
+    http://yourhostname/cgi-bin/cgi.py?name=Joe+Blow&addr=At+Home
 \end{verbatim}
 
 If this gives an error of type 404, the server cannot find the script
@@ -329,9 +329,9 @@
 your script: replace its main code with the single statement
 
 \begin{verbatim}
-	cgi.test()
+    cgi.test()
 \end{verbatim}
-	
+
 This should produce the same results as those gotten from installing
 the \code{cgi.py} file itself.
 
@@ -364,16 +364,16 @@
 For example:
 
 \begin{verbatim}
-	import sys
-	import traceback
-	print "Content-type: text/html"
-	print
-	sys.stderr = sys.stdout
-	try:
-		...your code here...
-	except:
-		print "\n\n<PRE>"
-		traceback.print_exc()
+    import sys
+    import traceback
+    print "Content-type: text/html"
+    print
+    sys.stderr = sys.stdout
+    try:
+        ...your code here...
+    except:
+        print "\n\n<PRE>"
+        traceback.print_exc()
 \end{verbatim}
 
 Notes: The assignment to \code{sys.stderr} is needed because the traceback
@@ -385,11 +385,11 @@
 built-in modules):
 
 \begin{verbatim}
-	import sys
-	sys.stderr = sys.stdout
-	print "Content-type: text/plain"
-	print
-	...your code here...
+    import sys
+    sys.stderr = sys.stdout
+    print "Content-type: text/plain"
+    print
+    ...your code here...
 \end{verbatim}
 
 This relies on the Python interpreter to print the traceback.  The
diff --git a/Doc/libcgi.tex b/Doc/libcgi.tex
index d736f39..4768f0f 100644
--- a/Doc/libcgi.tex
+++ b/Doc/libcgi.tex
@@ -40,8 +40,8 @@
 generate a minimal header section looks like this:
 
 \begin{verbatim}
-	print "Content-type: text/html"	# HTML is following
-	print				# blank line, end of headers
+    print "Content-type: text/html"     # HTML is following
+    print                               # blank line, end of headers
 \end{verbatim}
 
 The second section is usually HTML, which allows the client software
@@ -49,9 +49,9 @@
 Here's Python code that prints a simple piece of HTML:
 
 \begin{verbatim}
-	print "<TITLE>CGI script output</TITLE>"
-	print "<H1>This is my first CGI script</H1>"
-	print "Hello, world!"
+    print "<TITLE>CGI script output</TITLE>"
+    print "<H1>This is my first CGI script</H1>"
+    print "Hello, world!"
 \end{verbatim}
 
 (It may not be fully legal HTML according to the letter of the
@@ -77,16 +77,16 @@
 the fields \code{name} and \code{addr} are both set to a non-empty string:
 
 \begin{verbatim}
-	form = cgi.FieldStorage()
-	form_ok = 0
-	if form.has_key("name") and form.has_key("addr"):
-		if form["name"].value != "" and form["addr"].value != "":
-			form_ok = 1
-	if not form_ok:
-		print "<H1>Error</H1>"
-		print "Please fill in the name and addr fields."
-		return
-	...further form processing here...
+    form = cgi.FieldStorage()
+    form_ok = 0
+    if form.has_key("name") and form.has_key("addr"):
+        if form["name"].value != "" and form["addr"].value != "":
+            form_ok = 1
+    if not form_ok:
+        print "<H1>Error</H1>"
+        print "Please fill in the name and addr fields."
+        return
+    ...further form processing here...
 \end{verbatim}
 
 Here the fields, accessed through \code{form[key]}, are themselves instances
@@ -101,20 +101,20 @@
 concatenates any number of username fields, separated by commas:
 
 \begin{verbatim}
-	username = form["username"]
-	if type(username) is type([]):
-		# Multiple username fields specified
-		usernames = ""
-		for item in username:
-			if usernames:
-				# Next item -- insert comma
-				usernames = usernames + "," + item.value
-			else:
-				# First item -- don't insert comma
-				usernames = item.value
-	else:
-		# Single username field specified
-		usernames = username.value
+    username = form["username"]
+    if type(username) is type([]):
+        # Multiple username fields specified
+        usernames = ""
+        for item in username:
+            if usernames:
+                # Next item -- insert comma
+                usernames = usernames + "," + item.value
+            else:
+                # First item -- don't insert comma
+                usernames = item.value
+    else:
+        # Single username field specified
+        usernames = username.value
 \end{verbatim}
 
 If a field represents an uploaded file, the value attribute reads the 
@@ -124,14 +124,14 @@
 attribute:
 
 \begin{verbatim}
-	fileitem = form["userfile"]
-	if fileitem.file:
-		# It's an uploaded file; count lines
-		linecount = 0
-		while 1:
-			line = fileitem.file.readline()
-			if not line: break
-			linecount = linecount + 1
+    fileitem = form["userfile"]
+    if fileitem.file:
+        # It's an uploaded file; count lines
+        linecount = 0
+        while 1:
+            line = fileitem.file.readline()
+            if not line: break
+            linecount = linecount + 1
 \end{verbatim}
 
 The file upload draft standard entertains the possibility of uploading
@@ -252,7 +252,7 @@
 followed by the pathname of the Python interpreter, for instance:
 
 \begin{verbatim}
-	#!/usr/local/bin/python
+    #!/usr/local/bin/python
 \end{verbatim}
 
 Make sure the Python interpreter exists and is executable by ``others''.
@@ -274,9 +274,9 @@
 before importing other modules, e.g.:
 
 \begin{verbatim}
-	import sys
-	sys.path.insert(0, "/usr/home/joe/lib/python")
-	sys.path.insert(0, "/usr/local/lib/python")
+    import sys
+    sys.path.insert(0, "/usr/home/joe/lib/python")
+    sys.path.insert(0, "/usr/local/lib/python")
 \end{verbatim}
 
 (This way, the directory inserted last will be searched first!)
@@ -312,7 +312,7 @@
 request by entering a URL into your browser of the form:
 
 \begin{verbatim}
-	http://yourhostname/cgi-bin/cgi.py?name=Joe+Blow&addr=At+Home
+    http://yourhostname/cgi-bin/cgi.py?name=Joe+Blow&addr=At+Home
 \end{verbatim}
 
 If this gives an error of type 404, the server cannot find the script
@@ -329,9 +329,9 @@
 your script: replace its main code with the single statement
 
 \begin{verbatim}
-	cgi.test()
+    cgi.test()
 \end{verbatim}
-	
+
 This should produce the same results as those gotten from installing
 the \code{cgi.py} file itself.
 
@@ -364,16 +364,16 @@
 For example:
 
 \begin{verbatim}
-	import sys
-	import traceback
-	print "Content-type: text/html"
-	print
-	sys.stderr = sys.stdout
-	try:
-		...your code here...
-	except:
-		print "\n\n<PRE>"
-		traceback.print_exc()
+    import sys
+    import traceback
+    print "Content-type: text/html"
+    print
+    sys.stderr = sys.stdout
+    try:
+        ...your code here...
+    except:
+        print "\n\n<PRE>"
+        traceback.print_exc()
 \end{verbatim}
 
 Notes: The assignment to \code{sys.stderr} is needed because the traceback
@@ -385,11 +385,11 @@
 built-in modules):
 
 \begin{verbatim}
-	import sys
-	sys.stderr = sys.stdout
-	print "Content-type: text/plain"
-	print
-	...your code here...
+    import sys
+    sys.stderr = sys.stdout
+    print "Content-type: text/plain"
+    print
+    ...your code here...
 \end{verbatim}
 
 This relies on the Python interpreter to print the traceback.  The
