Вопрос

Вопрос

Мне нужно определить некоторые константы и макросы для PostScript.

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

Есть три возможных места:

  • В преамбуле (А).
  • Внутри document, но снаружи pspicture(Б).
  • В pspicture(С).

\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}

Для вариантов А и Б я получил ненужные пробелы следующим образом.

введите описание изображения здесь

Но для варианта 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}

белые пространства больше не появляются.

введите описание изображения здесь

Вопрос

Где следует использовать \pstVerb?

решение1

Вы можете использовать его где угодно, но следует обратить внимание на то, чтобы не перезаписать существующие определения, /aи /bони уже определены несколькими способами для внутренних функций.

Всегда используйте переменные, содержащие не менее двух букв, или используйте собственный словарь:

\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}

Для C это работает, поскольку pspicture содержит все локальные данные.

Связанный контент