| 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() |