diff options
Diffstat (limited to 'tex/context/base/anch-pgr.lua')
-rw-r--r-- | tex/context/base/anch-pgr.lua | 50 |
1 files changed, 48 insertions, 2 deletions
diff --git a/tex/context/base/anch-pgr.lua b/tex/context/base/anch-pgr.lua index 3d020ca64..821cec6be 100644 --- a/tex/context/base/anch-pgr.lua +++ b/tex/context/base/anch-pgr.lua @@ -73,6 +73,7 @@ local function shapes(r,rx,ry,rw,rh,rd,lytop,lybot,rytop,rybot) local paragraphs = r.paragraphs local left = { { rx, rh } } local right = { { rw, rh } } + local extending = false if paragraphs then for i=1,#paragraphs do local p = paragraphs[i] @@ -100,12 +101,57 @@ local function shapes(r,rx,ry,rw,rh,rd,lytop,lybot,rytop,rybot) add(left,rx, py_ph + hang) end end +extending = false + else -- we need to clip to the next par + local ps = p.ps + if ps then + local py = p.y + local ph = p.h + local pd = p.d + local step = ph + pd + local size = #ps * step + local py_ph = py + ph + add(left,rx,py_ph) + add(right,rw,py_ph) + for i=1,#ps do + local p = ps[i] + local l = p[1] + local w = p[2] + add(left,rx + l, py_ph) + add(right,rx + l + w, py_ph) + py_ph = py_ph - step + add(left,rx + l, py_ph) + add(right,rx + l + w, py_ph) + end + extending = true +-- add(left,rx,py_ph) +-- add(right,rw,py_ph) + else + if extending then + local py = p.y + local ph = p.h + local pd = p.d + local py_ph = py + ph + local py_pd = py - pd + add(left,left[#left][1],py_ph) + add(right,right[#right][1],py_ph) + add(left,rx,py_ph) + add(right,rw,py_ph) +extending = false + end + end end end end -- we can have a simple variant when no paragraphs - add(left,rx,rd) - add(right,rw,rd) + if extending then + -- not ok + left[#left][2] = rd + right[#right][2] = rw + else + add(left,rx,rd) + add(right,rw,rd) + end return clip(left,lytop,lybot), clip(right,rytop,rybot) end |