Skip to content

Commit c5acdc7

Browse files
committedMay 22, 2014
Merge pull request #6911 from stevengj/latex
RFC: tab substitution of LaTeX symbols in REPL
2 parents 6ae8670 + 61ebe96 commit c5acdc7

File tree

3 files changed

+804
-0
lines changed

3 files changed

+804
-0
lines changed
 

‎NEWS.md

+8
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,14 @@ New language features
5151

5252
* Improved reporting of syntax errors ([#6179])
5353

54+
REPL improvements
55+
-----------------
56+
57+
* New native-Julia REPL implementation, eliminating many problems
58+
stemming from the old GNU Readline-based REPL ([#6270]).
59+
60+
* Tab-substitution of LaTeX math symbols (e.g. `\alpha` by `α`) ([#6340]).
61+
5462
Library improvements
5563
--------------------
5664

‎base/REPLCompletions.jl

+10
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,8 @@ function complete_methods(input::String)
138138
UTF8String[string(m) for m in methods(fn)]
139139
end
140140

141+
include("latex_symbols.jl")
142+
141143
const non_identifier_chars = [" \t\n\"\\'`\$><=:;|&{}()[],+-*/?%^~"...]
142144
const non_filename_chars = [" \t\n\"\\'`@\$><=;|&{("...]
143145

@@ -172,6 +174,14 @@ function completions(string, pos)
172174
return UTF8String[], 0:-1, false
173175
end
174176

177+
slashpos = rsearch(string, '\\', pos)
178+
if slashpos > 0
179+
latex = get(latex_symbols, string[slashpos:pos], "")
180+
if !isempty(latex)
181+
return [latex], slashpos:pos, true
182+
end
183+
end
184+
175185
dotpos = rsearch(string, '.', pos)
176186
startpos = nextind(string, rsearch(string, non_identifier_chars, pos))
177187

‎base/latex_symbols.jl

+786
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,786 @@
1+
# Mapping from LaTeX math symbol to the corresponding Unicode codepoint.
2+
# This is used for tab substitution in the REPL.
3+
4+
# The symbol listing was generated from the W3C symbol mapping file:
5+
# http://www.w3.org/Math/characters/unicode.xml
6+
# by the following Julia script:
7+
#=
8+
using LightXML
9+
xdoc = parse_file("unicode.xml")
10+
latexsym = {}
11+
Ls = Set()
12+
for c in child_nodes(root(xdoc))
13+
if name(c) == "character" && is_elementnode(c)
14+
ce = XMLElement(c)
15+
latex = nothing
16+
for el in ("AMS", "IEEE", "mathlatex", "latex")
17+
latex = find_element(ce, el)
18+
latex != nothing && break
19+
end
20+
if latex != nothing
21+
L = strip(content(latex))
22+
id = attribute(ce, "id")
23+
U = string(map(s -> char(parseint(s, 16)),
24+
split(id[2:end], "-"))...)
25+
if ismatch(r"^\\[A-Za-z]+$",L) && !isa(U,ASCIIString)
26+
if L in Ls
27+
println("# duplicated symbol $L ($id)")
28+
else
29+
push!(latexsym, (L, U))
30+
push!(Ls, L)
31+
end
32+
end
33+
end
34+
end
35+
end
36+
println("# ", length(latexsym), " symbols generated from unicode.xml")
37+
for (L, U) in latexsym
38+
println(" \"$(escape_string(L))\" => \"$(escape_string(U))\",")
39+
end
40+
=#
41+
42+
const latex_symbols = [
43+
44+
# manual additions:
45+
46+
"\\sqrt" => "\u221A",
47+
"\\cbrt" => "\u221B",
48+
"\\female" => "",
49+
"\\mars" => "",
50+
51+
# 732 symbols generated from unicode.xml
52+
"\\textexclamdown" => "¡",
53+
"\\sterling" => "£",
54+
"\\yen" => "¥",
55+
"\\textbrokenbar" => "¦",
56+
"\\S" => "§",
57+
"\\textasciidieresis" => "¨",
58+
"\\copyright" => "©",
59+
"\\textordfeminine" => "ª",
60+
"\\neg" => "¬",
61+
"\\circledR" => "®",
62+
"\\textasciimacron" => "¯",
63+
"\\degree" => "°",
64+
"\\pm" => "±",
65+
"\\textasciiacute" => "´",
66+
"\\P" => "",
67+
"\\cdotp" => "·",
68+
"\\textordmasculine" => "º",
69+
"\\textonequarter" => "¼",
70+
"\\textonehalf" => "½",
71+
"\\textthreequarters" => "¾",
72+
"\\textquestiondown" => "¿",
73+
"\\AA" => "Å",
74+
"\\AE" => "Æ",
75+
"\\DH" => "Ð",
76+
"\\times" => "×",
77+
"\\O" => "Ø",
78+
"\\TH" => "Þ",
79+
"\\ss" => "ß",
80+
"\\aa" => "å",
81+
"\\ae" => "æ",
82+
"\\eth" => "ð",
83+
"\\div" => "÷",
84+
"\\o" => "ø",
85+
"\\th" => "þ",
86+
"\\DJ" => "Đ",
87+
"\\dj" => "đ",
88+
"\\Elzxh" => "ħ",
89+
"\\imath" => "ı",
90+
"\\L" => "Ł",
91+
"\\l" => "ł",
92+
"\\NG" => "Ŋ",
93+
"\\ng" => "ŋ",
94+
"\\OE" => "Œ",
95+
"\\oe" => "œ",
96+
"\\texthvlig" => "ƕ",
97+
"\\textnrleg" => "ƞ",
98+
"\\textdoublepipe" => "ǂ",
99+
"\\Elztrna" => "ɐ",
100+
"\\Elztrnsa" => "ɒ",
101+
"\\Elzopeno" => "ɔ",
102+
"\\Elzrtld" => "ɖ",
103+
"\\Elzschwa" => "ə",
104+
"\\varepsilon" => "ɛ",
105+
"\\Elzpgamma" => "ɣ",
106+
"\\Elzpbgam" => "ɤ",
107+
"\\Elztrnh" => "ɥ",
108+
"\\Elzbtdl" => "ɬ",
109+
"\\Elzrtll" => "ɭ",
110+
"\\Elztrnm" => "ɯ",
111+
"\\Elztrnmlr" => "ɰ",
112+
"\\Elzltlmr" => "ɱ",
113+
"\\Elzltln" => "ɲ",
114+
"\\Elzrtln" => "ɳ",
115+
"\\Elzclomeg" => "ɷ",
116+
"\\textphi" => "ɸ",
117+
"\\Elztrnr" => "ɹ",
118+
"\\Elztrnrl" => "ɺ",
119+
"\\Elzrttrnr" => "ɻ",
120+
"\\Elzrl" => "ɼ",
121+
"\\Elzrtlr" => "ɽ",
122+
"\\Elzfhr" => "ɾ",
123+
"\\Elzrtls" => "ʂ",
124+
"\\Elzesh" => "ʃ",
125+
"\\Elztrnt" => "ʇ",
126+
"\\Elzrtlt" => "ʈ",
127+
"\\Elzpupsil" => "ʊ",
128+
"\\Elzpscrv" => "ʋ",
129+
"\\Elzinvv" => "ʌ",
130+
"\\Elzinvw" => "ʍ",
131+
"\\Elztrny" => "ʎ",
132+
"\\Elzrtlz" => "ʐ",
133+
"\\Elzyogh" => "ʒ",
134+
"\\Elzglst" => "ʔ",
135+
"\\Elzreglst" => "ʕ",
136+
"\\Elzinglst" => "ʖ",
137+
"\\textturnk" => "ʞ",
138+
"\\Elzdyogh" => "ʤ",
139+
"\\Elztesh" => "ʧ",
140+
"\\rasp" => "ʼ",
141+
"\\textasciicaron" => "ˇ",
142+
"\\Elzverts" => "ˈ",
143+
"\\Elzverti" => "ˌ",
144+
"\\Elzlmrk" => "ː",
145+
"\\Elzhlmrk" => "ˑ",
146+
"\\Elzsbrhr" => "˒",
147+
"\\Elzsblhr" => "˓",
148+
"\\Elzrais" => "˔",
149+
"\\Elzlow" => "˕",
150+
"\\u" => "˘",
151+
"\\texttildelow" => "˜",
152+
"\\grave" => "̀",
153+
"\\acute" => "́",
154+
"\\hat" => "̂",
155+
"\\tilde" => "̃",
156+
"\\bar" => "̄",
157+
"\\breve" => "̆",
158+
"\\dot" => "̇",
159+
"\\ddot" => "̈",
160+
"\\ocirc" => "̊",
161+
"\\H" => "̋",
162+
"\\check" => "̌",
163+
"\\Elzpalh" => "̡",
164+
"\\Elzrh" => "̢",
165+
"\\c" => "̧",
166+
"\\k" => "̨",
167+
"\\Elzsbbrg" => "̪",
168+
"\\Elzxl" => "̵",
169+
"\\Elzbar" => "̶",
170+
"\\Alpha" => "Α",
171+
"\\Beta" => "Β",
172+
"\\Gamma" => "Γ",
173+
"\\Delta" => "Δ",
174+
"\\Epsilon" => "Ε",
175+
"\\Zeta" => "Ζ",
176+
"\\Eta" => "Η",
177+
"\\Theta" => "Θ",
178+
"\\Iota" => "Ι",
179+
"\\Kappa" => "Κ",
180+
"\\Lambda" => "Λ",
181+
"\\Xi" => "Ξ",
182+
"\\Pi" => "Π",
183+
"\\Rho" => "Ρ",
184+
"\\Sigma" => "Σ",
185+
"\\Tau" => "Τ",
186+
"\\Upsilon" => "Υ",
187+
"\\Phi" => "Φ",
188+
"\\Chi" => "Χ",
189+
"\\Psi" => "Ψ",
190+
"\\Omega" => "Ω",
191+
"\\alpha" => "α",
192+
"\\beta" => "β",
193+
"\\gamma" => "γ",
194+
"\\delta" => "δ",
195+
"\\zeta" => "ζ",
196+
"\\eta" => "η",
197+
"\\theta" => "θ",
198+
"\\iota" => "ι",
199+
"\\kappa" => "κ",
200+
"\\lambda" => "λ",
201+
"\\mu" => "μ",
202+
"\\nu" => "ν",
203+
"\\xi" => "ξ",
204+
"\\pi" => "π",
205+
"\\rho" => "ρ",
206+
"\\varsigma" => "ς",
207+
"\\sigma" => "σ",
208+
"\\tau" => "τ",
209+
"\\upsilon" => "υ",
210+
"\\varphi" => "φ",
211+
"\\chi" => "χ",
212+
"\\psi" => "ψ",
213+
"\\omega" => "ω",
214+
"\\vartheta" => "ϑ",
215+
"\\phi" => "ϕ",
216+
"\\varpi" => "ϖ",
217+
"\\Stigma" => "Ϛ",
218+
"\\Digamma" => "Ϝ",
219+
"\\digamma" => "ϝ",
220+
"\\Koppa" => "Ϟ",
221+
"\\Sampi" => "Ϡ",
222+
"\\varkappa" => "ϰ",
223+
"\\varrho" => "ϱ",
224+
"\\textTheta" => "ϴ",
225+
"\\epsilon" => "ϵ",
226+
"\\backepsilon" => "϶",
227+
"\\enspace" => "",
228+
"\\quad" => "",
229+
"\\thickspace" => "",
230+
"\\thinspace" => "",
231+
"\\hspace" => "",
232+
"\\endash" => "",
233+
"\\emdash" => "",
234+
"\\Vert" => "",
235+
"\\lq" => "",
236+
"\\rq" => "",
237+
"\\Elzreapos" => "",
238+
"\\textquotedblleft" => "",
239+
"\\textquotedblright" => "",
240+
"\\dagger" => "",
241+
"\\ddagger" => "",
242+
"\\bullet" => "",
243+
"\\dots" => "",
244+
"\\textperthousand" => "",
245+
"\\textpertenthousand" => "",
246+
"\\prime" => "",
247+
"\\backprime" => "",
248+
"\\guilsinglleft" => "",
249+
"\\guilsinglright" => "",
250+
"\\nolinebreak" => "\u2060",
251+
"\\Elzpes" => "",
252+
"\\dddot" => "",
253+
"\\ddddot" => "",
254+
"\\hslash" => "",
255+
"\\Im" => "",
256+
"\\ell" => "",
257+
"\\textnumero" => "",
258+
"\\wp" => "",
259+
"\\Re" => "",
260+
"\\Elzxrat" => "",
261+
"\\texttrademark" => "",
262+
"\\mho" => "",
263+
"\\aleph" => "",
264+
"\\beth" => "",
265+
"\\gimel" => "",
266+
"\\daleth" => "",
267+
"\\BbbPi" => "",
268+
"\\bbsum" => "",
269+
"\\Game" => "",
270+
"\\leftarrow" => "",
271+
"\\uparrow" => "",
272+
"\\rightarrow" => "",
273+
"\\downarrow" => "",
274+
"\\leftrightarrow" => "",
275+
"\\updownarrow" => "",
276+
"\\nwarrow" => "",
277+
"\\nearrow" => "",
278+
"\\searrow" => "",
279+
"\\swarrow" => "",
280+
"\\nleftarrow" => "",
281+
"\\nrightarrow" => "",
282+
"\\leftsquigarrow" => "",
283+
"\\rightsquigarrow" => "",
284+
"\\twoheadleftarrow" => "",
285+
"\\twoheadrightarrow" => "",
286+
"\\leftarrowtail" => "",
287+
"\\rightarrowtail" => "",
288+
"\\mapsto" => "",
289+
"\\hookleftarrow" => "",
290+
"\\hookrightarrow" => "",
291+
"\\looparrowleft" => "",
292+
"\\looparrowright" => "",
293+
"\\leftrightsquigarrow" => "",
294+
"\\nleftrightarrow" => "",
295+
"\\Lsh" => "",
296+
"\\Rsh" => "",
297+
"\\curvearrowleft" => "",
298+
"\\curvearrowright" => "",
299+
"\\circlearrowleft" => "",
300+
"\\circlearrowright" => "",
301+
"\\leftharpoonup" => "",
302+
"\\leftharpoondown" => "",
303+
"\\upharpoonleft" => "",
304+
"\\upharpoonright" => "",
305+
"\\rightharpoonup" => "",
306+
"\\rightharpoondown" => "",
307+
"\\downharpoonright" => "",
308+
"\\downharpoonleft" => "",
309+
"\\rightleftarrows" => "",
310+
"\\dblarrowupdown" => "",
311+
"\\leftrightarrows" => "",
312+
"\\leftleftarrows" => "",
313+
"\\upuparrows" => "",
314+
"\\rightrightarrows" => "",
315+
"\\downdownarrows" => "",
316+
"\\leftrightharpoons" => "",
317+
"\\rightleftharpoons" => "",
318+
"\\nLeftarrow" => "",
319+
"\\nRightarrow" => "",
320+
"\\Leftarrow" => "",
321+
"\\Uparrow" => "",
322+
"\\Rightarrow" => "",
323+
"\\Downarrow" => "",
324+
"\\Leftrightarrow" => "",
325+
"\\Updownarrow" => "",
326+
"\\Lleftarrow" => "",
327+
"\\Rrightarrow" => "",
328+
"\\DownArrowUpArrow" => "",
329+
"\\leftarrowtriangle" => "",
330+
"\\rightarrowtriangle" => "",
331+
"\\forall" => "",
332+
"\\complement" => "",
333+
"\\partial" => "",
334+
"\\exists" => "",
335+
"\\nexists" => "",
336+
"\\varnothing" => "",
337+
"\\nabla" => "",
338+
"\\in" => "",
339+
"\\notin" => "",
340+
"\\ni" => "",
341+
"\\prod" => "",
342+
"\\coprod" => "",
343+
"\\sum" => "",
344+
"\\minus" => "",
345+
"\\mp" => "",
346+
"\\dotplus" => "",
347+
"\\setminus" => "",
348+
"\\ast" => "",
349+
"\\circ" => "",
350+
"\\surd" => "",
351+
"\\propto" => "",
352+
"\\infty" => "",
353+
"\\rightangle" => "",
354+
"\\angle" => "",
355+
"\\measuredangle" => "",
356+
"\\sphericalangle" => "",
357+
"\\mid" => "",
358+
"\\nmid" => "",
359+
"\\parallel" => "",
360+
"\\nparallel" => "",
361+
"\\wedge" => "",
362+
"\\vee" => "",
363+
"\\cap" => "",
364+
"\\cup" => "",
365+
"\\int" => "",
366+
"\\iint" => "",
367+
"\\iiint" => "",
368+
"\\oint" => "",
369+
"\\oiint" => "",
370+
"\\oiiint" => "",
371+
"\\clwintegral" => "",
372+
"\\therefore" => "",
373+
"\\because" => "",
374+
"\\Colon" => "",
375+
"\\dotminus" => "",
376+
"\\kernelcontraction" => "",
377+
"\\sim" => "",
378+
"\\backsim" => "",
379+
"\\lazysinv" => "",
380+
"\\wr" => "",
381+
"\\nsim" => "",
382+
"\\eqsim" => "",
383+
"\\neqsim" => "≂̸",
384+
"\\simeq" => "",
385+
"\\nsime" => "",
386+
"\\cong" => "",
387+
"\\approxnotequal" => "",
388+
"\\ncong" => "",
389+
"\\approx" => "",
390+
"\\napprox" => "",
391+
"\\approxeq" => "",
392+
"\\tildetrpl" => "",
393+
"\\allequal" => "",
394+
"\\asymp" => "",
395+
"\\Bumpeq" => "",
396+
"\\nBumpeq" => "≎̸",
397+
"\\bumpeq" => "",
398+
"\\nbumpeq" => "≏̸",
399+
"\\doteq" => "",
400+
"\\Doteq" => "",
401+
"\\fallingdotseq" => "",
402+
"\\risingdotseq" => "",
403+
"\\coloneq" => "",
404+
"\\eqcolon" => "",
405+
"\\eqcirc" => "",
406+
"\\circeq" => "",
407+
"\\wedgeq" => "",
408+
"\\starequal" => "",
409+
"\\triangleq" => "",
410+
"\\questeq" => "",
411+
"\\ne" => "",
412+
"\\equiv" => "",
413+
"\\nequiv" => "",
414+
"\\le" => "",
415+
"\\ge" => "",
416+
"\\leqq" => "",
417+
"\\geqq" => "",
418+
"\\lneqq" => "",
419+
"\\lvertneqq" => "≨︀",
420+
"\\gneqq" => "",
421+
"\\gvertneqq" => "≩︀",
422+
"\\ll" => "",
423+
"\\NotLessLess" => "≪̸",
424+
"\\gg" => "",
425+
"\\NotGreaterGreater" => "≫̸",
426+
"\\between" => "",
427+
"\\nless" => "",
428+
"\\ngtr" => "",
429+
"\\nleq" => "",
430+
"\\ngeq" => "",
431+
"\\lesssim" => "",
432+
"\\gtrsim" => "",
433+
"\\lessgtr" => "",
434+
"\\gtrless" => "",
435+
"\\notlessgreater" => "",
436+
"\\notgreaterless" => "",
437+
"\\prec" => "",
438+
"\\succ" => "",
439+
"\\preccurlyeq" => "",
440+
"\\succcurlyeq" => "",
441+
"\\precsim" => "",
442+
"\\nprecsim" => "≾̸",
443+
"\\succsim" => "",
444+
"\\nsuccsim" => "≿̸",
445+
"\\nprec" => "",
446+
"\\nsucc" => "",
447+
"\\subset" => "",
448+
"\\supset" => "",
449+
"\\nsubset" => "",
450+
"\\nsupset" => "",
451+
"\\subseteq" => "",
452+
"\\supseteq" => "",
453+
"\\nsubseteq" => "",
454+
"\\nsupseteq" => "",
455+
"\\subsetneq" => "",
456+
"\\varsubsetneqq" => "⊊︀",
457+
"\\supsetneq" => "",
458+
"\\varsupsetneq" => "⊋︀",
459+
"\\cupdot" => "",
460+
"\\uplus" => "",
461+
"\\sqsubset" => "",
462+
"\\NotSquareSubset" => "⊏̸",
463+
"\\sqsupset" => "",
464+
"\\NotSquareSuperset" => "⊐̸",
465+
"\\sqsubseteq" => "",
466+
"\\sqsupseteq" => "",
467+
"\\sqcap" => "",
468+
"\\sqcup" => "",
469+
"\\oplus" => "",
470+
"\\ominus" => "",
471+
"\\otimes" => "",
472+
"\\oslash" => "",
473+
"\\odot" => "",
474+
"\\circledcirc" => "",
475+
"\\circledast" => "",
476+
"\\circleddash" => "",
477+
"\\boxplus" => "",
478+
"\\boxminus" => "",
479+
"\\boxtimes" => "",
480+
"\\boxdot" => "",
481+
"\\vdash" => "",
482+
"\\dashv" => "",
483+
"\\top" => "",
484+
"\\perp" => "",
485+
"\\models" => "",
486+
"\\vDash" => "",
487+
"\\Vdash" => "",
488+
"\\Vvdash" => "",
489+
"\\VDash" => "",
490+
"\\nvdash" => "",
491+
"\\nvDash" => "",
492+
"\\nVdash" => "",
493+
"\\nVDash" => "",
494+
"\\vartriangleleft" => "",
495+
"\\vartriangleright" => "",
496+
"\\trianglelefteq" => "",
497+
"\\trianglerighteq" => "",
498+
"\\original" => "",
499+
"\\image" => "",
500+
"\\multimap" => "",
501+
"\\hermitconjmatrix" => "",
502+
"\\intercal" => "",
503+
"\\veebar" => "",
504+
"\\rightanglearc" => "",
505+
"\\bigwedge" => "",
506+
"\\bigvee" => "",
507+
"\\bigcap" => "",
508+
"\\bigcup" => "",
509+
"\\diamond" => "",
510+
"\\cdot" => "",
511+
"\\star" => "",
512+
"\\divideontimes" => "",
513+
"\\bowtie" => "",
514+
"\\ltimes" => "",
515+
"\\rtimes" => "",
516+
"\\leftthreetimes" => "",
517+
"\\rightthreetimes" => "",
518+
"\\backsimeq" => "",
519+
"\\curlyvee" => "",
520+
"\\curlywedge" => "",
521+
"\\Subset" => "",
522+
"\\Supset" => "",
523+
"\\Cap" => "",
524+
"\\Cup" => "",
525+
"\\pitchfork" => "",
526+
"\\lessdot" => "",
527+
"\\gtrdot" => "",
528+
"\\verymuchless" => "",
529+
"\\ggg" => "",
530+
"\\lesseqgtr" => "",
531+
"\\gtreqless" => "",
532+
"\\curlyeqprec" => "",
533+
"\\curlyeqsucc" => "",
534+
"\\Elzsqspne" => "",
535+
"\\lnsim" => "",
536+
"\\gnsim" => "",
537+
"\\precnsim" => "",
538+
"\\succnsim" => "",
539+
"\\ntriangleleft" => "",
540+
"\\ntriangleright" => "",
541+
"\\ntrianglelefteq" => "",
542+
"\\ntrianglerighteq" => "",
543+
"\\vdots" => "",
544+
"\\cdots" => "",
545+
"\\adots" => "",
546+
"\\ddots" => "",
547+
"\\barwedge" => "",
548+
"\\lceil" => "",
549+
"\\rceil" => "",
550+
"\\lfloor" => "",
551+
"\\rfloor" => "",
552+
"\\recorder" => "",
553+
"\\ulcorner" => "",
554+
"\\urcorner" => "",
555+
"\\llcorner" => "",
556+
"\\lrcorner" => "",
557+
"\\frown" => "",
558+
"\\smile" => "",
559+
"\\langle" => "",
560+
"\\rangle" => "",
561+
"\\obar" => "",
562+
"\\Elzdlcorn" => "",
563+
"\\lmoustache" => "",
564+
"\\rmoustache" => "",
565+
"\\textvisiblespace" => "",
566+
"\\circledS" => "",
567+
"\\Elzdshfnc" => "",
568+
"\\Elzsqfnw" => "",
569+
"\\diagup" => "",
570+
"\\diagdown" => "",
571+
"\\blacksquare" => "",
572+
"\\square" => "",
573+
"\\Elzvrecto" => "",
574+
"\\bigtriangleup" => "",
575+
"\\blacktriangle" => "",
576+
"\\vartriangle" => "",
577+
"\\blacktriangleright" => "",
578+
"\\triangleright" => "",
579+
"\\bigtriangledown" => "",
580+
"\\blacktriangledown" => "",
581+
"\\triangledown" => "",
582+
"\\blacktriangleleft" => "",
583+
"\\triangleleft" => "",
584+
"\\lozenge" => "",
585+
"\\bigcirc" => "",
586+
"\\Elzcirfl" => "",
587+
"\\Elzcirfr" => "",
588+
"\\Elzcirfb" => "",
589+
"\\Elzrvbull" => "",
590+
"\\Elzsqfl" => "",
591+
"\\Elzsqfr" => "",
592+
"\\Elzsqfse" => "",
593+
"\\bigstar" => "",
594+
"\\rightmoon" => "",
595+
"\\mercury" => "",
596+
"\\venus" => "",
597+
"\\male" => "",
598+
"\\jupiter" => "",
599+
"\\saturn" => "",
600+
"\\uranus" => "",
601+
"\\neptune" => "",
602+
"\\pluto" => "",
603+
"\\aries" => "",
604+
"\\taurus" => "",
605+
"\\gemini" => "",
606+
"\\cancer" => "",
607+
"\\leo" => "",
608+
"\\virgo" => "",
609+
"\\libra" => "",
610+
"\\scorpio" => "",
611+
"\\sagittarius" => "",
612+
"\\capricornus" => "",
613+
"\\aquarius" => "",
614+
"\\pisces" => "",
615+
"\\spadesuit" => "",
616+
"\\heartsuit" => "",
617+
"\\diamondsuit" => "",
618+
"\\clubsuit" => "",
619+
"\\quarternote" => "",
620+
"\\eighthnote" => "",
621+
"\\flat" => "",
622+
"\\natural" => "",
623+
"\\sharp" => "",
624+
"\\checkmark" => "",
625+
"\\maltese" => "",
626+
"\\longleftarrow" => "",
627+
"\\longrightarrow" => "",
628+
"\\longleftrightarrow" => "",
629+
"\\Longleftarrow" => "",
630+
"\\Longrightarrow" => "",
631+
"\\Longleftrightarrow" => "",
632+
"\\longmapsto" => "",
633+
"\\Mapsfrom" => "",
634+
"\\Mapsto" => "",
635+
"\\Uuparrow" => "",
636+
"\\Ddownarrow" => "",
637+
"\\bkarow" => "",
638+
"\\dbkarow" => "",
639+
"\\drbkarrow" => "",
640+
"\\UpArrowBar" => "",
641+
"\\DownArrowBar" => "",
642+
"\\twoheadrightarrowtail" => "",
643+
"\\hksearow" => "",
644+
"\\hkswarow" => "",
645+
"\\tona" => "",
646+
"\\toea" => "",
647+
"\\tosa" => "",
648+
"\\towa" => "",
649+
"\\rdiagovfdiag" => "",
650+
"\\fdiagovrdiag" => "",
651+
"\\seovnearrow" => "",
652+
"\\neovsearrow" => "",
653+
"\\fdiagovnearrow" => "",
654+
"\\rdiagovsearrow" => "",
655+
"\\neovnwarrow" => "",
656+
"\\nwovnearrow" => "",
657+
"\\ElzRlarr" => "",
658+
"\\ElzrLarr" => "",
659+
"\\Elzrarrx" => "",
660+
"\\LeftRightVector" => "",
661+
"\\RightUpDownVector" => "",
662+
"\\DownLeftRightVector" => "",
663+
"\\LeftUpDownVector" => "",
664+
"\\LeftVectorBar" => "",
665+
"\\RightVectorBar" => "",
666+
"\\RightUpVectorBar" => "",
667+
"\\RightDownVectorBar" => "",
668+
"\\DownLeftVectorBar" => "",
669+
"\\DownRightVectorBar" => "",
670+
"\\LeftUpVectorBar" => "",
671+
"\\LeftDownVectorBar" => "",
672+
"\\LeftTeeVector" => "",
673+
"\\RightTeeVector" => "",
674+
"\\RightUpTeeVector" => "",
675+
"\\RightDownTeeVector" => "",
676+
"\\DownLeftTeeVector" => "",
677+
"\\DownRightTeeVector" => "",
678+
"\\LeftUpTeeVector" => "",
679+
"\\LeftDownTeeVector" => "",
680+
"\\UpEquilibrium" => "",
681+
"\\ReverseUpEquilibrium" => "",
682+
"\\RoundImplies" => "",
683+
"\\Vvert" => "",
684+
"\\Elroang" => "",
685+
"\\Elzddfnc" => "",
686+
"\\Angle" => "",
687+
"\\Elzlpargt" => "",
688+
"\\obslash" => "",
689+
"\\boxdiag" => "",
690+
"\\boxbslash" => "",
691+
"\\boxast" => "",
692+
"\\boxcircle" => "",
693+
"\\ElzLap" => "",
694+
"\\Elzdefas" => "",
695+
"\\LeftTriangleBar" => "",
696+
"\\NotLeftTriangleBar" => "⧏̸",
697+
"\\RightTriangleBar" => "",
698+
"\\NotRightTriangleBar" => "⧐̸",
699+
"\\dualmap" => "",
700+
"\\shuffle" => "",
701+
"\\blacklozenge" => "",
702+
"\\RuleDelayed" => "",
703+
"\\bigodot" => "",
704+
"\\bigoplus" => "",
705+
"\\bigotimes" => "",
706+
"\\bigcupdot" => "",
707+
"\\biguplus" => "",
708+
"\\bigsqcap" => "",
709+
"\\bigsqcup" => "",
710+
"\\conjquant" => "",
711+
"\\disjquant" => "",
712+
"\\bigtimes" => "",
713+
"\\iiiint" => "",
714+
"\\intbar" => "",
715+
"\\intBar" => "",
716+
"\\clockoint" => "",
717+
"\\sqrint" => "",
718+
"\\intx" => "",
719+
"\\intcap" => "",
720+
"\\intcup" => "",
721+
"\\upint" => "",
722+
"\\lowint" => "",
723+
"\\plusdot" => "",
724+
"\\minusdot" => "",
725+
"\\ElzTimes" => "",
726+
"\\btimes" => "",
727+
"\\intprod" => "",
728+
"\\intprodr" => "",
729+
"\\amalg" => "⨿",
730+
"\\ElzAnd" => "",
731+
"\\ElzOr" => "",
732+
"\\ElOr" => "",
733+
"\\perspcorrespond" => "",
734+
"\\Elzminhat" => "",
735+
"\\Equal" => "",
736+
"\\ddotseq" => "",
737+
"\\leqslant" => "",
738+
"\\nleqslant" => "⩽̸",
739+
"\\geqslant" => "",
740+
"\\ngeqslant" => "⩾̸",
741+
"\\lessapprox" => "",
742+
"\\gtrapprox" => "",
743+
"\\lneq" => "",
744+
"\\gneq" => "",
745+
"\\lnapprox" => "",
746+
"\\gnapprox" => "",
747+
"\\lesseqqgtr" => "",
748+
"\\gtreqqless" => "",
749+
"\\eqslantless" => "",
750+
"\\eqslantgtr" => "",
751+
"\\NestedLessLess" => "",
752+
"\\NotNestedLessLess" => "⪡̸",
753+
"\\NestedGreaterGreater" => "",
754+
"\\NotNestedGreaterGreater" => "⪢̸",
755+
"\\partialmeetcontraction" => "",
756+
"\\bumpeqq" => "",
757+
"\\preceq" => "",
758+
"\\npreceq" => "⪯̸",
759+
"\\succeq" => "",
760+
"\\nsucceq" => "⪰̸",
761+
"\\precneqq" => "",
762+
"\\succneqq" => "",
763+
"\\precapprox" => "",
764+
"\\succapprox" => "",
765+
"\\precnapprox" => "",
766+
"\\succnapprox" => "",
767+
"\\subseteqq" => "",
768+
"\\nsubseteqq" => "⫅̸",
769+
"\\supseteqq" => "",
770+
"\\nsupseteqq" => "⫆̸",
771+
"\\subsetneqq" => "",
772+
"\\supsetneqq" => "",
773+
"\\mlcp" => "",
774+
"\\forks" => "",
775+
"\\forksnot" => "",
776+
"\\dashV" => "",
777+
"\\Dashv" => "",
778+
"\\interleave" => "",
779+
"\\Elztdcol" => "",
780+
"\\openbracketleft" => "",
781+
"\\openbracketright" => "",
782+
"\\overbrace" => "",
783+
"\\underbrace" => "",
784+
785+
786+
]

0 commit comments

Comments
 (0)
Please sign in to comment.