From c4ac789be76357d7fbf85a2ba29c80f98017af70 Mon Sep 17 00:00:00 2001 From: Raymond Hettinger Date: Sat, 14 Jul 2012 17:58:29 -0700 Subject: [PATCH] Fix-up latex styling --- Tools/scripts/highlight.py | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/Tools/scripts/highlight.py b/Tools/scripts/highlight.py index 31a5a81ce8c..005c0f46242 100755 --- a/Tools/scripts/highlight.py +++ b/Tools/scripts/highlight.py @@ -145,23 +145,25 @@ def build_html_page(classified_text, title='python', #### LaTeX Output ########################################## -default_latex_colors = { - 'comment': 'red', - 'string': 'green', - 'docstring': 'green', - 'keyword': 'orange', - 'builtin': 'purple', - 'definition': 'orange', - 'defname': 'blue', - 'operator': 'brown', +default_latex_commands = { + 'comment': '{\color{red}#1}', + 'string': '{\color{ForestGreen}#1}', + 'docstring': '{\emph{\color{ForestGreen}#1}}', + 'keyword': '{\color{orange}#1}', + 'builtin': '{\color{purple}#1}', + 'definition': '{\color{orange}#1}', + 'defname': '{\color{blue}#1}', + 'operator': '{\color{brown}#1}', } default_latex_document = r''' \documentclass{article} \usepackage{alltt} +\usepackage{upquote} \usepackage{color} \usepackage[usenames,dvipsnames]{xcolor} \usepackage[cm]{fullpage} +%(macros)s \begin{document} \center{\LARGE{%(title)s}} \begin{alltt} @@ -181,17 +183,18 @@ def latex_escape(s): return re.sub(r'[\\#$%^&_{}~]', lambda mo: xlat[mo.group()], s) def latex_highlight(classified_text, title = 'python', - colors = default_latex_colors, + commands = default_latex_commands, document = default_latex_document): 'Create a complete LaTeX document with colorized source code' + macros = '\n'.join(r'\newcommand{\py%s}[1]{%s}' % c for c in commands.items()) result = [] for kind, text in classified_text: if kind: - result.append(r'{\color{%s}' % colors[kind]) + result.append(r'\py%s{' % kind) result.append(latex_escape(text)) if kind: result.append('}') - return default_latex_document % dict(title=title, body=''.join(result)) + return default_latex_document % dict(title=title, macros=macros, body=''.join(result)) if __name__ == '__main__':