import os import sys import regex import regsub import string import getopt def main(): process(sys.stdin, sys.stdout) dashes = regex.compile('^-+[ \t]*$') equals = regex.compile('^=+[ \t]*$') stars = regex.compile('^\*+[ \t]*$') blank = regex.compile('^[ \t]*$') indented = regex.compile('^\( *\t\| \)[ \t]*[^ \t]') def process(fi, fo): inverbatim = 0 line = '\n' nextline = fi.readline() while nextline: prevline = line line = nextline nextline = fi.readline() fmt = None if dashes.match(nextline) >= 0: fmt = '\\subsection{%s}\n' elif equals.match(nextline) >= 0: fmt = '\\section{%s}\n' elif stars.match(nextline) >= 0: fmt = '\\chapter{%s}\n' if fmt: nextline = '\n' line = fmt % string.strip(line) if '(' in line: line = regsub.gsub('[a-zA-Z0-9_]+()', '{\\\\tt \\0}', line) elif inverbatim: if blank.match(line) >= 0 and \ indented.match(nextline) < 0: inverbatim = 0 fo.write('\\end{verbatim}\n') else: if indented.match(line) >= 0 and \ blank.match(prevline) >= 0: inverbatim = 1 fo.write('\\begin{verbatim}\n') if inverbatim: line = string.expandtabs(line, 4) elif not fmt and '(' in line: line = regsub.gsub('[a-zA-Z0-9_]+()', '\\\\code{\\0}', line) fo.write(line) main()