Add table level validation and made minor fix-ups.
diff --git a/Tools/scripts/texcheck.py b/Tools/scripts/texcheck.py
index 96acfc1..ed3f42d 100644
--- a/Tools/scripts/texcheck.py
+++ b/Tools/scripts/texcheck.py
@@ -22,10 +22,6 @@
     -v:         Verbose.  Shows current delimiter and unclosed delimiters.
 """
 
-# Todo:
-#   Add tableiii/lineiii cross-checking
-#   Add braces matching
-
 import re
 import sets
 import sys
@@ -53,7 +49,8 @@
     \textbackslash \mimetype \mailheader \seepep \textunderscore
     \longprogramopt \infinity \plusminus \shortversion \version
     \refmodindex \seerfc \makeindex \makemodindex \renewcommand
-    \indexname \appendix
+    \indexname \appendix \protect \indexiv \mbox \textasciitilde
+    \platform \seeurl \leftmargin \labelwidth \localmoduletable
 """
 
 def matchclose(c_lineno, c_symbol, openers, pairmap):
@@ -68,7 +65,7 @@
     raise Exception, msg
 
 def checkit(source, opts, morecmds=[]):
-    """Check the LaTex formatting in a sequence of lines.
+    """Check the LaTeX formatting in a sequence of lines.
 
     Opts is a mapping of options to option values if any:
         -m          munge parenthesis and brackets
@@ -77,7 +74,7 @@
         -v          verbose listing on delimiters
         -s lineno:  linenumber to start scan (default is 1).
 
-    Morecmds is a sequence of LaTex commands (without backslashes) that
+    Morecmds is a sequence of LaTeX commands (without backslashes) that
     are to be considered valid in the scan.
     """
 
@@ -97,6 +94,12 @@
 
     delimiters = re.compile(r'\\(begin|end){([_a-zA-Z]+)}|([()\[\]])')
 
+    tablestart = re.compile(r'\\begin{(?:long)?table([iv]+)}')
+    tableline = re.compile(r'\\line([iv]+){')
+    tableend = re.compile(r'\\end{(?:long)?table([iv]+)}')
+    tablelevel = ''
+    tablestartline = 0
+
     startline = int(opts.get('-s', '1'))
     lineno = 0
 
@@ -134,8 +137,19 @@
             if '-v' in opts:
                 print '   --> ', openers
 
+        # Check table levels (make sure lineii only inside lineiii)
+        m = tablestart.search(line)
+        if m:
+            tablelevel = m.group(1)
+            tablestartline = lineno
+        m = tableline.search(line)
+        if m and m.group(1) != tablelevel:
+            print r'Warning, \line%s on line %d does not match \table%s on line %d' % (m.group(1), lineno, tablelevel, tablestartline)
+        if tableend.search(line):
+            tablelevel = ''
+
     for lineno, symbol in openers:
-        print "Unmatched open delimiter '%s' on line %d", (symbol, lineno)
+        print "Unmatched open delimiter '%s' on line %d" % (symbol, lineno)
     print 'Done checking %d lines.' % (lineno,)
     return 0