diff options
author | Karl Berry <karl@freefriends.org> | 2024-05-30 19:57:39 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2024-05-30 19:57:39 +0000 |
commit | 504ee16abc171d2851d62e7ce9b9774febf766f6 (patch) | |
tree | 2fe1647abb1d4ee08d08c4d20088cff70892888d | |
parent | 7823d0887ef6fcc70fce9a18a53637f6daf80806 (diff) |
luamplib (30may24)
git-svn-id: svn://tug.org/texlive/trunk@71391 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r-- | Master/texmf-dist/doc/luatex/luamplib/NEWS | 9 | ||||
-rw-r--r-- | Master/texmf-dist/doc/luatex/luamplib/luamplib.pdf | bin | 198665 -> 198713 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/luatex/luamplib/test-luamplib-latex.tex | 14 | ||||
-rw-r--r-- | Master/texmf-dist/doc/luatex/luamplib/test-luamplib-plain.tex | 16 | ||||
-rw-r--r-- | Master/texmf-dist/source/luatex/luamplib/luamplib.dtx | 144 | ||||
-rw-r--r-- | Master/texmf-dist/tex/luatex/luamplib/luamplib.lua | 107 | ||||
-rw-r--r-- | Master/texmf-dist/tex/luatex/luamplib/luamplib.sty | 2 |
7 files changed, 178 insertions, 114 deletions
diff --git a/Master/texmf-dist/doc/luatex/luamplib/NEWS b/Master/texmf-dist/doc/luatex/luamplib/NEWS index 9cd7c571717..8339e9ce655 100644 --- a/Master/texmf-dist/doc/luatex/luamplib/NEWS +++ b/Master/texmf-dist/doc/luatex/luamplib/NEWS @@ -1,5 +1,14 @@ History of the luamplib package +2024/05/30 2.31.2 + * support vertical writing mode in mpliboutlinetext (presently luatexko + package only, and except horizontal mode inside vertical mode) + + * after the process of mpliboutlinetext, mpliboutlinepic[1] ... + mpliboutlinepic[mpliboutlinenum] will be preserved as an array of images + each of which containing a glyph or a rule. N.B. Unicode grapheme cluster + is not considered here. + 2024/05/24 2.31.1 * fix bugs in outlinetext routine * improve rule treatment in graphictext diff --git a/Master/texmf-dist/doc/luatex/luamplib/luamplib.pdf b/Master/texmf-dist/doc/luatex/luamplib/luamplib.pdf Binary files differindex 9db810d3601..c3e099a5d9f 100644 --- a/Master/texmf-dist/doc/luatex/luamplib/luamplib.pdf +++ b/Master/texmf-dist/doc/luatex/luamplib/luamplib.pdf diff --git a/Master/texmf-dist/doc/luatex/luamplib/test-luamplib-latex.tex b/Master/texmf-dist/doc/luatex/luamplib/test-luamplib-latex.tex index fd5cb6fe007..2d1994d5354 100644 --- a/Master/texmf-dist/doc/luatex/luamplib/test-luamplib-latex.tex +++ b/Master/texmf-dist/doc/luatex/luamplib/test-luamplib-latex.tex @@ -227,11 +227,23 @@ endfor \mpfig circleit.a(btex\tracingcommands0 Box 1 etex); drawboxed(a); \endmpfig \def\mpfiginstancename{mympfig}% \mpfig -draw mpliboutlinetext.b ("$\sqrt{2+\alpha}$") +draw mpliboutlinetext.b ("$\displaystyle\frac{1}{1-x^2}$") (withcolor .6[red,white]) (withpen pencircle scaled .2 withcolor red) scaled 4 ; \endmpfig +\par +\mpfig + draw mpliboutlinetext.r + ("Question") + ( withpen pencircle scaled .3 ) + ( + withshademethod "linear" + withshadedirection (2.5, 0.5) + withshadecolors(red, blue) + ) + scaled 4; +\endmpfig \tracingcommands0 \vskip 2\baselineskip diff --git a/Master/texmf-dist/doc/luatex/luamplib/test-luamplib-plain.tex b/Master/texmf-dist/doc/luatex/luamplib/test-luamplib-plain.tex index 61ea9e8ae75..bc955d2f8ff 100644 --- a/Master/texmf-dist/doc/luatex/luamplib/test-luamplib-plain.tex +++ b/Master/texmf-dist/doc/luatex/luamplib/test-luamplib-plain.tex @@ -220,10 +220,22 @@ endfor \mpfig circleit.a(btex\tracingcommands0 Box 1 etex); drawboxed(a); \endmpfig \def\mpfiginstancename{mympfig}% \mpfig -draw mpliboutlinetext.b ("$\sqrt{2+\alpha}$") +draw mpliboutlinetext.b ("$\overbrace{x+\cdots+x}^k$") (withcolor .6[red,white]) (withpen pencircle scaled .2 withcolor red) - scaled 4 ; + scaled 3 ; +\endmpfig +\par +\mpfig + draw mpliboutlinetext.r + ("Question") + ( withpen pencircle scaled .3 ) + ( + withshademethod "linear" + withshadedirection (2.5, 0.5) + withshadecolors(red, blue) + ) + scaled 4; \endmpfig \tracingcommands0 diff --git a/Master/texmf-dist/source/luatex/luamplib/luamplib.dtx b/Master/texmf-dist/source/luatex/luamplib/luamplib.dtx index eb5ec196ddd..dc4a9c6570f 100644 --- a/Master/texmf-dist/source/luatex/luamplib/luamplib.dtx +++ b/Master/texmf-dist/source/luatex/luamplib/luamplib.dtx @@ -85,7 +85,7 @@ See source file '\inFileName' for licencing and contact information. %<*driver> \NeedsTeXFormat{LaTeX2e} \ProvidesFile{luamplib.drv}% - [2024/05/24 v2.31.1 Interface for using the mplib library]% + [2024/05/30 v2.31.2 Interface for using the mplib library]% \documentclass{ltxdoc} \usepackage{metalogo,multicol,mdwlist,fancyvrb,xspace} \usepackage[x11names]{xcolor} @@ -153,7 +153,7 @@ See source file '\inFileName' for licencing and contact information. % \author{Hans Hagen, Taco Hoekwater, Elie Roux, Philipp Gesang and Kim Dohyun\\ % Maintainer: LuaLaTeX Maintainers --- % Support: \email{lualatex-dev@tug.org}} -% \date{2024/05/24 v2.31.1} +% \date{2024/05/30 v2.31.2} % % \maketitle % @@ -524,31 +524,6 @@ See source file '\inFileName' for licencing and contact information. % Number Rule. As a result, for instance, the area surrounded by inner path of ``O'' % will remain transparent. % -% We can adapt the method used in |mplibdrawglyph| to multiple pictures as if they were -% components of one and the same picture. An example: -% \begin{verbatim} -% \mplibsetformat{metafun} -% \mpfig -% picture Q, u, e; -% Q := mplibglyph "Q" of "Times.ttc(2)" scaled .15; -% u := mplibglyph "u" of "Times.ttc(2)" scaled .15 shifted lrcorner Q; -% e := mplibglyph "e" of "Times.ttc(2)" scaled .15 shifted lrcorner u; -% -% i:=0; -% totallen := length Q + length u + length e; -% for pic=Q, u, e: -% for item within pic: -% i:=i+1; -% fill pathpart item -% if i < totallen: withpostscript "collect"; fi -% endfor -% endfor -% withshademethod "linear" -% withshadedirection (0.5,2.5) -% withshadecolors (.7red,.7yellow); -% \endmpfig -% \end{verbatim} -% % \paragraph{\texttt{mpliboutlinetext}} % From v2.31, we provide a new metapost operator |mpliboutlinetext|, which mimicks % metafun's |outlinetext|. So the syntax is the same as metafun's. See the metafun @@ -559,6 +534,12 @@ See source file '\inFileName' for licencing and contact information. % (withpen pencircle scaled .2 withcolor red) % scaled 2 ; % \end{verbatim} +% After the process of |mpliboutlinetext|, |mpliboutlinepic[]| +% and |mpliboutlinenum| will be preserved as global variables; +% |mpliboutlinepic[1]| \ldots{} |mpliboutlinepic[mpliboutlinenum]| +% will be an array of images each of which containing a glyph or a rule. +% \textsc{n.b.} As Unicode grapheme cluster is not considered in the array, a unit that must be +% a single cluster might be separated apart. % % \paragraph{About figure box metrics} % Notice that, after each figure is processed, macro \cs{MPwidth} stores @@ -592,8 +573,8 @@ See source file '\inFileName' for licencing and contact information. luatexbase.provides_module { name = "luamplib", - version = "2.31.1", - date = "2024/05/24", + version = "2.31.2", + date = "2024/05/30", description = "Lua package to typeset Metapost with LuaTeX's MPLib.", } @@ -1596,14 +1577,13 @@ local function embolden (box, curr, fakebold) local f = curr.font local i = emboldenfonts[f] if not i then + local ft = font.getfont(f) or font.getcopy(f) if pdfmode then - local ft = font.getcopy(f) width = ft.size * fakebold / factor * 10 emboldenfonts.width = width ft.mode, ft.width = 2, width i = font.define(ft) else - local ft = font.getfont(f) or font.getcopy(f) if ft.format ~= "opentype" and ft.format ~= "truetype" then goto skip_type1 end @@ -1818,7 +1798,7 @@ end % % mpliboutlinetext : based on mkiv's font-mps.lua % \begin{macrocode} -local rulefmt = "mplibpic[%i]:=image(addto currentpicture contour \z +local rulefmt = "mpliboutlinepic[%i]:=image(addto currentpicture contour \z unitsquare shifted - center unitsquare;) xscaled %f yscaled %f shifted (%f,%f);" local outline_horz, outline_vert function outline_vert (res, box, curr, xshift, yshift) @@ -1937,6 +1917,18 @@ function outline_horz (res, box, curr, xshift, yshift, discwd) dx = dx - (r2l and curr.width/factor*expand or 0) local xpos = dx + xshift + (curr.xoffset or 0)/factor local ypos = yshift + (curr.yoffset or 0)/factor + local vertical = ft.shared and ft.shared.features.vertical and "rotated 90" or "" + if vertical ~= "" then -- luatexko + for _,v in ipairs(ft.characters[curr.char].commands or { }) do + if v[1] == "down" then + ypos = ypos - v[2] / factor + elseif v[1] == "right" then + xpos = xpos + v[2] / factor + else + break + end + end + end local image if ft.format == "opentype" or ft.format == "truetype" then image = luamplib.glyph(curr.font, gid) @@ -1956,8 +1948,8 @@ function outline_horz (res, box, curr, xshift, yshift, discwd) end image = format("glyph %s of %q scaled %f", gid, name, scale) end - res[#res+1] = format("mplibpic[%i]:=%s xscaled %f yscaled %f slanted %f shifted (%f,%f);", - #res+1, image, xscale, yscale, slant, xpos, ypos) + res[#res+1] = format("mpliboutlinepic[%i]:=%s xscaled %f yscaled %f slanted %f %s shifted (%f,%f);", + #res+1, image, xscale, yscale, slant, vertical, xpos, ypos) dx = dx + (r2l and 0 or curr.width/factor*expand) elseif curr.replace then local width = node.dimensions(curr.replace)/factor @@ -2042,12 +2034,8 @@ function luamplib.outlinetext (text) local id = tonumber(fmt:match"mplibtexboxid=(%d+):") local box = texgetbox(id) local res = outline_horz({ }, box, box.head, 0, 0) - if #res == 0 then res = { "mplibpic[1]:=image(fill fullcircle scaled 0;);" } end - local t = { } - for i=1, #res do - t[#t+1] = format("addto currentpicture also mplibpic[%i];", i) - end - return tableconcat(res) .. format("mplibpic[0]:=image(%s);", tableconcat(t)) + if #res == 0 then res = { "mpliboutlinepic[1]:=image(fill fullcircle scaled 0;);" } end + return tableconcat(res) .. format("mpliboutlinenum:=%i;", #res) end % \end{macrocode} @@ -2155,6 +2143,9 @@ def mplib_do_outline_text_set_f (text f) text r = def mplib_do_outline_options_f = f enddef; def mplib_do_outline_options_r = r enddef; enddef; +def mplib_do_outline_text_set_u (text f) text r = + def mplib_do_outline_options_f = f enddef; +enddef; def mplib_do_outline_text_set_d (text d) text r = def mplib_do_outline_options_d = d enddef; def mplib_do_outline_options_r = r enddef; @@ -2168,27 +2159,40 @@ def mplib_do_outline_text_set_n text r = def mplib_do_outline_options_r = r enddef; enddef; def mplib_do_outline_text_set_p = enddef; -def mplib_fill_outline_text (expr p) = - i:=0; - for item within p: - i:=i+1; - addto currentpicture contour pathpart item - if i < length p: withpostscript "collect"; fi +def mplib_fill_outline_text = + for n=1 upto mpliboutlinenum: + i:=0; + for item within mpliboutlinepic[n]: + i:=i+1; + fill pathpart item mplib_do_outline_options_f withpen pencircle scaled 0 + if (n<mpliboutlinenum) or (i<length mpliboutlinepic[n]): withpostscript "collect"; fi + endfor + endfor +enddef; +def mplib_draw_outline_text = + for n=1 upto mpliboutlinenum: + for item within mpliboutlinepic[n]: + draw pathpart item mplib_do_outline_options_d; + endfor endfor - mplib_do_outline_options_f; enddef; -def mplib_draw_outline_text (expr p) = - i:=0; - for item within p: - i:=i+1; - addto currentpicture doublepath pathpart item - if i < length p: withpostscript "collect"; fi +def mplib_filldraw_outline_text = + for n=1 upto mpliboutlinenum: + i:=0; + for item within mpliboutlinepic[n]: + i:=i+1; + if (n<mpliboutlinenum) or (i<length mpliboutlinepic[n]): + fill pathpart item mplib_do_outline_options_f withpostscript "collect"; + else: + draw pathpart item mplib_do_outline_options_f withpostscript "both"; + fi + endfor endfor - mplib_do_outline_options_d; enddef; vardef mpliboutlinetext@# (expr t) text rest = save kind; string kind; kind := str @#; - save mplibpic, i; picture mplibpic[]; numeric i; + save i; numeric i; + picture mpliboutlinepic[]; numeric mpliboutlinenum; def mplib_do_outline_options_d = enddef; def mplib_do_outline_options_f = enddef; def mplib_do_outline_options_r = enddef; @@ -2196,28 +2200,27 @@ vardef mpliboutlinetext@# (expr t) text rest = image ( addto currentpicture also image ( if kind = "f": mplib_do_outline_text_set_f rest; - def mplib_do_outline_options_d = withpen pencircle scaled 0 enddef; - mplib_fill_outline_text (mplibpic0); + mplib_fill_outline_text; elseif kind = "d": mplib_do_outline_text_set_d rest; - mplib_draw_outline_text (mplibpic0); + mplib_draw_outline_text; elseif kind = "b": mplib_do_outline_text_set_b rest; - mplib_fill_outline_text (mplibpic0); - mplib_draw_outline_text (mplibpic0); + mplib_fill_outline_text; + mplib_draw_outline_text; elseif kind = "u": - mplib_do_outline_text_set_f rest; - mplib_fill_outline_text (mplibpic0); + mplib_do_outline_text_set_u rest; + mplib_filldraw_outline_text; elseif kind = "r": mplib_do_outline_text_set_r rest; - mplib_draw_outline_text (mplibpic0); - mplib_fill_outline_text (mplibpic0); + mplib_draw_outline_text; + mplib_fill_outline_text; elseif kind = "p": mplib_do_outline_text_set_p; - mplib_draw_outline_text (mplibpic0); + mplib_draw_outline_text; else: mplib_do_outline_text_set_n rest; - mplib_fill_outline_text (mplibpic0); + mplib_fill_outline_text; fi; ) mplib_do_outline_options_r; ) enddef ; @@ -2539,6 +2542,7 @@ end % \begin{macrocode} local prev_override_color local function do_preobj_CR(object,prescript) + if object.postscript == "collect" then return end local override = prescript and prescript.mpliboverridecolor if override then if pdfmode then @@ -2672,7 +2676,8 @@ local function update_tr_res(mode,opaq) return on end -local function do_preobj_TR(prescript) +local function do_preobj_TR(object,prescript) + if object.postscript == "collect" then return end local opaq = prescript and prescript.tr_transparency local tron_no if opaq then @@ -2767,6 +2772,7 @@ pdfetcs.clrspcs = setmetatable({ }, { __index = function(t,names) end }) local function do_preobj_SH(object,prescript) + if object.postscript == "collect" then return end local shade_no local sh_type = prescript and prescript.sh_type if sh_type then @@ -2930,7 +2936,7 @@ function luamplib.flush (result,flusher) local prescript = object.prescript prescript = prescript and script2table(prescript) -- prescript is now a table local cr_over = do_preobj_CR(object,prescript) -- color - local tr_opaq = do_preobj_TR(prescript) -- opacity + local tr_opaq = do_preobj_TR(object,prescript) -- opacity if prescript and prescript.mplibtexboxid then put_tex_boxes(object,prescript) elseif objecttype == "start_bounds" or objecttype == "stop_bounds" then --skip @@ -3170,7 +3176,7 @@ end \else \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{luamplib} - [2024/05/24 v2.31.1 mplib package for LuaTeX] + [2024/05/30 v2.31.2 mplib package for LuaTeX] \ifx\newluafunction\@undefined \input ltluatex \fi diff --git a/Master/texmf-dist/tex/luatex/luamplib/luamplib.lua b/Master/texmf-dist/tex/luatex/luamplib/luamplib.lua index e4fb642f562..afc9fe8ce26 100644 --- a/Master/texmf-dist/tex/luatex/luamplib/luamplib.lua +++ b/Master/texmf-dist/tex/luatex/luamplib/luamplib.lua @@ -11,8 +11,8 @@ luatexbase.provides_module { name = "luamplib", - version = "2.31.1", - date = "2024/05/24", + version = "2.31.2", + date = "2024/05/30", description = "Lua package to typeset Metapost with LuaTeX's MPLib.", } @@ -775,14 +775,13 @@ local function embolden (box, curr, fakebold) local f = curr.font local i = emboldenfonts[f] if not i then + local ft = font.getfont(f) or font.getcopy(f) if pdfmode then - local ft = font.getcopy(f) width = ft.size * fakebold / factor * 10 emboldenfonts.width = width ft.mode, ft.width = 2, width i = font.define(ft) else - local ft = font.getfont(f) or font.getcopy(f) if ft.format ~= "opentype" and ft.format ~= "truetype" then goto skip_type1 end @@ -989,7 +988,7 @@ function luamplib.glyph (f, c) return glyphimage(t, kind) end -local rulefmt = "mplibpic[%i]:=image(addto currentpicture contour \z +local rulefmt = "mpliboutlinepic[%i]:=image(addto currentpicture contour \z unitsquare shifted - center unitsquare;) xscaled %f yscaled %f shifted (%f,%f);" local outline_horz, outline_vert function outline_vert (res, box, curr, xshift, yshift) @@ -1108,6 +1107,18 @@ function outline_horz (res, box, curr, xshift, yshift, discwd) dx = dx - (r2l and curr.width/factor*expand or 0) local xpos = dx + xshift + (curr.xoffset or 0)/factor local ypos = yshift + (curr.yoffset or 0)/factor + local vertical = ft.shared and ft.shared.features.vertical and "rotated 90" or "" + if vertical ~= "" then -- luatexko + for _,v in ipairs(ft.characters[curr.char].commands or { }) do + if v[1] == "down" then + ypos = ypos - v[2] / factor + elseif v[1] == "right" then + xpos = xpos + v[2] / factor + else + break + end + end + end local image if ft.format == "opentype" or ft.format == "truetype" then image = luamplib.glyph(curr.font, gid) @@ -1127,8 +1138,8 @@ function outline_horz (res, box, curr, xshift, yshift, discwd) end image = format("glyph %s of %q scaled %f", gid, name, scale) end - res[#res+1] = format("mplibpic[%i]:=%s xscaled %f yscaled %f slanted %f shifted (%f,%f);", - #res+1, image, xscale, yscale, slant, xpos, ypos) + res[#res+1] = format("mpliboutlinepic[%i]:=%s xscaled %f yscaled %f slanted %f %s shifted (%f,%f);", + #res+1, image, xscale, yscale, slant, vertical, xpos, ypos) dx = dx + (r2l and 0 or curr.width/factor*expand) elseif curr.replace then local width = node.dimensions(curr.replace)/factor @@ -1213,12 +1224,8 @@ function luamplib.outlinetext (text) local id = tonumber(fmt:match"mplibtexboxid=(%d+):") local box = texgetbox(id) local res = outline_horz({ }, box, box.head, 0, 0) - if #res == 0 then res = { "mplibpic[1]:=image(fill fullcircle scaled 0;);" } end - local t = { } - for i=1, #res do - t[#t+1] = format("addto currentpicture also mplibpic[%i];", i) - end - return tableconcat(res) .. format("mplibpic[0]:=image(%s);", tableconcat(t)) + if #res == 0 then res = { "mpliboutlinepic[1]:=image(fill fullcircle scaled 0;);" } end + return tableconcat(res) .. format("mpliboutlinenum:=%i;", #res) end luamplib.preambles = { @@ -1322,6 +1329,9 @@ def mplib_do_outline_text_set_f (text f) text r = def mplib_do_outline_options_f = f enddef; def mplib_do_outline_options_r = r enddef; enddef; +def mplib_do_outline_text_set_u (text f) text r = + def mplib_do_outline_options_f = f enddef; +enddef; def mplib_do_outline_text_set_d (text d) text r = def mplib_do_outline_options_d = d enddef; def mplib_do_outline_options_r = r enddef; @@ -1335,27 +1345,40 @@ def mplib_do_outline_text_set_n text r = def mplib_do_outline_options_r = r enddef; enddef; def mplib_do_outline_text_set_p = enddef; -def mplib_fill_outline_text (expr p) = - i:=0; - for item within p: - i:=i+1; - addto currentpicture contour pathpart item - if i < length p: withpostscript "collect"; fi +def mplib_fill_outline_text = + for n=1 upto mpliboutlinenum: + i:=0; + for item within mpliboutlinepic[n]: + i:=i+1; + fill pathpart item mplib_do_outline_options_f withpen pencircle scaled 0 + if (n<mpliboutlinenum) or (i<length mpliboutlinepic[n]): withpostscript "collect"; fi + endfor + endfor +enddef; +def mplib_draw_outline_text = + for n=1 upto mpliboutlinenum: + for item within mpliboutlinepic[n]: + draw pathpart item mplib_do_outline_options_d; + endfor endfor - mplib_do_outline_options_f; enddef; -def mplib_draw_outline_text (expr p) = - i:=0; - for item within p: - i:=i+1; - addto currentpicture doublepath pathpart item - if i < length p: withpostscript "collect"; fi +def mplib_filldraw_outline_text = + for n=1 upto mpliboutlinenum: + i:=0; + for item within mpliboutlinepic[n]: + i:=i+1; + if (n<mpliboutlinenum) or (i<length mpliboutlinepic[n]): + fill pathpart item mplib_do_outline_options_f withpostscript "collect"; + else: + draw pathpart item mplib_do_outline_options_f withpostscript "both"; + fi + endfor endfor - mplib_do_outline_options_d; enddef; vardef mpliboutlinetext@# (expr t) text rest = save kind; string kind; kind := str @#; - save mplibpic, i; picture mplibpic[]; numeric i; + save i; numeric i; + picture mpliboutlinepic[]; numeric mpliboutlinenum; def mplib_do_outline_options_d = enddef; def mplib_do_outline_options_f = enddef; def mplib_do_outline_options_r = enddef; @@ -1363,28 +1386,27 @@ vardef mpliboutlinetext@# (expr t) text rest = image ( addto currentpicture also image ( if kind = "f": mplib_do_outline_text_set_f rest; - def mplib_do_outline_options_d = withpen pencircle scaled 0 enddef; - mplib_fill_outline_text (mplibpic0); + mplib_fill_outline_text; elseif kind = "d": mplib_do_outline_text_set_d rest; - mplib_draw_outline_text (mplibpic0); + mplib_draw_outline_text; elseif kind = "b": mplib_do_outline_text_set_b rest; - mplib_fill_outline_text (mplibpic0); - mplib_draw_outline_text (mplibpic0); + mplib_fill_outline_text; + mplib_draw_outline_text; elseif kind = "u": - mplib_do_outline_text_set_f rest; - mplib_fill_outline_text (mplibpic0); + mplib_do_outline_text_set_u rest; + mplib_filldraw_outline_text; elseif kind = "r": mplib_do_outline_text_set_r rest; - mplib_draw_outline_text (mplibpic0); - mplib_fill_outline_text (mplibpic0); + mplib_draw_outline_text; + mplib_fill_outline_text; elseif kind = "p": mplib_do_outline_text_set_p; - mplib_draw_outline_text (mplibpic0); + mplib_draw_outline_text; else: mplib_do_outline_text_set_n rest; - mplib_fill_outline_text (mplibpic0); + mplib_fill_outline_text; fi; ) mplib_do_outline_options_r; ) enddef ; @@ -1660,6 +1682,7 @@ end local prev_override_color local function do_preobj_CR(object,prescript) + if object.postscript == "collect" then return end local override = prescript and prescript.mpliboverridecolor if override then if pdfmode then @@ -1785,7 +1808,8 @@ local function update_tr_res(mode,opaq) return on end -local function do_preobj_TR(prescript) +local function do_preobj_TR(object,prescript) + if object.postscript == "collect" then return end local opaq = prescript and prescript.tr_transparency local tron_no if opaq then @@ -1876,6 +1900,7 @@ pdfetcs.clrspcs = setmetatable({ }, { __index = function(t,names) end }) local function do_preobj_SH(object,prescript) + if object.postscript == "collect" then return end local shade_no local sh_type = prescript and prescript.sh_type if sh_type then @@ -2018,7 +2043,7 @@ function luamplib.flush (result,flusher) local prescript = object.prescript prescript = prescript and script2table(prescript) -- prescript is now a table local cr_over = do_preobj_CR(object,prescript) -- color - local tr_opaq = do_preobj_TR(prescript) -- opacity + local tr_opaq = do_preobj_TR(object,prescript) -- opacity if prescript and prescript.mplibtexboxid then put_tex_boxes(object,prescript) elseif objecttype == "start_bounds" or objecttype == "stop_bounds" then --skip diff --git a/Master/texmf-dist/tex/luatex/luamplib/luamplib.sty b/Master/texmf-dist/tex/luatex/luamplib/luamplib.sty index 6fa986d62bb..85a725f526d 100644 --- a/Master/texmf-dist/tex/luatex/luamplib/luamplib.sty +++ b/Master/texmf-dist/tex/luatex/luamplib/luamplib.sty @@ -14,7 +14,7 @@ \else \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{luamplib} - [2024/05/24 v2.31.1 mplib package for LuaTeX] + [2024/05/30 v2.31.2 mplib package for LuaTeX] \ifx\newluafunction\@undefined \input ltluatex \fi |