|
Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
-- This file:
-- http://angg.twu.net/LATEX/2015logicandcats.lua
-- http://angg.twu.net/LATEX/2015logicandcats.lua.html
-- (find-LATEX "2015logicandcats.lua")
-- See: (find-LATEX "2015logicandcats.tex")
-- «.load-dednat6» (to "load-dednat6")
-- «.load-edrxlib» (to "load-edrxlib")
-- «.output» (to "output")
-- «.wrap» (to "wrap")
-- «.processzrect» (to "processzrect")
-- «load-dednat6» (to ".load-dednat6")
-- dednat6dir = "/home/edrx/dednat5/"
dednat6dir = "dednat6/"
dofile(dednat6dir.."dednat6.lua") -- (find-dn6 "dednat6.lua")
-- tf = TexFile.read(tex.jobname .. ".tex")
-- output = print
-- «load-edrxlib» (to ".load-edrxlib")
-- (find-es "luatex" "LUA_INIT")
-- (find-angg "LUA/lua50init.lua")
-- dofile(os.getenv("LUA_INIT"):sub(2))
-- dofile((os.getenv("LUA_INIT") or "@"..dednat6dir.."edrxlib.lua"):sub(2))
-- «output» (to ".output")
-- (find-es "luatex" "comments-in-tex.print")
deletecomments = function (str)
return (str:gsub("%%[^%%\n]*\n[ \t]*", ""))
end
mytexprint = function (str)
tex.print(deletecomments(str))
end
printboth = function (str)
print("("..tf.nline.."):")
print(str)
mytexprint(str)
end
-- «wrap» (to ".wrap")
-- (find-es "lua5" "mult-as-comp")
-- (find-dn5file "picture.lua" "\\hss")
debug.setmetatable (print, {
__mul = function (f, g) return
function (...) return f(g(...)) end
end,
})
wrap = function (pre, post)
return function (str)
return pre..str..post
end
end
-- «processzrect» (to ".processzrect")
processzrect = function (str)
local words = split(str)
local cellw = id -- cell wrap (not used yet)
local outw = id -- output wrap
local coord = "lr" -- coordinate system
local opts = {}
local name = words[1]
local zrect = zrects[name] or error("No zrect named "..name)
local pict = nil -- will be set later (maybe)
local bord = nil -- draw borders
local lcuts = nil -- draw cuts
local rcuts = nil -- draw cuts
-- print(zrect)
-- print(zrect.topicture)
local f = function (a, b, str) return str end
local fp = function (a, b, str) return format("$(%d,%d)$", a, b) end
local fpc = function (a, b, str) return format("$(%d,%d),$", a, b) end
for i=2,#words do
local w = words[i]
if w:match"pt$" then opts.scale = w
elseif w:match"^lcuts:" then lcuts = w:match"^lcuts:(.*)"
elseif w:match"^rcuts:" then rcuts = w:match"^rcuts:(.*)"
-- elseif w == "c" then cellw = wrap()*cellw
elseif w == "bul" then f = function () return "$\\bullet$" end
elseif w == "(x,y)" then coord = "xy"; f = fp
elseif w == "(X,y)" then coord = "Xy"; f = fp
elseif w == "(l,r)" then coord = "lr"; f = fp
elseif w == "(x,y)," then coord = "xy"; f = fpc
elseif w == "(X,y)," then coord = "Xy"; f = fpc
elseif w == "(l,r)," then coord = "lr"; f = fpc
elseif w == "foot" then opts.font ="\\footnotesize "
elseif w == "scri" then opts.font ="\\scriptsize "
elseif w == "()" then outw = wrap("\\left(", "\\right)" )*outw
elseif w == "{}" then outw = wrap("\\left\\{", "\\right\\}")*outw
elseif w == "bord" then bord = true
elseif w == "out" then
pict = zrect:topicture(coord, opts, f)
if bord then zrect:drawborders(pict) end
if lcuts or rcuts then
zrect:drawcuts(pict, lcuts or "", rcuts or "")
end
output(outw(pict:totex()))
else error("Unknown word: "..w)
end
end
return p
end
--[[
* (eepitch-lua51)
* (eepitch-kill)
* (eepitch-lua51)
dofile "2015logicandcats.lua"
lines = splitlines(untabify(zrectdefs_bigstr_for_tests))
zrectdefs_get(lines, 1, #lines)
print(zrects.a)
print(zrects.b)
output = print
processzrect "a 12pt out"
--]]
-- Local Variables:
-- coding: raw-text-unix
-- End: