On Thu, Aug 23, 2001 at 11:07:20AM +0200, Andre Poenitz wrote: > On Thu, Aug 23, 2001 at 11:37:16AM +0300, Dekel Tsur wrote: > > It is not hard to generate the information we need for all latex symbols > > from the latex files (fontmath.ltx and amssymb.sty). > > Looks like you are volunteering. > > Would be nice to have the symbols in some kind of text file > > latexname1 in_X_symbol_font? X_symbol_code other_font? other_code > latexname2 in_X_symbol_font? X_symbol_code other_font? other_code > > or something like that. Here is the list with only ps symbol information. I can add the X symbol font information if you need it. PS: The script doesn't use the 2nd argument to DeclareMathSymbol which defines the type of the symbol. Do you need this information in the list ?
# Generated from fontmath.ltx alpha cmm 0b beta cmm 0c gamma cmm 0d delta cmm 0e epsilon cmm 0f zeta cmm 10 eta cmm 11 theta cmm 12 iota cmm 13 kappa cmm 14 lambda cmm 15 mu cmm 16 nu cmm 17 xi cmm 18 pi cmm 19 rho cmm 1a sigma cmm 1b tau cmm 1c upsilon cmm 1d phi cmm 1e chi cmm 1f psi cmm 20 omega cmm 21 varepsilon cmm 22 vartheta cmm 23 varpi cmm 24 varrho cmm 25 varsigma cmm 26 varphi cmm 27 Gamma cmr 00 Delta cmr 01 Theta cmr 02 Lambda cmr 03 Xi cmr 04 Pi cmr 05 Sigma cmr 06 Upsilon cmr 07 Phi cmr 08 Psi cmr 09 Omega cmr 0a aleph cmsy 40 imath cmm 7b jmath cmm 7c ell cmm 60 wp cmm 7d Re cmsy 3c Im cmsy 3d partial cmm 40 infty cmsy 31 prime cmsy 30 emptyset cmsy 3b nabla cmsy 72 top cmsy 3e bot cmsy 3f triangle cmsy 34 forall cmsy 38 exists cmsy 39 neg cmsy 3a flat cmm 5b natural cmm 5c sharp cmm 5d clubsuit cmsy 7c diamondsuit cmsy 7d heartsuit cmsy 7e spadesuit cmsy 7f coprod cmex 60 bigvee cmex 57 bigwedge cmex 56 biguplus cmex 55 bigcap cmex 54 bigcup cmex 53 int cmex 52 prod cmex 51 sum cmex 50 bigotimes cmex 4e bigoplus cmex 4c bigodot cmex 4a oint cmex 48 bigsqcup cmex 46 smallint cmsy 73 triangleleft cmm 2f triangleright cmm 2e bigtriangleup cmsy 34 bigtriangledown cmsy 35 wedge cmsy 5e vee cmsy 5f cap cmsy 5c cup cmsy 5b ddagger cmsy 7a dagger cmsy 79 sqcap cmsy 75 sqcup cmsy 74 uplus cmsy 5d amalg cmsy 71 diamond cmsy 05 bullet cmsy 0f wr cmsy 6f div cmsy 04 odot cmsy 0c oslash cmsy 0b otimes cmsy 0a ominus cmsy 09 oplus cmsy 08 mp cmsy 07 pm cmsy 06 circ cmsy 0e bigcirc cmsy 0d setminus cmsy 6e cdot cmsy 01 ast cmsy 03 times cmsy 02 star cmm 3f propto cmsy 2f sqsubseteq cmsy 76 sqsupseteq cmsy 77 parallel cmsy 6b mid cmsy 6a dashv cmsy 61 vdash cmsy 60 nearrow cmsy 25 searrow cmsy 26 nwarrow cmsy 2d swarrow cmsy 2e Leftrightarrow cmsy 2c Leftarrow cmsy 28 Rightarrow cmsy 29 leq cmsy 14 geq cmsy 15 succ cmsy 1f prec cmsy 1e approx cmsy 19 succeq cmsy 17 preceq cmsy 16 supset cmsy 1b subset cmsy 1a supseteq cmsy 13 subseteq cmsy 12 in cmsy 32 ni cmsy 33 gg cmsy 1d ll cmsy 1c not cmsy 36 leftrightarrow cmsy 24 leftarrow cmsy 20 rightarrow cmsy 21 mapsto cmsy 37 sim cmsy 18 simeq cmsy 27 perp cmsy 3f equiv cmsy 11 asymp cmsy 10 smile cmm 5e frown cmm 5f leftharpoonup cmm 28 leftharpoondown cmm 29 rightharpoonup cmm 2a rightharpoondown cmm 2b lhook cmm 2c rhook cmm 2d ldotp cmm 3a cdotp cmsy 01 colon cmr 3a braceld cmex 7a bracerd cmex 7b bracelu cmex 7c braceru cmex 7d lmoustache cmex 7a rmoustache cmex 7b arrowvert cmsy 6a Arrowvert cmsy 6b Vert cmsy 6b vert cmsy 6a uparrow cmsy 22 downarrow cmsy 23 updownarrow cmsy 6c Uparrow cmsy 2a Downarrow cmsy 2b Updownarrow cmsy 6d backslash cmsy 6e rangle cmsy 69 langle cmsy 68 rbrace cmsy 67 lbrace cmsy 66 rceil cmsy 65 lceil cmsy 64 rfloor cmsy 63 lfloor cmsy 62 lgroup cmex 3a rgroup cmex 3b bracevert cmex 3e mathparagraph cmsy 7b mathsection cmsy 78 mathdollar cmr 24 # Generated from amsfonts.sty ulcorner msa 70 urcorner msa 71 llcorner msa 78 lrcorner msa 79 dabar@ msa 39 rightleftharpoons msa 0a angle msa 5c hbar msb 7e sqsubset msa 40 sqsupset msa 41 mho msb 66 square msa 03 lozenge msa 06 vartriangleright msa 42 vartriangleleft msa 43 trianglerighteq msa 44 trianglelefteq msa 45 rightsquigarrow msa 20 lhd msa 43 unlhd msa 45 rhd msa 42 unrhd msa 44 # Generated from amssymb.sty boxdot msa 00 boxplus msa 01 boxtimes msa 02 square msa 03 blacksquare msa 04 centerdot msa 05 lozenge msa 06 blacklozenge msa 07 circlearrowright msa 08 circlearrowleft msa 09 leftrightharpoons msa 0b leftrightharpoons msa 0b boxminus msa 0c Vdash msa 0d Vvdash msa 0e vDash msa 0f twoheadrightarrow msa 10 twoheadleftarrow msa 11 leftleftarrows msa 12 rightrightarrows msa 13 upuparrows msa 14 downdownarrows msa 15 upharpoonright msa 16 downharpoonright msa 17 upharpoonleft msa 18 downharpoonleft msa 19 rightarrowtail msa 1a leftarrowtail msa 1b leftrightarrows msa 1c rightleftarrows msa 1d Lsh msa 1e Rsh msa 1f rightsquigarrow msa 20 leftrightsquigarrow msa 21 looparrowleft msa 22 looparrowright msa 23 circeq msa 24 succsim msa 25 gtrsim msa 26 gtrapprox msa 27 multimap msa 28 therefore msa 29 because msa 2a doteqdot msa 2b triangleq msa 2c precsim msa 2d lesssim msa 2e lessapprox msa 2f eqslantless msa 30 eqslantgtr msa 31 curlyeqprec msa 32 curlyeqsucc msa 33 preccurlyeq msa 34 leqq msa 35 leqslant msa 36 lessgtr msa 37 backprime msa 38 risingdotseq msa 3a fallingdotseq msa 3b succcurlyeq msa 3c geqq msa 3d geqslant msa 3e gtrless msa 3f vartriangleright msa 42 vartriangleright msa 42 vartriangleleft msa 43 trianglerighteq msa 44 trianglelefteq msa 45 bigstar msa 46 between msa 47 blacktriangledown msa 48 blacktriangleright msa 49 blacktriangleleft msa 4a vartriangle msa 4d blacktriangle msa 4e triangledown msa 4f eqcirc msa 50 lesseqgtr msa 51 gtreqless msa 52 lesseqqgtr msa 53 gtreqqless msa 54 Rrightarrow msa 56 Lleftarrow msa 57 veebar msa 59 barwedge msa 5a doublebarwedge msa 5b measuredangle msa 5d measuredangle msa 5d sphericalangle msa 5e varpropto msa 5f smallsmile msa 60 smallfrown msa 61 Subset msa 62 Supset msa 63 Cup msa 64 Cap msa 65 curlywedge msa 66 curlyvee msa 67 leftthreetimes msa 68 rightthreetimes msa 69 subseteqq msa 6a supseteqq msa 6b bumpeq msa 6c Bumpeq msa 6d lll msa 6e ggg msa 6f circledS msa 73 pitchfork msa 74 dotplus msa 75 backsim msa 76 backsimeq msa 77 complement msa 7b intercal msa 7c circledcirc msa 7d circledast msa 7e circleddash msa 7f lvertneqq msb 00 lvertneqq msb 00 gvertneqq msb 01 nleq msb 02 ngeq msb 03 nless msb 04 ngtr msb 05 nprec msb 06 nsucc msb 07 lneqq msb 08 gneqq msb 09 nleqslant msb 0a ngeqslant msb 0b lneq msb 0c gneq msb 0d npreceq msb 0e nsucceq msb 0f precnsim msb 10 succnsim msb 11 lnsim msb 12 gnsim msb 13 nleqq msb 14 ngeqq msb 15 precneqq msb 16 succneqq msb 17 precnapprox msb 18 succnapprox msb 19 lnapprox msb 1a gnapprox msb 1b nsim msb 1c ncong msb 1d diagup msb 1e diagdown msb 1f varsubsetneq msb 20 varsupsetneq msb 21 nsubseteqq msb 22 nsupseteqq msb 23 subsetneqq msb 24 supsetneqq msb 25 varsubsetneqq msb 26 varsupsetneqq msb 27 subsetneq msb 28 supsetneq msb 29 nsubseteq msb 2a nsupseteq msb 2b nparallel msb 2c nmid msb 2d nshortmid msb 2e nshortparallel msb 2f nvdash msb 30 nVdash msb 31 nvDash msb 32 nVDash msb 33 ntrianglerighteq msb 34 ntrianglelefteq msb 35 ntriangleleft msb 36 ntriangleright msb 37 nleftarrow msb 38 nrightarrow msb 39 nLeftarrow msb 3a nRightarrow msb 3b nLeftrightarrow msb 3c nleftrightarrow msb 3d divideontimes msb 3e varnothing msb 3f nexists msb 40 Finv msb 60 Game msb 61 eth msb 67 eth msb 67 eqsim msb 68 beth msb 69 gimel msb 6a daleth msb 6b lessdot msb 6c gtrdot msb 6d ltimes msb 6e rtimes msb 6f shortmid msb 70 shortparallel msb 71 smallsetminus msb 72 thicksim msb 73 thickapprox msb 74 approxeq msb 75 succapprox msb 76 precapprox msb 77 curvearrowleft msb 78 curvearrowright msb 79 digamma msb 7a varkappa msb 7b Bbbk msb 7c hslash msb 7d backepsilon msb 7f backepsilon msb 7f
#!/usr/bin/python import sys,string,re def is_prefix(a, b): return a[:len(b)] == b font_names = {} def process(file): fh = open(file) lines = fh.readlines() fh.close() n = len(lines) for i in xrange(n): line = lines[i] next_line = "" if i+1 < n: next_line = lines[i+1] # some entries are spread over two lines so we joint the next line # to the current one, removing any comments line = string.split(line,'%')[0]+string.split(next_line,'%')[0] mo = re.match(r'\s*\\DeclareSymbolFont\s*\{(.*?)\}\s*\{(.*?)\}\s*\{(.*?)\}.*', line) if mo != None: font_names[mo.group(1)] = mo.group(3) mo = re.match(r'\s*\\DeclareMath(Symbol|Delimiter)\s*\{?\\(.*?)\}?\s*\{(.*?)\}\s*\{(.*?)\}\s*\{"(.*?)\}.*', line) if mo != None: symbol = mo.group(2) mo2 = re.match(r'\s*\\def\\(.*?)\{', next_line) if mo2 != None and is_prefix(symbol,mo2.group(1)): sys.stderr.write("# %s -> %s\n" % (symbol, mo2.group(1))) symbol = mo2.group(1) font = mo.group(4) if font_names.has_key(font): font = font_names[font] print "%-18s %-4s %2s" % (symbol,font,string.lower(mo.group(5))) for file in sys.argv[1:]: print "# Generated from " + file + "\n" process(file) print