def begin_page_environment(stream, char_env, escape_env) : file = parse_one(stream, char_env, escape_env, []) try : file = file.eval({}) except AttributeError : raise stream.failure("Page file name must not be parameterized.") if type(file) != StringToken : raise stream.failure("File name must be a string.") get_counter("page").increment() pageid = generate_id("page", get_counter("page")) escape_env["_curr_pageid"] = pageid add_counter("footnote") set_page_reference(escape_env, pageid, file.s) return (char_pretty_text, escape_env.extend({"_page_footnotes" : []}))
return (char_env, escape_env) def end_quote_environment(char_env, escape_env, outer_token_env, out) : return (InhibitParagraphToken()+StringToken("<BLOCKQUOTE>") + ParagraphToken() + out + StringToken("</BLOCKQUOTE>\n")) environment_handlers["quote"] = (begin_quote_environment, end_quote_environment) def begin_abstract_environment(stream, char_env, escape_env) : return (char_env, escape_env) def end_abstract_environment(char_env, escape_env, outer_token_env, out) : return (InhibitParagraphToken()+ StringToken("<DIV CLASS=\"abstract\"><DIV CLASS=\"abstractcaption\">Abstract</DIV>") + ParagraphToken() + out + StringToken("</DIV>\n")) environment_handlers["abstract"] = (begin_abstract_environment, end_abstract_environment) add_counter("figure", "page") def begin_figure_environment(stream, char_env, escape_env) : placement = read_bracket_args(stream, char_env, escape_env, []) newenv = escape_env.extend({}) newenv["_figure_placement"] = placement return (char_env, newenv) def end_figure_environment(char_env, escape_env, outer_token_env, out) : def _handler(env) : get_counter("figure").increment() id = generate_id("figure", get_counter("page"), get_counter("figure")) set_anchor_reference(outer_token_env, id, StringToken(str(counters_to_string("figure")))) p = escape_env["_figure_placement"].eval(env) if type(p) is not StringToken : p.fail("Figure placement must be a string.") o = (ParagraphToken() + InhibitParagraphToken() + get_anchor_by_id(id) + InhibitParagraphToken()