pgf 和 pstricks 的不透明度不起作用

pgf 和 pstricks 的不透明度不起作用

我最近在 Ubuntu 18.04 LTS 上将 TexLive 2016 升级到了 2017。出现的问题是,在渲染(Latex 到 dvi 到 ps 到 pdf)后,tikz(pgf)和 pstricks 图片的不透明度在 .ps 和 .pdf 文件中不起作用。

我尝试过 Texstudio、Texmaker 和 Kile,这三个编辑器都出现了问题。我尝试过 evince 和 okular,这两个查看器都出现了问题。另一方面,在 Qtikz 和 Texstudio 的预览中,不透明度对 tikz 来说工作正常。

使用之前的所有 TexLive 版本时我都没有遇到过这个问题。

这是一个包含一张 tikz 和一张 pstricks 图像的最小示例:

\documentclass[10pt]{article}
\usepackage[english,greek]{babel}
\usepackage[iso-8859-7]{inputenc}
\usepackage{pstricks, pstricks-add}
\usepackage{graphicx, color}
\usepackage{pgf,tikz}

\begin{document}    

\begin{tikzpicture}[line cap=round,line join=round,x=0.5cm,y=0.5cm]
\clip(-3.6008835336224467,-3.8322994902133702) rectangle     (3.6645946388488806,2.9075908995685467);
\draw [line width=1.2pt,color=gray,fill=gray,fill opacity=0.25] (0.,0.) circle (0.75cm);
\fill[line width=1.6pt,color=blue,fill=blue,fill opacity=0.25] (0.,1.) -- (0.,-1.) -- (2.,-1.) -- (2.,1.) -- cycle;
\draw [line width=1.6pt,color=blue] (0.,1.)-- (0.,-1.);
\draw [line width=1.6pt,color=blue] (0.,-1.)-- (2.,-1.);
\draw [line width=1.6pt,color=blue] (2.,-1.)-- (2.,1.);
\draw [line width=1.6pt,color=blue] (2.,1.)-- (0.,1.);
\end{tikzpicture}


\bigskip    


\psset{xunit=0.5cm,yunit=0.5cm,algebraic=true,dimen=middle,dotstyle=o,dotsize=5pt 0,linewidth=0.8pt,arrowsize=3pt 2,arrowinset=0.25}
\begin{pspicture*}(-3.6008835336224467,-3.8322994902133702)(3.6645946388488806,2.9075908995685467)
\pscircle[linewidth=1.2pt,linecolor=gray,fillcolor=gray,fillstyle=solid,opacity=0.25](0.,0.){0.75}
\pspolygon[linewidth=1.6pt,linecolor=blue,fillcolor=blue,fillstyle=solid,opacity=0.25](0.,1.)(0.,-1.)(2.,-1.)(2.,1.)
\psline[linewidth=1.6pt,linecolor=blue](0.,1.)(0.,-1.)
\psline[linewidth=1.6pt,linecolor=blue](0.,-1.)(2.,-1.)
\psline[linewidth=1.6pt,linecolor=blue](2.,-1.)(2.,1.)
\psline[linewidth=1.6pt,linecolor=blue](2.,1.)(0.,1.)
\end{pspicture*}


\end{document}

结果(两者)应该是

在此处输入图片描述

但我收到了

在此处输入图片描述

关于如何处理这个问题有什么想法吗?

PS 因为我在同一个文档中拥有 tikz 和 pstricks,所以 pfdlatex 不适合编译。

答案1

Ghostscript-9.52 引入了用于设置填充和描边不透明度的新运算符(.setconstantfillopacity, .setconstantstrokeopacity),从而弃用了迄今为止存在的.setopacityalpha。从 GS 版本 9.53 开始,如果使用旧运算符,则会生成警告消息。

gs此外,还引入了一个用于激活不透明度功能的新命令行选项:

ps2pdf -dALLOWPSTRANSPARENCY myfile.ps myfile.pdf

TikZ/pgf例子:

在此处输入图片描述

\documentclass[border=3pt,varwidth]{standalone}

\usepackage{tikz}
\usetikzlibrary {patterns,shapes.symbols}

\begin{document}
%\begin{preview}
  \begin{tikzpicture}[thick,fill opacity=0.5]
    \filldraw[fill=red] (0:1cm) circle (12mm);
    \filldraw[fill=green] (120:1cm) circle (12mm);
    \filldraw[fill=blue] (-120:1cm) circle (12mm);
  \end{tikzpicture}
  \tikz {
    \begin{scope}[transparency group]
      \begin{scope}[blend mode=screen]
        \fill[red!90!black] ( 90:.6) circle (1);
        \fill[green!80!black] (210:.6) circle (1);
        \fill[blue!90!black] (330:.6) circle (1);
      \end{scope}
    \end{scope}
  }

  \begin{tikzpicture}
    \shade [left color=red,right color=blue] (-2,-1) rectangle (2,1);
    \begin{scope}[transparency group=knockout]
      \fill [white] (-1.9,-.9) rectangle (1.9,.9);
      \node [opacity=0,font=\fontencoding{T1}\fontfamily{ptm}\fontsize{45}{45}\bfseries] {Ti\emph{k}Z};
    \end{scope}
  \end{tikzpicture}
  \begin{tikzpicture}[opacity=0.5]
    \begin{scope}[transparency group]
      \draw [line width=5mm] (0,0) -- (2,2);
      \draw [line width=5mm] (2,0) -- (0,2);
    \end{scope}
  \end{tikzpicture}
%\end{preview}
  
\end{document}

技巧例子:

在此处输入图片描述

\documentclass{standalone}

\usepackage{pstricks-add}

\begin{document}
\psset{fillstyle=solid,linewidth=0.1,opacity=0.4,strokeopacity=0.7}

\begin{pspicture}(-3.48,-3.06)(3.48,3.48)
  \pscircle[fillcolor=green,linecolor=green](2;135){2cm}
  \pscircle[fillcolor=red,linecolor=red](2;45){2cm}
  \pscircle[fillcolor=blue,linecolor=blue](1;-90){2cm}
\end{pspicture}
\end{document}

答案2

我正在使用 Kile。在 Kile 中,我使用pdflatex带有选项的命令-shell-escape。对于不透明度,我找到了这个解决方案。使用auto-pdf带有此选项的包:\usepackage[pspdf={-dDELAYSAFER}]{auto-pst-pdf}

相关内容