TikZ 3.0.0(发布版)如果与 XeLaTeX 和独立版一起使用会产生奇怪的阴影

TikZ 3.0.0(发布版)如果与 XeLaTeX 和独立版一起使用会产生奇怪的阴影

我想在我的 TikZ 图形中使用阴影以及standalone包和 XeLaTeX 一起使用,但由于某种原因,如果我尝试使用新的 3.0.0 版本,它就会损坏(在这里下载我尝试过的任何其他组合都对我有用(例如使用articleclass/ pdflatex/ lualatex/ TikZ2.10)。

(我正在使用已完全更新的 TeX Live 2013。)

平均能量损失

\documentclass{standalone}
%\documentclass{article} % would work

\usepackage{tikz}
\usetikzlibrary{shadings}

\begin{document}
\tikz \draw[top color=red] (0,0) rectangle (2,1);
\end{document}

输出

输出

预期输出

预期输出

问题

我怎样才能避免这个问题以及哪个包/类导致了这个问题?

答案1

我确认这是一个回归并且我可以重现它。

PGF 3.0.0 在阴影和 xelatex 方面进行了大量更改。这些更改激活了淡入淡出、阴影等全套功能,就像 pdflatex 一样。它仅适用于特定文档类别这一事实令人感到意外。


编辑

我修复了 PGF 开发版本中的错误;它将成为下一个稳定版本的一部分。

候选人可以在以下网址下载http://pgf.sourceforge.net/


下面的可能更适合票务系统,但由于我开始研究这个错误,我也可以在这里记录我的步骤。也许一些低级驱动程序专家会跳到它。

我发现它是由 产生的代码引起的\pgfsys@vertshading,更具体地说,是由产生的 PDF 代码段引起的

7 0 obj 
<<
/Matrix [1 0 0 1 72 -72]
/Subtype /Form
/Length 15
/Resources 8 0 R
/FormType 1
/Type /XObject
/BBox [-72 72 28 172]
>>
stream
 0 G 0 g /Sh sh
endstream 

PGF 2.10 产生了进一步的负变换(带有 的部分1 0 0 1.. cm)。

<<
/Matrix [1 0 0 1 72 -72]
/Subtype /Form
/Length 37
/Resources 7 0 R
/FormType 1
/Type /XObject
/BBox [-72 72 28 172]
>>
stream
 0 G 0 g q 1 0 0 1 -72 72 cm /Sh sh Q
endstream 

我已经手动修补了生成的 pdf;如果我引入这些负移位,结果是正确的。或者,如果我修补/Matrix/BBox

7 0 obj 
<<
/Matrix [1 0 0 1 0 0]
/Subtype /Form
/Length 15
/Resources 8 0 R
/FormType 1
/Type /XObject
/BBox [0 0 100 100]
>>
stream
 0 G 0 g /Sh sh
endstream 

它也有效。有趣的是,该值100 100可用作 中的大小\pgfsys@vertshading;它是系统深处某处 pgf 坐标中的边界框。我试验了一段时间,但没有解决问题;我不知道“72”是如何进入这里的。

请注意,pdflatex 生成0 0 100 100具有单位矩阵(正确的)的边界框。使用article类并xelatex生成此值。

也许一些设备驱动程序开发方面的专家可以对此进行一些阐释;我敢打赌,这与乳胶特定的 pgfutil 内容中的一些深层内容有关(pgfutil-latex.def)。

相关内容