-- The default * sits very high above the baseline, \ast (u+2217) looks
-- better.
['*'] = {repr = '\\ast'},
- ['~'] = {repr = '\\sim'},
+ ['~'] = {repr = '\\HDLine[width=.20 * \\the\\textwidth]'},
['|'] = {repr = '\\char' .. utf.byte('|')},
}
['letrec'] = {},
['letnonrec'] = {},
['in'] = {},
+ ['DEFAULT'] = {},
}
local in_block = 0
local bases = {}
-- Store the last line for each indent level
local indentlines = {}
+-- The amount of indent of the first line, which we will strip of all
+-- subsequent lines. This allows the entire block to be indented as normal in
+-- the tex source code.
+local first_indent
-- See if str starts with a symbol, and return the remaining string and that
-- symbol. If no symbol from the table is matched, just returns the first
-- line4, and line is no longer in scope since it is replaced by line4.
local function do_indent(line)
newind, rest = utf.match(line, '^(%s*)(.*)')
+
+ -- Store the first line's indent
+ if not first_indent then
+ first_indent = utf.len(newind)
+ end
+
+ -- Strip the indent of the first line from this line's indent.
+ newind = utf.sub(newind, first_indent + 1)
+ -- Rebuild line, so we can still use it below
+ line = newind .. rest
+
prev = -1
-- Loop all the previous lines
for indent, unused in pairs(indentlines) do
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,]+)$"}
-- 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.
bases = {}
end
indentlines = {}
+ first_indent = nil
end