Skip to content

Commit

Permalink
Merge 358be01 into 72363c5
Browse files Browse the repository at this point in the history
  • Loading branch information
jodros committed Oct 27, 2023
2 parents 72363c5 + 358be01 commit 77c066f
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 1 deletion.
26 changes: 25 additions & 1 deletion packages/frametricks/init.lua
Expand Up @@ -41,7 +41,7 @@ end

local makecolumns = function (options)
local cFrame = SILE.typesetter.frame
local cols = options.columns or 2
local cols = options.columns
local gutterWidth = options.gutter or "3%pw"
local right = cFrame:right()
local origId = cFrame.id
Expand Down Expand Up @@ -174,7 +174,31 @@ function package:registerCommands ()
end, "Breaks the current frame in two vertically at the current location or at a point <offset> below the current location")

self:registerCommand("makecolumns", function (options, _)
-- Set a default value for column count
options.columns = options.columns or 2
local current_frame = SILE.typesetter.frame
local original_constraints = {}
-- Collect existing constraints that may need updating after makecolumns() changes them
for frameid in pairs(SILE.frames) do
if frameid ~= current_frame.id then
local frame = SILE.getFrame(frameid)
for method in pairs(frame.constraints) do
-- TODO: Remove the assumption about direction when makecolumns() takes into account frame advance direction
if method == "right" then
if frame[method](frame) == current_frame[method](current_frame) then
table.insert(original_constraints, { frame = frame, method = method })
end
end
end
end
end
makecolumns(options)
for _, info in ipairs(original_constraints) do
local frame, method = info.frame, info.method
local final_column_id = ("%s_col%d"):format(current_frame.id, options.columns-1)
local final_comumn_frame = SILE.getFrame(final_column_id)
frame:constrain(method, final_comumn_frame[method](final_comumn_frame))
end
end, "Split the current frame into multiple columns")

self:registerCommand("breakframehorizontal", function (options, _)
Expand Down
8 changes: 8 additions & 0 deletions tests/makecolumns.expected
@@ -0,0 +1,8 @@
Set paper size 419.5275636 595.275597
Begin page
Mx 207.4176
My 553.7327
Set font Gentium Plus;10;400;;normal;;;LTR
T 20 w=4.6924 (1)
End page
Finish
5 changes: 5 additions & 0 deletions tests/makecolumns.sil
@@ -0,0 +1,5 @@
\begin[papersize=a5]{document}
\use[module=packages.frametricks]
\makecolumns[columns=4]
\showframe[id=all]
\end{document}

0 comments on commit 77c066f

Please sign in to comment.