我正在尝试查找 pgf-blur 中的一些错误,其中一些已经在这里报告过(这例如)。
以下所有实验均使用 TL 2016 完成。
有两个错误:
- 错误:多重阴影
- 错误:包含在 XeLaTeX 中
广告 1. 错误:多重阴影
正如 TeX StackExchange 上多次提到的那样(例如,这里,xelatex 中阴影的多次使用已损坏。
请参阅附带文件mwe-graphic.tex
。xelatex
它会产生错误的阴影,但lualatex
会产生pdflatex
完美的阴影:
\usepackage{tikz}
\usetikzlibrary{shadows.blur}
\begin{document}
\thispagestyle{empty}
\begin{tikzpicture}
\draw[blur shadow](-2,0)circle(1);
\draw[blur shadow](0,0)rectangle(3,2);
\end{tikzpicture}
\end{document}
可能的解决方案:Andrew Stacey 在 pst-blur 中进行了修复 http://bazaar.launchpad.net/~tex-sx/tex-sx/development/files
使用此文件,多个阴影可以工作,但不同的问题再次出现:
广告 2. 错误:包含在 XeLaTeX 中
考虑以下文件mwe.tex
\documentclass{article}
\usepackage{graphicx}
\begin{document}
\begin{center}
\includegraphics{mwe-graphic.pdf}
\end{center}
\end{document}
a. 使用 CTAN 或 TeX Live 的默认 pgf-blur
luatex mwe-graphic.tex; xelatex mwe.tex
生成正确的图形,但 xelatex 运行已损坏:xdvipdfmx:fatal: Loop in object hierarchy detected. Broken PDF file?
xelatex mwe-graphic.tex; xelatex mwe.tex
产生带有不正确阴影的输出,见上文
b. 使用上面链接的版本
luatex mwe-graphic.tex; xelatex mwe.tex
xelatex mwe-graphic.tex; xelatex mwe.tex
两者都产生了正确的图形,但是运行时的 xelatex
mwe
已损坏:xdvipdfmx:fatal: Loop in object hierarchy detected. Broken PDF file?
现在我的问题是:有人能提供一个解决所有这些问题的版本吗?我也会联系原作者,但我不太乐观。
谢谢
诺伯特
答案1
我建议的补丁https://tex.stackexchange.com/a/445321/2388此处也适用于多重阴影:
\documentclass{report}
\usepackage{tikz}
\usetikzlibrary{shadows.blur}
\makeatletter
\newcounter{shadowblurcount}
\tikzset{
/tikz/render blur shadow/.code={
\stepcounter{shadowblurcount}%
\pgfbs@savebb
\pgfsyssoftpath@getcurrentpath{\pgfbs@input@path}%
\pgfbs@compute@shadow@bbox
\pgfbs@process@rounding{\pgfbs@input@path}{\pgfbs@fadepath}%
\pgfbs@apply@canvas@transform
\colorlet{pstb@shadow@color}{white!\pgfbs@opacity!black}%
\pgfdeclarefading{shadowfading\the\c@shadowblurcount}{\pgfbs@paint@fading}%
\pgfsetfillcolor{black}%
\pgfsetfading{shadowfading\the\c@shadowblurcount}%
{\pgftransformshift{\pgfpoint{\pgfbs@midx}{\pgfbs@midy}}}%
\pgfbs@usebbox{fill}%
\pgfbs@restorebb
},
}
\makeatother
\begin{document}
\thispagestyle{empty}
\begin{tikzpicture}
\draw[blur shadow](-2,0)circle(1);
\draw[blur shadow](0,0)rectangle(3,2);
\end{tikzpicture}
\end{document}
答案2
给出一个明确的答案:Ulrike 提到的更改已在 Andrew Stacey 的版本中出现,现在已合并到包中。xelatex 的错误是 (x)dvipdfm(x) 的问题,并且已在我们的开发存储库中修复,修复后的二进制文件将出现在 TL2019 中。
此外,Martin Giese 同意将维护权转交给我,我今天已将修复版本上传至 CTAN,这意味着它将在几天后出现在 TeX Live 中。
如需进一步的错误报告/拉取请求/等,请使用 Github 开发页面:https://github.com/norbusan/pgf-blur