Pergunta

Pergunta

Tenho algumas constantes e também macros a serem definidas para PostScript.

\pstVerb
{   
  /a {3} def
  /b {2} def
}

Existem três locais possíveis:

  • No preâmbulo (A).
  • Dentro document, mas fora pspicture(B).
  • Em pspicture(C).

\documentclass[border=15pt,pstricks]{standalone}
% A
\begin{document}
% B
\begin{pspicture}[showgrid](-4,-4)(4,4)
% C
\psellipse(0,0)(!a b)
\end{pspicture}
\end{document}

Para as opções A e B, obtive espaços em branco desnecessários como segue.

insira a descrição da imagem aqui

Mas para a opção C,

\documentclass[border=15pt,pstricks]{standalone}
\begin{document}
\begin{pspicture}[showgrid](-4,-4)(4,4)
\pstVerb
{   /a {3} def
/b {2} def
}%
\psellipse(0,0)(!a b)
\end{pspicture}
\end{document}

os espaços em branco não existem mais.

insira a descrição da imagem aqui

Pergunta

Onde devemos usar \pstVerb?

Responder1

Você pode usá-lo onde quiser, mas deve prestar atenção para não sobrescrever as definições existentes. /ae /bjá estão definidos de diversas maneiras para funções internas.

Utilize sempre variáveis ​​com pelo menos duas letras ou utilize um dicionário próprio:

\documentclass[border=15pt,pstricks]{standalone}
\pstVerb{   
    /aA 3 def
    /bB 2 def
}
\pstVerb{
  /myDict 2 dict def % define a local dictionary with two variables
  myDict begin
    /a 3 def
    /b 2 def
  end
}

\begin{document}
\begin{pspicture}[showgrid](-4,-4)(4,4)
    \psellipse(0,0)(! myDict begin a b end )
    \psellipse(0,1)(! aA bB )
\end{pspicture}
\end{document}

Para C funciona porque pspicture contém todos os locais.

informação relacionada