aboutsummaryrefslogtreecommitdiff
path: root/lib.typ
blob: 213c33dd7c2dee3bec37c757b854eb7ed0d63356 (plain)
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
// TODO: workaround until Typst gets a real ex unit.
// See <https://github.com/typst/typst/issues/2405>
#let ex = 0.47
#let defaults = (
  drop-tex: 0.5em*ex,
  drop-xe: 0.5em*ex,

  kern-te: -.1667em,
  kern-ex: -.125em,
  kern-la: -.36em,
  kern-at: -.15em,
  kern-xe: -.125em,
  kern-et: -.1667em,
  kern-el: -.125em,
  kern-x2: 0.15em,
)
#let config = state("metalogo", defaults)
#let metalogo(..opts) = context{
  config.update(c => {
    for (key, value) in opts.named() {
      c.insert(key, value)
    }
    return c
  })
}

#let drop(body, distance: 0pt) = box[#move(dy: distance)[#body]]
#let mirror(body) = scale(x: -100%)[#body]

#let TeX = context[#box[#{
  let cfg = config.get()
  [T]
  h(cfg.kern-te)
  drop(distance: cfg.drop-tex)[E]
  h(cfg.kern-ex)
  [X]
}]]

#let Xe = context[#box[#{
  let cfg = config.get()
  [X]
  h(cfg.kern-xe)
  drop(distance: cfg.drop-xe)[#mirror[E]]
}]]

#let LaTeX = context[#box[#{
  let cfg = config.get()

  [L]
  h(cfg.kern-la)
  drop(distance: -.2em)[#text(0.7em)[A]]
  h(cfg.kern-at)
  TeX
}]]

#let XeTeX = context[#box[#{
  let cfg = config.get()

  Xe
  h(cfg.kern-et)
  TeX
}]]

#let XeLaTeX = context[#box[#{
  let cfg = config.get()

  Xe
  h(cfg.kern-el)
  LaTeX
}]]

#let LuaLaTeX = box[Lua#LaTeX]
#let LuaTeX = box[Lua#TeX]

#let LaTeXe = context[#box[#{
  LaTeX
  [2]
  sym.epsilon
}]]