eliminated datatype token;
authorwenzelm
Tue, 16 Aug 2005 13:42:52 +0200
changeset 17081 e19963723262
parent 17080 c0c213a8f39c
child 17082 b0e9462db0b4
eliminated datatype token; replaced output_tokens by separate output_XXX; replaced flag_markup by markup_true/false; added begin/end_delim, begin/end_tag;
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 *)