Quero ter uma opacidade aleatória, mas não quero usar fp
o pacote. Resumindo, é possível passar uma expressão PostScript para opacity
?
Aqui está o exemplo mínimo que não funciona para economizar seu tempo.
\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}
Aviso !
Rand
havia sido tacitamente modificado de seu comportamento original (produzindo um número real aleatório entre 0 e 0,5 inclusive) para um novo comportamento (produzindo um número real aleatório entre 0 e 1 inclusive). Se você é novo Rand
, é bom; nenhum código precisa ser atualizado em seu código existente.
Responder1
Uma maneira muito fácil é definir uma nova chave, que utiliza seus 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}
Responder2
Existe uma forma de passar uma expressão postscript para definir a opacidade, porém não utiliza diretamente a opacity
opção PSTricks. Em vez disso, o operador Ghostscript/Postscript .setshapealpha
pode ser usado. (VerOperadores adicionais do Ghostscript).
Aqui está um 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}
O .setshapealpha
também é usado internamente pelo PSTricks. Na verdade, 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.
Aqui está o resultado do MWE: