|
Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
-- This file:
-- http://anggtwu.net/LUA/TocLines2.lua.html
-- http://anggtwu.net/LUA/TocLines2.lua
-- (find-angg "LUA/TocLines2.lua")
-- Author: Eduardo Ochs <eduardoochs@gmail.com>
--
-- (defun tl () (interactive) (find-angg "LUA/TocLines2.lua"))
-- (defun tlo () (interactive) (find-angg "LUA/TocLines1.lua"))
--
-- Used in:
-- (find-LATEX "2024-1-C2-intro.tex" "defs-toclines")
-- (find-LATEX "2024-1-C2-intro.tex" "writetoc")
-- (c2m241introp 2 "toc")
-- (c2m241introa "toc")
-- (find-LATEX "2024-1-C3-intro.tex" "defs-toclines2")
-- (find-Deps1-links "TocLines2")
-- (find-Deps1-cps "TocLines2")
-- (find-Deps1-anggs "TocLines2")
-- «.TocLines» (to "TocLines")
-- «.TocLines-tests» (to "TocLines-tests")
-- «.dednat6» (to "dednat6")
-- «.dednat6-tests» (to "dednat6-tests")
require "Show2" -- (find-angg "LUA/Show2.lua")
-- _____ _ _
-- |_ _|__ ___| | (_)_ __ ___ ___
-- | |/ _ \ / __| | | | '_ \ / _ \/ __|
-- | | (_) | (__| |___| | | | | __/\__ \
-- |_|\___/ \___|_____|_|_| |_|\___||___/
--
-- «TocLines» (to ".TocLines")
TocLines = Class {
type = "TocLines",
new = function (fname) return TocLines {fname=fname} end,
fmts = VTable {},
__tostring = function (tls) return tls:totex() end,
__index = {
add = function (tls, o) table.insert(tls, o); PP(o) end,
getfmt = function (tls, style) return TocLines.fmts[style] end,
format = function (tls, o) return tls:format0(o, tls:getfmt(o.style)) end,
format0 = function (tls, o, fmt)
local f = function (s) return o[s] end
return (fmt:gsub("<(.-)>", f))
end,
totex = function (tls)
local f = function (i)
if type(tls[i]) == "string" then return tls[i] end
return tls:format(tls[i])
end
return mapconcat(f, seq(1, #tls), "")
end,
--
tocbody = function (tls) return "\n"..tls:totex().."\n" end,
tocfname = function (tls) return tls:fnamestem()..".mytoc" end,
fnamestem = function (tls)
return (tls.fname:gsub("%.tex$", ""):gsub("%.mytoc$", ""))
end,
writetoc = function (tls)
ee_writefile(tls:tocfname(), tls:tocbody())
print("Writing: "..tls:tocfname())
return tls
end,
},
}
-- «TocLines-tests» (to ".TocLines-tests")
--[==[
* (eepitch-lua51)
* (eepitch-kill)
* (eepitch-lua51)
dofile "TocLines2.lua"
tls = TocLines.new("/tmp/toclines2-test.tex")
TocLines.fmts["slide"] = "_<page>_<body>_\n"
tls:add {style="slide", page=2, body="Links"}
tls:add {style="slide", page=3, body="Intro"}
tls:add "BLA\n"
tls:add {style="slide", page=4, body="More stuff"}
= tls:getfmt("slide")
= tls:format(tls[1])
= tls:format(tls[2])
= tls:format(tls[4])
= tls:totex()
= tls:tocbody()
= tls:fnamestem()
= tls:tocfname()
= tls:writetoc()
TocLines.fmts["slide"] = "\\mytocline{<page>}{<body>}\n"
= tls:totex()
--]==]
-- «dednat6» (to ".dednat6")
dednat6_toclines2 = [==[
%L dofile "TocLines2.lua"
%L toclines = TocLines.new(status.filename)
%L TocLines.fmts["slide"] = "\\toclineslidetex{<body>}{<page>}\n"
\pu
\def\toclineslidetex#1#2{\par #1 \dotfill #2}
\def\toclineslidelua#1#2{\directlua{
toclines:add {style="slide", body=[=[#1]=], page=#2}
}}
\def\SLIDE#1{
\par{\bf #1}\par
\toclineslidelua{#1}{\thepage}
}
]==]
-- «dednat6-tests» (to ".dednat6-tests")
--[==[
* (find-Deps1-cps "TocLines2")
* (find-sh0 "rm -fv ~/LATEX/Show2.mytoc")
* (show2-use "~/LATEX/Show2.tex")
* (eepitch-lua51)
* (eepitch-kill)
* (eepitch-lua51)
dofile "TocLines2.lua"
usepackages.hyperref = true
dednat6["0"] = true
dednat6.toclines2 = true
body = [=[
% From: (find-fline "~/LATEX/Show2.mytoc")
\toclineslidetex{One}{2}
\toclineslidetex{Two}{3}
%
\newpage \SLIDE{One}
\newpage \SLIDE{Two}
%
\directlua{ toclines:writetoc() }
% See: (find-fline "~/LATEX/Show2.mytoc")
]=]
= body:show0()
= body:show()
* (etv)
--]==]
-- Local Variables:
-- coding: utf-8-unix
-- End: