diff --git a/Doc/lib/libos.tex b/Doc/lib/libos.tex
index 0e1633b..15829fd 100644
--- a/Doc/lib/libos.tex
+++ b/Doc/lib/libos.tex
@@ -418,7 +418,7 @@
 
 (Note that \code{\var{child_stdin}, \var{child_stdout}, and
 \var{child_stderr}} are named from the point of view of the child
-process, i.e. \var{child_stdin} is the child's standard input.)
+process, so \var{child_stdin} is the child's standard input.)
 
 This functionality is also available in the \refmodule{popen2} module
 using functions of the same names, but the return values of those
@@ -1008,7 +1008,7 @@
 \versionchanged [If \function{stat_float_times} returns true, the time
 values are floats, measuring seconds. Fractions of a second may be
 reported if the system supports that. On Mac OS, the times are always
-floats. See \function{stat_float_times} for further discussion. ]{2.3}
+floats. See \function{stat_float_times} for further discussion]{2.3}
 
 On some \UNIX{} systems (such as Linux), the following attributes may
 also be available:
@@ -1018,8 +1018,8 @@
 \member{st_flags} (user defined flags for file).
 
 On other \UNIX{} systems (such as FreeBSD), the following attributes
-may be available (but may be only filled out of root tries to
-use them:
+may be available (but may be only filled out if root tries to
+use them):
 \member{st_gen} (file generation number),
 \member{st_birthtime} (time of file creation).
 
@@ -1069,9 +1069,9 @@
 
 \begin{funcdesc}{stat_float_times}{\optional{newvalue}}
 Determine whether \class{stat_result} represents time stamps as float
-objects.  If newval is True, future calls to stat() return floats, if
-it is False, future calls return ints.  If newval is omitted, return
-the current setting.
+objects.  If \var{newvalue} is \code{True}, future calls to \function{stat()}
+return floats, if it is \code{False}, future calls return ints.
+If \var{newvalue} is omitted, return the current setting.
 
 For compatibility with older Python versions, accessing
 \class{stat_result} as a tuple always returns integers.
@@ -1080,7 +1080,7 @@
 which do not work correctly with floating point time stamps can use
 this function to restore the old behaviour]{2.5}
 
-The resolution of the timestamps (i.e. the smallest possible fraction)
+The resolution of the timestamps (that is the smallest possible fraction)
 depends on the system. Some systems only support second resolution;
 on these systems, the fraction will always be zero.
 
@@ -1224,7 +1224,7 @@
 
 By default errors from the \code{os.listdir()} call are ignored.  If
 optional argument \var{onerror} is specified, it should be a function;
-it will be called with one argument, an os.error instance.  It can
+it will be called with one argument, an \exception{OSError} instance.  It can
 report the error to continue with the walk, or raise the exception
 to abort the walk.  Note that the filename is available as the
 \code{filename} attribute of the exception object.
@@ -1833,8 +1833,8 @@
 
 \begin{funcdesc}{getloadavg}{}
 Return the number of processes in the system run queue averaged over
-the last 1, 5, and 15 minutes or raises OSError if the load average
-was unobtainable.
+the last 1, 5, and 15 minutes or raises \exception{OSError} if the load 
+average was unobtainable.
 
 \versionadded{2.3}
 \end{funcdesc}
