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также создает это значение.

Возможно, какой-нибудь гуру в разработке драйверов устройств сможет пролить свет на этот вопрос; я уверен, что это как-то связано с чем-то глубоко в специфической для Latex программе pgfutil ( pgfutil-latex.def).

Связанный контент