
Quiero tener una opacidad aleatoria pero no quiero usar fp
el paquete. En pocas palabras, ¿es posible pasar una expresión PostScript a opacity
?
Aquí está el ejemplo mínimo que no funciona para ahorrarle tiempo.
\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}
Advertencia !
Rand
había sido modificado tácitamente desde su comportamiento original (produciendo un número real aleatorio entre 0 y 0,5 inclusive) a un nuevo comportamiento (produciendo un número real aleatorio entre 0 y 1 inclusive). Si eres nuevo en esto Rand
, es bueno; no es necesario actualizar ningún código en su código existente.
Respuesta1
Una forma muy sencilla es definir una nueva clave, que utiliza sus argumentos como código 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}
Respuesta2
Hay una manera de pasar una expresión postscript para definir la opacidad, sin embargo, no usa directamente la opacity
opción PSTricks. En su lugar .setshapealpha
, se puede utilizar el operador Ghostscript/Postscript . (VerOperadores adicionales de Ghostscript).
Aquí hay un 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}
.setshapealpha
PSTricks también lo utiliza internamente . De hecho, pst-news08 afirma: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.
Aquí está el resultado del MWE: