Skip to content

Commit 9d39c58

Browse files
committed
New extratextsplit and extratextlinegaps for renlinear and renmatrix
1 parent f78cdff commit 9d39c58

2 files changed

Lines changed: 50 additions & 8 deletions

File tree

src/renlinear.ps.src

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,8 @@ begin
6060
/alttextsubspace () def
6161
/extratext () def
6262
/extratextsubspace () def
63+
/extratextsplit () def
64+
/extratextlinegaps 1.2 def
6365
/extratextcolor (unset) def
6466
/extratextxalign (left) def
6567
/extratextyalign (above) def
@@ -364,7 +366,20 @@ begin
364366
add
365367
} if
366368
/textascent exch def
367-
/textwidth extratext stringwidth pop extratext length 1 sub extratextgaps mul add def
369+
370+
extratextsplit () ne {
371+
extratextsplit length 1 ne {
372+
/bwipp.extratextsplitBad (The extratextsplit option must be a single character) //raiseerror exec
373+
} if
374+
/textlines [
375+
extratext { extratextsplit search { exch pop exch } { exit } ifelse } loop
376+
] def
377+
} {
378+
/textlines [ extratext ] def
379+
} ifelse
380+
381+
/textwidth 0 textlines { stringwidth pop 2 copy lt {exch} if pop } forall extratext length 1 sub extratextgaps mul add def
382+
/textheight textlines length dup textascent mul exch 1 sub extratextlinegaps mul add def
368383

369384
/extratextxpos extratextxoffset pixx textwidth sub 2 div add def
370385
extratextxalign (left) eq { /textxpos extratextxoffset def } if
@@ -375,10 +390,16 @@ begin
375390
/textxpos 0.0 def
376391
/extratextgaps pixx textwidth sub extratext length 1 sub div def
377392
} if
378-
/textypos extratextyoffset textascent add 1 add neg def
393+
/textypos extratextyoffset textheight add 1 add neg def
379394
extratextyalign (above) eq { /textypos extratextyoffset pixy add 1 add def } if
380-
extratextyalign (center) eq { /textypos extratextyoffset pixy textascent sub 2 div add def } if
381-
textxpos textypos moveto extratextgaps 0 extratext ashow
395+
extratextyalign (center) eq { /textypos extratextyoffset pixy textheight sub 2 div add def } if
396+
397+
0 1 textlines length 1 sub {
398+
/i exch def
399+
textxpos textypos textascent extratextlinegaps add i mul add moveto
400+
extratextgaps 0 textlines dup length i sub 1 sub get ashow
401+
} for
402+
382403
} if
383404

384405
grestore

src/renmatrix.ps.src

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,8 @@ begin
6767
/alttextsubspace () def
6868
/extratext () def
6969
/extratextsubspace () def
70+
/extratextsplit () def
71+
/extratextlinegaps 1.2 def
7072
/extratextcolor (unset) def
7173
/extratextxalign (left) def
7274
/extratextyalign (above) def
@@ -450,7 +452,20 @@ begin
450452
add
451453
} if
452454
/textascent exch def
453-
/textwidth extratext stringwidth pop extratext length 1 sub extratextgaps mul add def
455+
456+
extratextsplit () ne {
457+
extratextsplit length 1 ne {
458+
/bwipp.extratextsplitBad (The extratextsplit option must be a single character) //raiseerror exec
459+
} if
460+
/textlines [
461+
extratext { extratextsplit search { exch pop exch } { exit } ifelse } loop
462+
] def
463+
} {
464+
/textlines [ extratext ] def
465+
} ifelse
466+
467+
/textwidth 0 textlines { stringwidth pop 2 copy lt {exch} if pop } forall extratext length 1 sub extratextgaps mul add def
468+
/textheight textlines length dup textascent mul exch 1 sub extratextlinegaps mul add def
454469

455470
/extratextxpos extratextxoffset pixx textwidth sub 2 div add def
456471
extratextxalign (left) eq { /textxpos extratextxoffset def } if
@@ -461,10 +476,16 @@ begin
461476
/textxpos 0.0 def
462477
/extratextgaps pixx textwidth sub extratext length 1 sub div def
463478
} if
464-
/textypos extratextyoffset textascent add 1 add neg def
479+
/textypos extratextyoffset textheight add 1 add neg def
465480
extratextyalign (above) eq { /textypos extratextyoffset pixy add 1 add def } if
466-
extratextyalign (center) eq { /textypos extratextyoffset pixy textascent sub 2 div add def } if
467-
textxpos textypos moveto extratextgaps 0 extratext ashow
481+
extratextyalign (center) eq { /textypos extratextyoffset pixy textheight sub 2 div add def } if
482+
483+
0 1 textlines length 1 sub {
484+
/i exch def
485+
textxpos textypos textascent extratextlinegaps add i mul add moveto
486+
extratextgaps 0 textlines dup length i sub 1 sub get ashow
487+
} for
488+
468489
} if
469490

470491
grestore

0 commit comments

Comments
 (0)