TeX フェーズではなく PostScript フェーズで不透明度キーにランダム値を割り当てるにはどうすればよいでしょうか?

TeX フェーズではなく PostScript フェーズで不透明度キーにランダム値を割り当てるにはどうすればよいでしょうか?

ランダムな不透明度を設定したいのですが、パッケージは使いたくありませんfp。簡単に言うと、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オプションを直接使用しません。代わりに、Ghostscript/Postscript演算子を.setshapealpha使用できます。(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の結果

関連情報