Мне нужно определить некоторые константы и макросы для 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
содержит все локальные данные.