%20produz%20sombras%20estranhas%20se%20usado%20com%20XeLaTeX%20e%20aut%C3%B4nomo.png)
Eu gostaria de usar sombreamentos em meus gráficos TikZ junto com o standalone
pacote e o XeLaTeX, mas por algum motivo ele quebra se eu tentar com a nova versão 3.0.0 (baixe aqui). Qualquer outra combinação que tentei funciona para mim (use por exemplo article
class/ pdflatex
/ lualatex
/ TikZ
2.10).
(Estou usando um TeX Live 2013 totalmente atualizado.)
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}
Saída
Resultado Esperado
Pergunta
Como posso evitar o problema e qual pacote/classe está causando isso?
Responder1
Confirmo que se trata de uma regressão e posso reproduzi-la.
O PGF 3.0.0 vem com muitas mudanças em relação ao sombreamento e ao xelatex. Essas alterações ativam o conjunto completo de recursos de desvanecimentos, sombreamentos, etc., assim como o pdflatex faz. O fato de funcionar apenas para classes específicas de documentos é uma surpresa ruim.
EDITAR
Corrigi o bug na versão de desenvolvedor do PGF; fará parte do próximo estábulo.
O candidato pode ser baixado emhttp://pgf.sourceforge.net/
O seguinte provavelmente é mais adequado para um sistema de tickets, mas desde que comecei a investigar o bug, posso documentar minhas etapas aqui também. Talvez algum especialista em drivers de baixo nível se interesse por isso.
Descobri que isso é causado pelo código resultante \pgfsys@vertshading
, mais especificamente, do segmento de código PDF resultante
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
O PGF 2.10 produziu mais uma transformação negativa (a parte com 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
Corrigi o PDF resultante manualmente; se eu introduzir essas mudanças negativas, o resultado estará correto. Alternativamente, se eu corrigir /Matrix
e/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
funciona também. Curiosamente, o valor 100 100
está disponível em tamanho \pgfsys@vertshading
; é a caixa delimitadora nas coordenadas do pgf em algum lugar no fundo do sistema. Experimentei um pouco, mas não consegui entender o problema; Não sei como entra o “72” aqui.
Observe que o pdflatex gera a 0 0 100 100
caixa delimitadora com matriz identidade (a correta). Usar a article
classe e xelatex
também produz esse valor.
Talvez algum guru no desenvolvimento de drivers de dispositivos possa esclarecer isso; Aposto que está relacionado a algo profundo no material pgfutil específico do látex ( pgfutil-latex.def
).