local utf = unicode.utf8
-vis = buffers.newvisualizer("trans")
+local vis = buffers.newvisualizer("trans")
local commands = {}
-- A command to create a horizontal rule.
-commands.rule = "\\blackrule[height=0.5pt,depth=0pt,width=.45\\textwidth]"
--- Pretty printer to use for the stuff before and after the line
-commands.before_pret = "lam"
-commands.after_pret = "lam"
+commands.rule = "\\HLine[width=.40 * \\the\\textwidth]"
+-- Typing environment to use for the stuff before and after the line. Will be
+-- prefixed with \start and \stop automatically.
+commands.beforeenv = "unboxedlambda"
+commands.afterenv = "unboxedlambda"
-- Frame commands to use for the left (before + line + after) and right
-- (conditions) parts. Should include an opening {, which will be closed
-- automatically.
-commands.leftframe = "\\framed[offset=0mm,location=middle,strut=no,align=right,frame=off,width=.5\\textwidth]{\\sans"
-commands.rightframe = "\\framed[offset=0mm,location=middle,strut=no,align=right,frame=off,width=.5\\textwidth]{"
+commands.leftframe = "\\framed[offset=0mm,location=middle,strut=no,align=right,frame=off,width=.48\\textwidth]{"
+commands.rightframe = "\\framed[offset=0mm,location=middle,strut=no,align=right,frame=off,width=.48\\textwidth]{"
-- A table to keep the lines in this buffer, so we can process them all at
-- once at the end.
-- Insert n blank lines
local function blanks(n)
- print("Inserting " .. n .. " blanks")
for i = 1,n do
buffers.visualizers.handlers.default.empty_line()
end
break
end
end
- print("Rule length: " .. len)
-
+
+ if not len then
+ error("No horizontal separator found in:\n" .. table.concat(lines, "\n"))
+ end
+
-- Split the input in three parts. Stuff before the line, stuff
-- after the line, stuff to the right of the line.
before, after, rights = {}, {}, {}
if utf.match(left, "^%-%-%-*") then
found_line = true
else
- print("Looking at " .. line .. "('" .. left .. "', '" .. right .. "')")
if utf.len(left) > 0 then
if not found_line then
table.insert(before, left)
-- Real output starts here
--
+ -- Let all the lambda pretty printing in this buffer use shared subscript
+ -- detection
+ tex.sprint("\\directlua{buffers.visualizers.handlers.lam.begin_of_block()}")
+
-- Ensure the left and right frames end up next to each other.
tex.sprint("\\dontleavehmode")
-- Open and fill the left frame
tex.sprint(commands.leftframe)
- prettyprint('lam', before)
+ tex.sprint("\\start" .. commands.beforeenv)
+
+ tex.sprint(table.concat(before, "\n"))
+
+ tex.sprint("\\stop" .. commands.beforeenv)
tex.sprint(commands.rule)
- prettyprint('lam', after)
+ tex.sprint("\\start" .. commands.afterenv)
+
+ tex.sprint(table.concat(after, "\n"))
+
+ tex.sprint("\\stop" .. commands.afterenv)
-- Close the left frame
tex.sprint("}")
-- Close the right frame
tex.sprint("}")
+
+ tex.sprint("\\directlua{buffers.visualizers.handlers.lam.end_of_block()}")
-- Clean up
lines = {}