lib/termtex/src/symbol.zig

daab053ee43316e1809a84551d573ddd1e5bf3d2

  1 const std = @import("std");
  2 
  3 pub fn command(name: []const u8) ?[]const u8 {
  4     inline for (entries) |entry| {
  5         if (std.mem.eql(u8, name, entry.name)) return entry.value;
  6     }
  7     return null;
  8 }
  9 
 10 pub fn function(name: []const u8) ?[]const u8 {
 11     inline for (functions) |entry| {
 12         if (std.mem.eql(u8, name, entry)) return entry;
 13     }
 14     return null;
 15 }
 16 
 17 pub fn negated(value: []const u8) ?[]const u8 {
 18     inline for (negations) |entry| {
 19         if (std.mem.eql(u8, value, entry.name)) return entry.value;
 20     }
 21     return null;
 22 }
 23 
 24 const Entry = struct {
 25     name: []const u8,
 26     value: []const u8,
 27 };
 28 
 29 const functions = [_][]const u8{
 30     "arccos",
 31     "arcsin",
 32     "arctan",
 33     "arg",
 34     "argmax",
 35     "argmin",
 36     "cos",
 37     "cosh",
 38     "cod",
 39     "cot",
 40     "coth",
 41     "csc",
 42     "deg",
 43     "det",
 44     "diag",
 45     "dim",
 46     "dom",
 47     "exp",
 48     "gcd",
 49     "hom",
 50     "inf",
 51     "ker",
 52     "lg",
 53     "lim",
 54     "liminf",
 55     "limsup",
 56     "ln",
 57     "log",
 58     "max",
 59     "min",
 60     "Pr",
 61     "rank",
 62     "sec",
 63     "sin",
 64     "sinh",
 65     "span",
 66     "sup",
 67     "tan",
 68     "tanh",
 69     "tr",
 70 };
 71 
 72 const entries = [_]Entry{
 73     .{ .name = "Alpha", .value = "Α" },
 74     .{ .name = "Beta", .value = "Β" },
 75     .{ .name = "Gamma", .value = "Γ" },
 76     .{ .name = "Delta", .value = "Δ" },
 77     .{ .name = "Epsilon", .value = "Ε" },
 78     .{ .name = "Zeta", .value = "Ζ" },
 79     .{ .name = "Eta", .value = "Η" },
 80     .{ .name = "Theta", .value = "Θ" },
 81     .{ .name = "Iota", .value = "Ι" },
 82     .{ .name = "Kappa", .value = "Κ" },
 83     .{ .name = "Lambda", .value = "Λ" },
 84     .{ .name = "Mu", .value = "Μ" },
 85     .{ .name = "Nu", .value = "Ν" },
 86     .{ .name = "Xi", .value = "Ξ" },
 87     .{ .name = "Omicron", .value = "Ο" },
 88     .{ .name = "Pi", .value = "Π" },
 89     .{ .name = "Rho", .value = "Ρ" },
 90     .{ .name = "Sigma", .value = "Σ" },
 91     .{ .name = "Tau", .value = "Τ" },
 92     .{ .name = "Upsilon", .value = "Υ" },
 93     .{ .name = "Phi", .value = "Φ" },
 94     .{ .name = "Chi", .value = "Χ" },
 95     .{ .name = "Psi", .value = "Ψ" },
 96     .{ .name = "Omega", .value = "Ω" },
 97     .{ .name = "alpha", .value = "α" },
 98     .{ .name = "beta", .value = "β" },
 99     .{ .name = "gamma", .value = "γ" },
100     .{ .name = "delta", .value = "δ" },
101     .{ .name = "epsilon", .value = "ε" },
102     .{ .name = "varepsilon", .value = "ϵ" },
103     .{ .name = "zeta", .value = "ζ" },
104     .{ .name = "eta", .value = "η" },
105     .{ .name = "theta", .value = "θ" },
106     .{ .name = "vartheta", .value = "ϑ" },
107     .{ .name = "iota", .value = "ι" },
108     .{ .name = "kappa", .value = "κ" },
109     .{ .name = "lambda", .value = "λ" },
110     .{ .name = "mu", .value = "μ" },
111     .{ .name = "nu", .value = "ν" },
112     .{ .name = "xi", .value = "ξ" },
113     .{ .name = "pi", .value = "π" },
114     .{ .name = "varpi", .value = "ϖ" },
115     .{ .name = "rho", .value = "ρ" },
116     .{ .name = "varrho", .value = "ϱ" },
117     .{ .name = "sigma", .value = "σ" },
118     .{ .name = "varsigma", .value = "ς" },
119     .{ .name = "tau", .value = "τ" },
120     .{ .name = "upsilon", .value = "υ" },
121     .{ .name = "phi", .value = "φ" },
122     .{ .name = "varphi", .value = "ϕ" },
123     .{ .name = "chi", .value = "χ" },
124     .{ .name = "psi", .value = "ψ" },
125     .{ .name = "omega", .value = "ω" },
126     .{ .name = "pm", .value = "±" },
127     .{ .name = "mp", .value = "∓" },
128     .{ .name = "times", .value = "×" },
129     .{ .name = "div", .value = "÷" },
130     .{ .name = "cdot", .value = "·" },
131     .{ .name = "cdots", .value = "⋯" },
132     .{ .name = "ldots", .value = "…" },
133     .{ .name = "dots", .value = "…" },
134     .{ .name = "vdots", .value = "⋮" },
135     .{ .name = "ddots", .value = "⋱" },
136     .{ .name = "colon", .value = ":" },
137     .{ .name = "ldotp", .value = "." },
138     .{ .name = "cdotp", .value = "·" },
139     .{ .name = "backslash", .value = "∖" },
140     .{ .name = "ast", .value = "∗" },
141     .{ .name = "star", .value = "⋆" },
142     .{ .name = "diamond", .value = "⋄" },
143     .{ .name = "bigstar", .value = "★" },
144     .{ .name = "dagger", .value = "†" },
145     .{ .name = "ddagger", .value = "‡" },
146     .{ .name = "circ", .value = "∘" },
147     .{ .name = "bigcirc", .value = "○" },
148     .{ .name = "bullet", .value = "•" },
149     .{ .name = "amalg", .value = "⨿" },
150     .{ .name = "oplus", .value = "⊕" },
151     .{ .name = "ominus", .value = "⊖" },
152     .{ .name = "otimes", .value = "⊗" },
153     .{ .name = "oslash", .value = "⊘" },
154     .{ .name = "odot", .value = "⊙" },
155     .{ .name = "circledast", .value = "⊛" },
156     .{ .name = "circledcirc", .value = "⊚" },
157     .{ .name = "circleddash", .value = "⊝" },
158     .{ .name = "boxplus", .value = "⊞" },
159     .{ .name = "boxminus", .value = "⊟" },
160     .{ .name = "boxtimes", .value = "⊠" },
161     .{ .name = "sqcup", .value = "⊔" },
162     .{ .name = "sqcap", .value = "⊓" },
163     .{ .name = "wr", .value = "≀" },
164     .{ .name = "uplus", .value = "⊎" },
165     .{ .name = "le", .value = "≤" },
166     .{ .name = "leq", .value = "≤" },
167     .{ .name = "leqslant", .value = "≤" },
168     .{ .name = "nleq", .value = "≰" },
169     .{ .name = "nle", .value = "≰" },
170     .{ .name = "lesssim", .value = "≲" },
171     .{ .name = "lessapprox", .value = "⪅" },
172     .{ .name = "ll", .value = "≪" },
173     .{ .name = "lll", .value = "⋘" },
174     .{ .name = "llless", .value = "⋘" },
175     .{ .name = "ge", .value = "≥" },
176     .{ .name = "geq", .value = "≥" },
177     .{ .name = "geqslant", .value = "≥" },
178     .{ .name = "ngeq", .value = "≱" },
179     .{ .name = "nge", .value = "≱" },
180     .{ .name = "gtrsim", .value = "≳" },
181     .{ .name = "gtrapprox", .value = "⪆" },
182     .{ .name = "gg", .value = "≫" },
183     .{ .name = "ggg", .value = "⋙" },
184     .{ .name = "gggtr", .value = "⋙" },
185     .{ .name = "lt", .value = "<" },
186     .{ .name = "gt", .value = ">" },
187     .{ .name = "neq", .value = "≠" },
188     .{ .name = "ne", .value = "≠" },
189     .{ .name = "doteq", .value = "≐" },
190     .{ .name = "triangleq", .value = "≜" },
191     .{ .name = "coloneqq", .value = "≔" },
192     .{ .name = "eqqcolon", .value = "≕" },
193     .{ .name = "equiv", .value = "≡" },
194     .{ .name = "nequiv", .value = "≢" },
195     .{ .name = "approx", .value = "≈" },
196     .{ .name = "asymp", .value = "≍" },
197     .{ .name = "sim", .value = "∼" },
198     .{ .name = "nsim", .value = "≁" },
199     .{ .name = "simeq", .value = "≃" },
200     .{ .name = "precsim", .value = "≾" },
201     .{ .name = "succsim", .value = "≿" },
202     .{ .name = "cong", .value = "≅" },
203     .{ .name = "ncong", .value = "≇" },
204     .{ .name = "propto", .value = "∝" },
205     .{ .name = "prec", .value = "≺" },
206     .{ .name = "succ", .value = "≻" },
207     .{ .name = "preceq", .value = "≼" },
208     .{ .name = "succeq", .value = "≽" },
209     .{ .name = "preccurlyeq", .value = "≼" },
210     .{ .name = "succcurlyeq", .value = "≽" },
211     .{ .name = "perp", .value = "⊥" },
212     .{ .name = "bowtie", .value = "⋈" },
213     .{ .name = "in", .value = "∈" },
214     .{ .name = "notin", .value = "∉" },
215     .{ .name = "ni", .value = "∋" },
216     .{ .name = "owns", .value = "∋" },
217     .{ .name = "subset", .value = "⊂" },
218     .{ .name = "supset", .value = "⊃" },
219     .{ .name = "subseteq", .value = "⊆" },
220     .{ .name = "supseteq", .value = "⊇" },
221     .{ .name = "nsubseteq", .value = "⊈" },
222     .{ .name = "nsupseteq", .value = "⊉" },
223     .{ .name = "subsetneq", .value = "⊊" },
224     .{ .name = "supsetneq", .value = "⊋" },
225     .{ .name = "sqsubset", .value = "⊏" },
226     .{ .name = "sqsupset", .value = "⊐" },
227     .{ .name = "sqsubseteq", .value = "⊑" },
228     .{ .name = "sqsupseteq", .value = "⊒" },
229     .{ .name = "cup", .value = "∪" },
230     .{ .name = "cap", .value = "∩" },
231     .{ .name = "bigcup", .value = "⋃" },
232     .{ .name = "bigcap", .value = "⋂" },
233     .{ .name = "setminus", .value = "∖" },
234     .{ .name = "smallsetminus", .value = "∖" },
235     .{ .name = "emptyset", .value = "∅" },
236     .{ .name = "varnothing", .value = "∅" },
237     .{ .name = "forall", .value = "∀" },
238     .{ .name = "exists", .value = "∃" },
239     .{ .name = "nexists", .value = "∄" },
240     .{ .name = "nabla", .value = "∇" },
241     .{ .name = "partial", .value = "∂" },
242     .{ .name = "infty", .value = "∞" },
243     .{ .name = "ell", .value = "ℓ" },
244     .{ .name = "wp", .value = "℘" },
245     .{ .name = "Re", .value = "ℜ" },
246     .{ .name = "Im", .value = "ℑ" },
247     .{ .name = "aleph", .value = "ℵ" },
248     .{ .name = "beth", .value = "ℶ" },
249     .{ .name = "gimel", .value = "ℷ" },
250     .{ .name = "daleth", .value = "ℸ" },
251     .{ .name = "hbar", .value = "ℏ" },
252     .{ .name = "hslash", .value = "ℏ" },
253     .{ .name = "imath", .value = "ı" },
254     .{ .name = "jmath", .value = "ȷ" },
255     .{ .name = "prime", .value = "′" },
256     .{ .name = "dprime", .value = "″" },
257     .{ .name = "therefore", .value = "∴" },
258     .{ .name = "because", .value = "∵" },
259     .{ .name = "angle", .value = "∠" },
260     .{ .name = "degree", .value = "°" },
261     .{ .name = "to", .value = "→" },
262     .{ .name = "rightarrow", .value = "→" },
263     .{ .name = "longrightarrow", .value = "⟶" },
264     .{ .name = "gets", .value = "←" },
265     .{ .name = "leftarrow", .value = "←" },
266     .{ .name = "longleftarrow", .value = "⟵" },
267     .{ .name = "leftrightarrow", .value = "↔" },
268     .{ .name = "longleftrightarrow", .value = "⟷" },
269     .{ .name = "Rightarrow", .value = "⇒" },
270     .{ .name = "Longrightarrow", .value = "⟹" },
271     .{ .name = "Leftarrow", .value = "⇐" },
272     .{ .name = "Longleftarrow", .value = "⟸" },
273     .{ .name = "Leftrightarrow", .value = "⇔" },
274     .{ .name = "Longleftrightarrow", .value = "⟺" },
275     .{ .name = "iff", .value = "⇔" },
276     .{ .name = "implies", .value = "⇒" },
277     .{ .name = "impliedby", .value = "⇐" },
278     .{ .name = "mapsto", .value = "↦" },
279     .{ .name = "longmapsto", .value = "⟼" },
280     .{ .name = "multimap", .value = "⊸" },
281     .{ .name = "hookrightarrow", .value = "↪" },
282     .{ .name = "hookleftarrow", .value = "↩" },
283     .{ .name = "twoheadrightarrow", .value = "↠" },
284     .{ .name = "twoheadleftarrow", .value = "↞" },
285     .{ .name = "rightarrowtail", .value = "↣" },
286     .{ .name = "leftarrowtail", .value = "↢" },
287     .{ .name = "leadsto", .value = "↝" },
288     .{ .name = "rightsquigarrow", .value = "⇝" },
289     .{ .name = "rightharpoonup", .value = "⇀" },
290     .{ .name = "rightharpoondown", .value = "⇁" },
291     .{ .name = "leftharpoonup", .value = "↼" },
292     .{ .name = "leftharpoondown", .value = "↽" },
293     .{ .name = "rightleftharpoons", .value = "⇌" },
294     .{ .name = "uparrow", .value = "↑" },
295     .{ .name = "downarrow", .value = "↓" },
296     .{ .name = "updownarrow", .value = "↕" },
297     .{ .name = "Uparrow", .value = "⇑" },
298     .{ .name = "Downarrow", .value = "⇓" },
299     .{ .name = "Updownarrow", .value = "⇕" },
300     .{ .name = "nRightarrow", .value = "⇏" },
301     .{ .name = "nLeftarrow", .value = "⇍" },
302     .{ .name = "nLeftrightarrow", .value = "⇎" },
303     .{ .name = "nearrow", .value = "↗" },
304     .{ .name = "searrow", .value = "↘" },
305     .{ .name = "swarrow", .value = "↙" },
306     .{ .name = "nwarrow", .value = "↖" },
307     .{ .name = "sum", .value = "∑" },
308     .{ .name = "bigoplus", .value = "⨁" },
309     .{ .name = "bigotimes", .value = "⨂" },
310     .{ .name = "bigodot", .value = "⨀" },
311     .{ .name = "prod", .value = "∏" },
312     .{ .name = "coprod", .value = "∐" },
313     .{ .name = "int", .value = "∫" },
314     .{ .name = "iint", .value = "∬" },
315     .{ .name = "iiint", .value = "∭" },
316     .{ .name = "oint", .value = "∮" },
317     .{ .name = "land", .value = "∧" },
318     .{ .name = "lor", .value = "∨" },
319     .{ .name = "neg", .value = "¬" },
320     .{ .name = "lnot", .value = "¬" },
321     .{ .name = "wedge", .value = "∧" },
322     .{ .name = "vee", .value = "∨" },
323     .{ .name = "bigwedge", .value = "⋀" },
324     .{ .name = "bigvee", .value = "⋁" },
325     .{ .name = "bot", .value = "⊥" },
326     .{ .name = "top", .value = "⊤" },
327     .{ .name = "bigtriangleup", .value = "△" },
328     .{ .name = "bigtriangledown", .value = "▽" },
329     .{ .name = "triangleleft", .value = "◁" },
330     .{ .name = "triangleright", .value = "▷" },
331     .{ .name = "vartriangleleft", .value = "⊲" },
332     .{ .name = "vartriangleright", .value = "⊳" },
333     .{ .name = "trianglelefteq", .value = "⊴" },
334     .{ .name = "trianglerighteq", .value = "⊵" },
335     .{ .name = "unlhd", .value = "⊴" },
336     .{ .name = "unrhd", .value = "⊵" },
337     .{ .name = "vdash", .value = "⊢" },
338     .{ .name = "Vdash", .value = "⊩" },
339     .{ .name = "vDash", .value = "⊨" },
340     .{ .name = "Vvdash", .value = "⊪" },
341     .{ .name = "dashv", .value = "⊣" },
342     .{ .name = "models", .value = "⊨" },
343     .{ .name = "nvdash", .value = "⊬" },
344     .{ .name = "nvDash", .value = "⊭" },
345     .{ .name = "nVdash", .value = "⊮" },
346     .{ .name = "nVDash", .value = "⊯" },
347     .{ .name = "parallel", .value = "∥" },
348     .{ .name = "nparallel", .value = "∦" },
349     .{ .name = "mid", .value = "∣" },
350     .{ .name = "nmid", .value = "∤" },
351     .{ .name = "vert", .value = "|" },
352     .{ .name = "Vert", .value = "‖" },
353     .{ .name = "lvert", .value = "|" },
354     .{ .name = "rvert", .value = "|" },
355     .{ .name = "lVert", .value = "‖" },
356     .{ .name = "rVert", .value = "‖" },
357     .{ .name = "lparen", .value = "(" },
358     .{ .name = "rparen", .value = ")" },
359     .{ .name = "lbrack", .value = "[" },
360     .{ .name = "rbrack", .value = "]" },
361     .{ .name = "lbrace", .value = "{" },
362     .{ .name = "rbrace", .value = "}" },
363     .{ .name = "langle", .value = "⟨" },
364     .{ .name = "rangle", .value = "⟩" },
365     .{ .name = "llangle", .value = "⟪" },
366     .{ .name = "rrangle", .value = "⟫" },
367     .{ .name = "llbracket", .value = "⟦" },
368     .{ .name = "rrbracket", .value = "⟧" },
369     .{ .name = "lfloor", .value = "⌊" },
370     .{ .name = "rfloor", .value = "⌋" },
371     .{ .name = "lceil", .value = "⌈" },
372     .{ .name = "rceil", .value = "⌉" },
373     .{ .name = "ulcorner", .value = "⌜" },
374     .{ .name = "urcorner", .value = "⌝" },
375     .{ .name = "llcorner", .value = "⌞" },
376     .{ .name = "lrcorner", .value = "⌟" },
377 };
378 
379 const negations = [_]Entry{
380     .{ .name = "=", .value = "≠" },
381     .{ .name = "<", .value = "≮" },
382     .{ .name = ">", .value = "≯" },
383     .{ .name = "≤", .value = "≰" },
384     .{ .name = "≥", .value = "≱" },
385     .{ .name = "≡", .value = "≢" },
386     .{ .name = "≈", .value = "≉" },
387     .{ .name = "∼", .value = "≁" },
388     .{ .name = "≃", .value = "≄" },
389     .{ .name = "≅", .value = "≇" },
390     .{ .name = "∈", .value = "∉" },
391     .{ .name = "∋", .value = "∌" },
392     .{ .name = "⊂", .value = "⊄" },
393     .{ .name = "⊃", .value = "⊅" },
394     .{ .name = "⊆", .value = "⊈" },
395     .{ .name = "⊇", .value = "⊉" },
396     .{ .name = "⊑", .value = "⋢" },
397     .{ .name = "⊒", .value = "⋣" },
398     .{ .name = "⊢", .value = "⊬" },
399     .{ .name = "⊨", .value = "⊭" },
400     .{ .name = "⊩", .value = "⊮" },
401     .{ .name = "∣", .value = "∤" },
402     .{ .name = "∥", .value = "∦" },
403 };