diff options
author | Raymond Hettinger <python@rcn.com> | 2003-05-10 07:41:55 (GMT) |
---|---|---|
committer | Raymond Hettinger <python@rcn.com> | 2003-05-10 07:41:55 (GMT) |
commit | 0fd525fd1c8e2b3374c7acda0facbdce9dfbb63e (patch) | |
tree | 263c2e59c971d71cc7029c798e5acc6d1de2c62a | |
parent | 0dfd7a93617a33348a8d3b8155e8a037a1d8e283 (diff) | |
download | cpython-0fd525fd1c8e2b3374c7acda0facbdce9dfbb63e.zip cpython-0fd525fd1c8e2b3374c7acda0facbdce9dfbb63e.tar.gz cpython-0fd525fd1c8e2b3374c7acda0facbdce9dfbb63e.tar.bz2 |
Add table level validation and made minor fix-ups.
-rw-r--r-- | Tools/scripts/texcheck.py | 30 |
1 files changed, 22 insertions, 8 deletions
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 @@ Options: -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 @@ cmdstr = r""" \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 @@ def matchclose(c_lineno, c_symbol, openers, pairmap): 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 @@ def checkit(source, opts, morecmds=[]): -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 @@ def checkit(source, opts, morecmds=[]): 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 @@ def checkit(source, opts, morecmds=[]): 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 |