如何在 PostScript 階段而不是 TeX 階段為不透明度鍵指派隨機值?

如何在 PostScript 階段而不是 TeX 階段為不透明度鍵指派隨機值?

我想要一個隨機的不透明度,但我不想使用fppackage.json 。簡而言之,是否可以將 PostScript 表達式傳遞給opacity?

這是一個最小的不起作用的範例,可以節省您的時間。

\documentclass[pstricks,border=12pt]{standalone}
\SpecialCoor
\begin{document}
\begin{pspicture}[showgrid](-2,-2)(2,2)
    \psframe*[linecolor=gray,opacity={!Rand}](2,2)
\end{pspicture}
\end{document}

警告 !

Rand已從其原始行為(產生 0 到 0.5(含)之間的隨機實數)預設修改為新行為(產生 0 到 1(含)之間的隨機實數)。如果你是新手Rand,那很好;現有程式碼中無需更新任何程式碼。

答案1

一個非常簡單的方法是定義一個新鍵,它將其參數用作 Postscript 程式碼:

\documentclass[pstricks]{standalone}
\usepackage{multido}
\makeatletter
\define@key[psset]{pstricks}{psopacity}[1]{%
  \edef\psk@opacityalpha{#1 }%
}%
\makeatother
\begin{document}
\begin{pspicture}(5,2)
  \psset{fillstyle=solid, fillcolor=red, linestyle=none, linewidth=0pt}
  \multido{\ra=0+0.5,\rb=0.5+0.5}{11}{%
    \psframe[psopacity=Rand](\ra,0)(\rb,2)}%
\end{pspicture}
\end{document}

在此輸入影像描述

答案2

有一種方法可以傳遞 postscript 表達式來定義不透明度,但它不會直接使用 PSTricksopacity選項。相反,.setshapealpha可以使用Ghostscript/Postscript 運算子。 (看Ghostscript 附加運算符)。

這是一個 MWE

\documentclass[pstricks,border=12pt]{standalone}
\SpecialCoor
\begin{document}

\makeatletter
\def\myRandomOpacity{\pst@Verb{Rand .setshapealpha}}
\def\myResetOpacity{\pst@Verb{1.0 .setshapealpha}}
\makeatother


\begin{pspicture}[showgrid,linecolor=red,unit=4cm](-1,-1)(1,1)
  \psdot(! 0 Rand)
  \psdot(! 0 Rand)
  \myRandomOpacity
  \psframe*[linecolor=green](0,0)(1,1)%
  \myRandomOpacity
  \psframe*[linecolor=green](0,0)(1,-1)
  \myRandomOpacity
  \psframe*[linecolor=green](0,0)(-1,-1)
  \myRandomOpacity
  \psframe*[linecolor=green](0,0)(-1,1)  
  \myResetOpacity
\end{pspicture}
\end{document}

.setshapealphaPSTricks 也內部使用它。事實上 pst-news08 指出:pstricks supports transparent colors with Ghostscript’s .setopacityalpha, .setblendmode, and .setshapealpha. These functions are not known to VTEX or Adobes Distiller. The optional argument vtex disables transparencies and distiller overrides the Ghostscript functions with the ones from the Distiller.

這是 MWE 的結果:

MWE 的結果

相關內容