Require a word (including its subscript) to end in a number or letter.
[matthijs/master-project/report.git] / pret-lam.lua
index 25f4f7a40c173f0a00e573e01434788f7ea0683c..feaa5e43934cbb157757b9152c38a6ea8f624c72 100644 (file)
@@ -29,8 +29,10 @@ local symbols = {
     {symbol = '*', repr = '\\ast'},
     {symbol = '~', repr = '\\HDLine[width=.20 * \\the\\textwidth]'},
     {symbol = '|', repr = '\\char' .. utf.byte('|')},
-    -- Use ▶ from our roman font, since Iwona doesn't have the glyph
+    -- Use ▶ and ∧ from our roman font, since Iwona doesn't have the glyph
     {symbol = '▶', repr = '{\\rm{}▶}'},
+    --{symbol = '∧', repr = '{$∧$}'},
+    {symbol = '∧', repr = '{\\rm{}∧}'},
 }
 
 -- Keywords that should be bold
@@ -86,8 +88,12 @@ end
 -- the word taken.
 local function take_word(str)
         -- A word must always start with a-z (in particular, λ is not a valid
-        -- start of a word).
-        res, newstr = utf.match(str, "^([a-zA-Z][%a%d%+%-%,_]+)(.*)")
+        -- start of a word). A word must always end with a letter or a digit
+        res, newstr = utf.match(str, "^([a-zA-Z][%a%d%+%-%,_]*[%a%d]+)(.*)")
+        if not res then
+            -- The above does not catch single letter words
+            res, newstr = utf.match(str, "^([a-zA-Z])(.*)")
+        end
         return res, newstr or str
 end
 
@@ -207,7 +213,7 @@ function vis.begin_of_display()
     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[%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.