以下 MWE 包含有问题的代码。在 Acrobat Reader 中查看 PDF 时,不会显示包含此代码的页面。我自己不使用 Acrobat,但我的导师使用,所以我的论文必须与该程序兼容。我可以重新写这篇文章,但不知道错误是什么让我很谨慎。
它编译时没有错误,并且按 SumatraPDF 中应有的方式显示。但在 Acrobat 中,褪色的径向条纹不会显示,并且该图之后同一页面上的其他内容根本不会呈现。
\documentclass[tikz]{standalone}
\usepackage{tikz}
\usetikzlibrary{fadings}
\begin{document}
\begin{tikzpicture}
%I draw the circle.
\draw[purple!70!black,fill](0,0) circle(1.5);
\draw[path fading=circle with fuzzy edge 10 percent,fill=purple!80](0,0) circle(1.5);
\foreach \x in {0,30,...,360}{
%I generate two random numbers and store them
\pgfmathparse{rand}\pgfmathsetmacro{\randomnbr}{\pgfmathresult}
\pgfmathparse{rand}\pgfmathsetmacro{\randomnbrpos}{\pgfmathresult}
%I now draw the radial streaks.
\draw[line cap=round,line width=\randomnbrpos*.5mm,purple!80!black,path fading=east,fading transform={rotate=5*\randomnbr+\x},rotate=5*\randomnbr+\x] (rand*.1+.5,0)--(\randomnbrpos*.5+1.0,0)++(0,1pt);
}
\end{tikzpicture}
\end{document}
它应该是这样的
答案1
问题是你使用的是 ,它会在和rand
之间生成随机数,而不是,它会在和之间生成随机数。这会导致某些线的宽度为负数,从而使 Acrobat 无法正常工作。-1
1
rnd
0
1
rand
用替换rnd
可解决问题:
\documentclass[tikz]{standalone}
\usepackage{tikz}
\usetikzlibrary{fadings}
\begin{document}
\begin{tikzpicture}
%I draw the circle.
\draw[purple!70!black,fill](0,0) circle(1.5);
\draw[path fading=circle with fuzzy edge 10 percent,fill=purple!80](0,0) circle(1.5);
\foreach \x in {0,30,...,360}{
%I generate two random numbers and store them
\pgfmathsetmacro{\randomnbr}{rnd}
\pgfmathsetmacro{\randomnbrpos}{rnd}
%I now draw the radial streaks.
\draw[line cap=round,line width=\randomnbrpos*.5mm,purple!80!black,path fading=east,fading transform={rotate=5*\randomnbr+\x},rotate=5*\randomnbr+\x] (rand*.1+.5,0)--(\randomnbrpos*.5+1.0,0)++(0,1pt);
}
\end{tikzpicture}
\end{document}
答案2
我可以使用 Adobe Acrobat X 在 OS X 上确认此问题。所有其他基于 PDFKit 的 PDF 查看器(Skim、Preview、IDE 集成查看器)均可正常工作。
一个简单但根据我的经验,解决有问题的 PDF 的方法是通过将其转换为 PS 然后转换为 PDF1.3(基本上栅格化了一些淡入淡出和透明效果)来清理它们:
pdf2ps problematic.pdf tmp.ps
ps2pdf tmp.ps santized.pdf
生成的 PDF 在 Acrobat 中显示正常。