File: dot_dot.ml

package info (click to toggle)
mlpost 0.9-5
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 3,844 kB
  • sloc: ml: 21,094; javascript: 4,047; makefile: 430; ansic: 34; lisp: 19; sh: 15
file content (42 lines) | stat: -rw-r--r-- 1,197 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
(* mlpost -contrib dot dot.ml *)

open Mlpost
open Mlpost_dot
module Pi = Picture
open Command

(*parse <<togglescript>> *)

(*parse <<dot_dot1 *)

module G = Dot.Make (Picture)

let dot1 =
  let a = G.mknode (Pi.tex "Bonjour voici un A") in
  let b = G.mknode (Pi.tex "Bonjour voici un $\\frac{B}{B}$") in
  let c = G.mknode (Pi.tex "Bonjour voici un C") in
  let d = G.mknode (Pi.tex "Au revoir d") in
  let edges = [ (a, b); (b, c); (c, a); (d, b); (d, c); (a, d) ] in
  let nodes, edges = G.place [ a; b; c; d ] edges in
  seq nodes ++ seq (List.map Arrow.simple edges)

(*parse >> <<dot_dot2 *)

module G2 = Dot.Make (Box)

let dot2 =
  let tex s = Box.rect (Box.tex s) in
  let a = G2.mknode (tex "Bonjour voici un A") in
  let b = G2.mknode (tex "Bonjour voici un $\\frac{B}{B}$") in
  let c = G2.mknode (tex "Bonjour voici un C") in
  let d = G2.mknode (tex "Au revoir d") in
  let edges = [ (a, b); (b, c); (c, a); (d, b); (d, c); (a, d) ] in
  let nodes, edges = G2.place [ a; b; c; d ] edges in
  seq (List.map Box.draw nodes) ++ seq (List.map Arrow.simple edges)

(*parse >> *)

let () =
  List.iter
    (fun (n, f) -> Metapost.emit n f)
    [ ("dot_dot1", dot1); ("dot_dot2", dot2) ]