-- Symbols that should have a different representation
local symbols = {
- [' '] = {repr = '\\obs '},
+ -- Note, the space we replace with is a Unicode non-breaking space
+ -- (U+00A0).
+ [' '] = {repr = ' '},
['_'] = {repr = '\\_'},
- ['->'] = {repr = '\\rightarrow'},
+ ['->'] = {repr = '→'},
+ ['=>'] = {repr = '⇒'},
-- The default * sits very high above the baseline, \ast (u+2217) looks
-- better.
['*'] = {repr = '\\ast'},
['~'] = {repr = '\\HDLine[width=.20 * \\the\\textwidth]'},
['|'] = {repr = '\\char' .. utf.byte('|')},
- ['$'] = {repr = '\\char' .. utf.byte('$')},
+ -- Use ▶ from our roman font, since Iwona doesn't have the glyph
+ ['▶'] = {repr = '{\\rm{}▶}'},
}
-- Keywords that should be bold
['letrec'] = {},
['letnonrec'] = {},
['in'] = {},
- ['DEFAULT'] = {},
+ ['DEFAULT'] = {small = true},
}
local in_block = 0
submatches[#submatches+1] = "^(" .. base .. ")([%a%d])$"
-- Seconde, the base with a longer prefix that includes at least
-- one of +-, (to catch things like ri+1, but not return).
- submatches[#submatches+1] = "^(" .. base .. ")([%a%d]*[%-%+%,]+[%a%d%-%+%,]*)$"
+ submatches[#submatches+1] = "^(" .. base .. ")([%a%d]*[%-%+,]+[%a%d%-%+,]*)$"
end
end
return word
if in_block == 0 then
-- Initially allow subscripts using _ or just appending a number (later,
-- we will add extra patterns here.
- submatches = {"^(%a*)_([%a%d,]+)$", "^(%a+)([%d,]+)$"}
+ submatches = {"^(%a*)_([%a%d,]+)$", "^(%a+)(%d[%d,]+)$"}
-- This stores all the bases we've encountered so far (to prevent
-- duplicates). For each of them there will be a pattern in submatches
-- above.
if keywords[res] then
-- Make all keywords bold
word = "{\\bold " .. word .. "}"
+ if keywords[res].small then
+ word = "\\small" .. word -- Curlies were added above
+ end
else
-- Process any subscripts in the word
word = do_subscripts(word)