我想在 TikZ 圖形中與standalone
套件和 XeLaTeX 一起使用陰影,但由於某種原因,如果我嘗試使用新的 3.0.0 版本(在這裡下載)。我嘗試過的任何其他組合都適合我(例如使用article
class/ pdflatex
/ lualatex
/ TikZ
2.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開發者版本中的bug;將成為下一個馬厩的一部分。
候選人可以在以下位置下載: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
也會產生這個值。
也許設備驅動程式開發方面的一些專家可以對此提供一些啟發;我敢打賭它與 Latex 特定的 pgfutil 內容中的某些深層內容有關(pgfutil-latex.def
)。