TikZ 3.0.0 (Release) erzeugt seltsame Schattierungen, wenn es mit XeLaTeX und Standalone verwendet wird

TikZ 3.0.0 (Release) erzeugt seltsame Schattierungen, wenn es mit XeLaTeX und Standalone verwendet wird

Ich möchte Schattierungen in meinen TikZ-Grafiken zusammen mit dem standalonePaket und XeLaTeX verwenden, aber aus irgendeinem Grund funktioniert es nicht, wenn ich es mit der neuen Version 3.0.0 versuche (Hier herunterladen). Jede andere Kombination, die ich ausprobiert habe, funktioniert bei mir (verwende zum Beispiel articleclass/ pdflatex/ lualatex/ TikZ2.10).

(Ich verwende ein vollständig aktualisiertes TeX Live 2013.)

MWE

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

\usepackage{tikz}
\usetikzlibrary{shadings}

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

Ausgabe

Ausgabe

Erwartete Ausgabe

erwartete Ausgabe

Frage

Wie kann ich das Problem vermeiden und welches Paket/welche Klasse verursacht es?

Antwort1

Ich bestätige, dass es sich um eine Regression handelt und ich sie reproduzieren kann.

PGF 3.0.0 enthält viele Änderungen in Bezug auf Schattierungen und Xelatex. Diese Änderungen aktivieren den vollständigen Funktionsumfang von Überblendungen, Schattierungen usw., genau wie PDFLatex. Die Tatsache, dass dies nur für bestimmte Dokumentklassen funktioniert, ist eine böse Überraschung.


BEARBEITEN

Ich habe den Fehler in der Entwicklerversion von PGF behoben; wird Teil der nächsten stabilen Version.

Der Kandidat kann heruntergeladen werden unterhttp://pgf.sourceforge.net/


Das Folgende ist wahrscheinlich besser für ein Ticketsystem geeignet, aber da ich begonnen habe, den Fehler zu untersuchen, kann ich meine Schritte auch hier dokumentieren. Vielleicht stürzt sich ein Experte für Low-Level-Treiber darauf.

Ich habe festgestellt, dass es durch den resultierenden Code verursacht wird \pgfsys@vertshading, genauer gesagt durch das resultierende PDF-Codesegment.

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 erzeugte eine weitere negative Transformation (der Teil mit 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 

Ich habe das resultierende PDF manuell gepatcht. Wenn ich diese negativen Verschiebungen einführe, ist das Ergebnis korrekt. Alternativ, wenn ich patche /Matrixund /BBoxzu

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 

es funktioniert auch. Interessanterweise 100 100ist der Wert als Größe in verfügbar \pgfsys@vertshading; es ist die Begrenzungsbox in den Koordinaten von pgf irgendwo tief unten im System. Ich habe eine Weile experimentiert, aber das Problem nicht in den Griff bekommen; ich weiß nicht, wie die „72“ hier hineinkommt.

0 0 100 100Beachten Sie, dass pdflatex den Begrenzungsrahmen mit der Identitätsmatrix (der richtigen) generiert . Die Verwendung der articleKlasse und xelatexerzeugt ebenfalls diesen Wert.

Vielleicht kann ein Guru der Gerätetreiber-Entwicklung Licht in die Sache bringen; ich wette, es hängt mit etwas tief im Latex-spezifischen pgfutil-Zeug ( pgfutil-latex.def) zusammen.

verwandte Informationen