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
bases = {}
end
indentlines = {}
+ first_indent = nil
end