[dvipdfmx] pdf:bxgstate fails if other packages add opacity too

Ulrike Fischer news3 at nililand.de
Fri Sep 4 00:30:28 CEST 2020


I try the new \special{pdf:bxgstate ...} ... \special{pdf:exgstate}
(using the binary from w32tex.org)

When used alone in a document it works fine, but if use together with
a package which sets ExtGState too, e.g. tikz it fails to correctly
reset a transparency after a page break


\RequirePackage{l3pdf}
\ExplSyntaxOn
\pdf_uncompress:
\ExplSyntaxOff
\documentclass{article}
\usepackage{tikz}
\begin{document}
blblbllb
\tikz[opacity=0.3]\fill[red](0,0)rectangle(1,1);
\special{pdf:bxgstate << /CA 0.2 /ca 0.2 >>}
   Transparent\newpage text. %second page is black again
\special{pdf:exgstate}%
\end{document}


Looking in the pdf one can see that the ExtGState entries have been
correctly merge, but the numbering of the dvipdfmx entries are wrong:

The dictionary shows 0 and 2:


<</pgf at CA0.3<</CA .3>>
  /pgf at ca0.3<</ca .3>>
  /DPX_GS0<</CA .2/ca .2>>
  /DPX_GS2<</CA 1/ca 1>>
>>


and the stream of the first pages uses the 0 entry /DPX_GS0 gs, but on the second
page /DPX_GS1 gs is used.


With tikz only one ExtGState object is used and referenced by every
page, without tikz every page has its own ExtGState setting.


Ulrike Fischer



More information about the dvipdfmx mailing list.