如何使用宏作为 pspicture 和 \psframe 的点参数?

如何使用宏作为 pspicture 和 \psframe 的点参数?

我忘记了使用\expandafter这样的规则,\rect可以将其用作psframe和的点参数pspicture

\documentclass{standalone}

\usepackage{pstricks}

\def\rect{(-3,-3)(3,3)}

\begin{document}

\begin{pspicture}[showgrid=top]\rect
    \psframe[linecolor=red]\rect
\end{pspicture}

\end{document}

您能再审阅一下吗?

答案1

PSTricks 预计

\begin{pspicture}[<options>]

后面跟着明确的坐标。因此\rect在 TeX 开始查找 之前必须将其展开\begin

\newcommand{\expandcoord}[2]{%
  \expandafter\expandcoordaux\expandafter{#2}{#1}%
}
\newcommand\expandcoordaux[2]{#2#1}

然后你可以说

\expandcoord{\begin{pspicture}[showgrid=top]}{\rect}
  \expandcoord{\psframe[linecolor=red]}{\rect}
\end{pspicture}

这里的主要问题是\expandafter只跳过令牌,因此必须采取间接方式。这当然会破坏auto-pst-pdf或类似的包。

相关内容