On Tue, Dec 29, 2009 at 12:03 PM, Erik Margraf
Hello all, I wanted to typeset some Python code and stumbled across the pretty printing feature of ConTeXt. So far, I think I've learned the following:
-- There's no pretty printer for python. Neither in MKII nor in MKIV -- The wiki has an example implementation for a python pretty printer for MKII, i guess.
I decided to play a little bit with pretty printing (maybe implement a Python pretty printer on my own) and failed at the start ;-) I tried the following: -- Copied the filename pret-lua.lua to pret-py.lua -- Added a print statement to verify that the respective lua code (pret-lua.lua, pret-py.lua) is actually called. When I ran context on the file below, I could see that "pret-lua.lua" had been called, but "pret-py.lua" had not. I guess, I did wrong something very fundamental.
Thanks in advance for any hint
Erik Margraf First, I have made some changes to pret-py.lua
< if not modules then modules = { } end modules ['pret-lua'] = { ---
if not modules then modules = { } end modules ['pret-py'] = { 17c17 < local visualizer = buffers.newvisualizer("lua")
local visualizer = buffers.newvisualizer("py") 105c105 < local function flush_lua_word(state, word)
local function flush_python_word(state, word) 196c196 < state = flush_lua_word(state,word)
state = flush_python_word(state,word)
234c234 < state = flush_lua_word(state,word) ---
state = flush_python_word(state,word)
242c242 < state = flush_lua_word(state,word) ---
state = flush_python_word(state,word)
but *no* other changes related to python's grammar Next I believe that PYTHON is better than PY \setupcolors[state=start] \definecolor[colorprettyone] [r=.9, g=.0, b=.0] % red \definecolor[colorprettytwo] [r=.0, g=.8, b=.0] % green \definecolor[colorprettythree][r=.0, g=.0, b=.9] % blue \definecolor[colorprettyfour] [s=0.60] % gray \definecolor[colorprettyfive] [orange] \definepalet[colorpretty] [prettyone=colorprettyone, prettytwo=colorprettytwo, prettythree=colorprettythree, prettyfour=colorprettyfour, prettyfive=colorprettyfive] % Python listings \definepalet [PYcolorpretty] [colorpretty] \setuptyping [PYTHON] [bodyfont=10pt,option=color] \installprettytype[PYTHON] [PY] \definetyping [PYTHON] [option=PYTHON] \starttext \section{Python sample} \startPYTHON #!/usr/local/bin/python import os.path, sys # Just a comment foo = os.environ.get('FOO') bar = os.environ.get('BAR') if foo: foo = os.path.realpath(foobar) elif bar: bar = os.path.realpath(bar) else: print >> sys.stderr, ''' FOO or BAR need to be set! ''' \stopPYTHON \stoptext It seems the option=color is setted by default to TEX \setvalue{\??tp:\c!option:\v!color }{\setupprettiesintype{TEX}% \let\obeycharacters\setupprettytype \let\obeytabs\ignoretabs} -- luigi