# HG changeset patch # User wenzelm # Date 1124192572 -7200 # Node ID e199637232622b48e15df212820f9fbc37faf9d3 # Parent c0c213a8f39cbc3164a02fe9caf7733168168453 eliminated datatype token; replaced output_tokens by separate output_XXX; replaced flag_markup by markup_true/false; added begin/end_delim, begin/end_tag; diff -r c0c213a8f39c -r e19963723262 src/Pure/Thy/latex.ML --- a/src/Pure/Thy/latex.ML Tue Aug 16 13:42:51 2005 +0200 +++ b/src/Pure/Thy/latex.ML Tue Aug 16 13:42:52 2005 +0200 @@ -10,9 +10,16 @@ val output_known_symbols: (string -> bool) * (string -> bool) -> Symbol.symbol list -> string val output_symbols: Symbol.symbol list -> string - datatype token = Basic of OuterLex.token | Markup of string | MarkupEnv of string | Verbatim - val output_tokens: (token * string) list -> string - val flag_markup: bool -> string + val output_basic: OuterLex.token -> string + val output_markup: string -> string -> string + val output_markup_env: string -> string -> string + val output_verbatim: string -> string + val markup_true: string + val markup_false: string + val begin_delim: string -> string + val end_delim: string -> string + val begin_tag: string -> string + val end_tag: string -> string val tex_trailer: string val isabelle_file: string -> string -> string val symbol_source: (string -> bool) * (string -> bool) -> @@ -88,38 +95,36 @@ structure T = OuterLex; -datatype token = - Basic of T.token | - Markup of string | - MarkupEnv of string | - Verbatim; - - val invisible_token = T.keyword_with (equal ";") orf T.is_kind T.Comment; -fun output_tok (Basic tok, _) = - let val s = T.val_of tok in - if invisible_token tok then "" - else if T.is_kind T.Command tok then - "\\isacommand{" ^ output_syms s ^ "}" - else if T.is_kind T.Keyword tok andalso Syntax.is_ascii_identifier s then - "\\isakeyword{" ^ output_syms s ^ "}" - else if T.is_kind T.String tok then output_syms (Library.quote s) - else if T.is_kind T.Verbatim tok then output_syms (enclose "{*" "*}" s) - else output_syms s - end - | output_tok (Markup cmd, txt) = - "%\n\\isamarkup" ^ cmd ^ "{" ^ Symbol.strip_blanks txt ^ "%\n}\n" - | output_tok (MarkupEnv cmd, txt) = "%\n\\begin{isamarkup" ^ cmd ^ "}%\n" ^ - Symbol.strip_blanks txt ^ "%\n\\end{isamarkup" ^ cmd ^ "}%\n" - | output_tok (Verbatim, txt) = "%\n" ^ Symbol.strip_blanks txt ^ "\n"; +fun output_basic tok = + let val s = T.val_of tok in + if invisible_token tok then "" + else if T.is_kind T.Command tok then + "\\isacommand{" ^ output_syms s ^ "}" + else if T.is_kind T.Keyword tok andalso Syntax.is_ascii_identifier s then + "\\isakeyword{" ^ output_syms s ^ "}" + else if T.is_kind T.String tok then output_syms (Library.quote s) + else if T.is_kind T.Verbatim tok then output_syms (enclose "{*" "*}" s) + else output_syms s + end; + +fun output_markup cmd txt = "%\n\\isamarkup" ^ cmd ^ "{" ^ Symbol.strip_blanks txt ^ "%\n}\n"; +fun output_markup_env cmd txt = + "%\n\\begin{isamarkup" ^ cmd ^ "}%\n" ^ + Symbol.strip_blanks txt ^ + "%\n\\end{isamarkup" ^ cmd ^ "}%\n"; -val output_tokens = implode o map output_tok; +fun output_verbatim txt = "%\n" ^ Symbol.strip_blanks txt ^ "\n"; +val markup_true = "\\isamarkuptrue%\n"; +val markup_false = "\\isamarkupfalse%\n"; -fun flag_markup true = "\\isamarkuptrue%\n" - | flag_markup false = "\\isamarkupfalse%\n"; +val begin_delim = enclose "%\n\\isadelim" "\n"; +val end_delim = enclose "%\n\\endisadelim" "\n"; +val begin_tag = enclose "%\n\\isatag" "\n"; +fun end_tag tg = enclose "%\n\\endisatag" "\n" tg ^ enclose "{\\isafold" "}%\n" tg; (* theory presentation *)