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
|
#!/usr/bin/python3
import re
import os
import qplot as qp
rx = re.compile(r'"(.*)":\s*"(.*)"');
sections = []
keylist = []
keymap = {}
revmap = {}
secheader = []
with open("../src/Items/TeXCodes.json") as f:
fr = f.read()
for line in fr.split("\n"):
m = rx.search(line)
if m:
k = m.group(1)
v = m.group(2)
if k == "#":
sections.append(keylist)
secheader.append(v)
keylist = []
else:
keylist.append(k)
keymap[k] = v
revmap[v] = k
sections.append(keylist)
sections = sections[1:]
N = len(sections)
dy = 12
for n in range(N):
h = len(sections[n]) * dy / 72 + .1
if n==2:
w = 1.3
else:
w = 1.2
qp.figure('texcodes', w, h)
qp.pen('w')
qp.plot([0, 1],[0, -1])
qp.pen()
qp.at(.25, 0)
y = 0
qp.font('FreeMono', 10)
qp.align('left', 'base')
for k in sections[n]:
while k[0] in revmap:
k = revmap[k[0]] + k[1:]
k = k.replace("^", "∧")
if k[0]=='*':
if len(k)==2:
k = k[1]
else:
k = k[1:] + "^*"
qp.text(k, 10, y)
y = y + dy
y = 0
if n==6:
qp.font('Georgia', 10, italic=True)
else:
qp.font('CenturySchoolbook', 10)
qp.align('center', 'base')
for k in sections[n]:
v = keymap[k]
qp.text(v, -5, y)
y = y + dy
qp.shrink(2)
qp.save(f"../build/texcodes-{n}.pdf")
os.chdir("../build")
os.system("placeqpt -o ../docs/userguide/texcodes.pdf ../tools/texcodes.placeqpt")
|