新しい変換演算子を作成するにはどうすればよいですか?

新しい変換演算子を作成するにはどうすればよいですか?

次の簡単な例は、変換演算子ptcm(ptからcm) を作成するという私の目的を示しています。残念ながら、PS の世界ではなく TeX の世界ではエラーが発生します。

\documentclass{beamer}
\usepackage{pstricks}
\usepackage[active,tightpage]{preview}
\PreviewEnvironment{pspicture}
\PreviewBorder=12pt

\SpecialCoor

\begin{document}
\begin{frame}
\begin{pspicture}[showgrid=top](4,4)
\makeatletter
\pstVerb{/ptcm {\pst@number\psunit\space div} bind def}
\makeatother
\psline(!4 12 ptcm sub 0)
\end{pspicture}
\end{frame}
\end{document}

エラーメッセージは次のとおりです。

! Undefined control sequence.
<argument> /ptcm {\pst 
                       @number\psunit \space div} bind def
l.17 \end{frame}

? 
! Emergency stop.
<argument> /ptcm {\pst 
                       @number\psunit \space div} bind def
l.17 \end{frame}

新しい変換演算子を作成するにはどうすればよいですか?

答え1

<argument> /ptcm {\pst 
                       @number\psunit \space div} bind def

は文字ではないため\pst@number、 として解析されたことがわかります。\pst @number@

Beamer はフレーム本体をマクロ引数として読み取るため、\makeatletterフレームの前に置く必要があります。

関連情報