From b6577420a4d2833250d543b08fad38e78f9f58e2 Mon Sep 17 00:00:00 2001 From: jodros <15092760+jodros@users.noreply.github.com> Date: Sun, 22 Oct 2023 04:14:21 -0300 Subject: [PATCH] fix: frames whose constrains are bond to the content frame now synchonize its right edge to the last column created by makecolumns method --- packages/frametricks/init.lua | 11 +++++++++++ tests/makecolumns.expected | 8 ++++++++ tests/makecolumns.sil | 5 +++++ 3 files changed, 24 insertions(+) create mode 100644 tests/makecolumns.expected create mode 100644 tests/makecolumns.sil diff --git a/packages/frametricks/init.lua b/packages/frametricks/init.lua index bb4ecb59f..c77104727 100644 --- a/packages/frametricks/init.lua +++ b/packages/frametricks/init.lua @@ -174,7 +174,18 @@ function package:registerCommands () end, "Breaks the current frame in two vertically at the current location or at a point below the current location") self:registerCommand("makecolumns", function (options, _) + local aligned = {} + options.columns = options.columns or 2 + for key in pairs(SILE.frames) do + -- this must be checked before makecolumns() call, since the function changes the right() value of content + if SILE.getFrame(key):right() == SILE.getFrame("content"):right() and key ~= "content" then + table.insert(aligned, key) + end + end makecolumns(options) + for _, frame in ipairs(aligned) do + SILE.getFrame(frame):constrain("right", SILE.getFrame("content_col"..options.columns-1):right()) + end end, "Split the current frame into multiple columns") self:registerCommand("breakframehorizontal", function (options, _) diff --git a/tests/makecolumns.expected b/tests/makecolumns.expected new file mode 100644 index 000000000..4e4cf097b --- /dev/null +++ b/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 diff --git a/tests/makecolumns.sil b/tests/makecolumns.sil new file mode 100644 index 000000000..b35adcf57 --- /dev/null +++ b/tests/makecolumns.sil @@ -0,0 +1,5 @@ +\begin[papersize=a5]{document} +\script[src=packages/frametricks] +\makecolumns[columns=4] +\showframe[id=all] +\end{document}