如何避免为 pspicture 的点参数设置硬编码值?

如何避免为 pspicture 的点参数设置硬编码值?

我想根据 2 个变量\Base和 来缩小和扩大画布\Angle。以下代码仍然对 的纵坐标使用硬编码值pspicture,例如等于 6。

我想避免使用这种硬编码值。我想用等于 的值替换它Angle tan Base mul。有什么办法吗?

\documentclass[border=12pt]{standalone}

\usepackage{pstricks-add}

\def\Base{3}
\def\Angle{60}

\pstVerb
{
    /Base \Base\space def
    /Angle \Angle\space def
}

\begin{document}
\begin{pspicture}[showgrid=top](\Base,6)
    \pspolygon[fillcolor=yellow,fillstyle=solid](!Base 0)(!0 Angle tan Base mul)
\end{pspicture}
\end{document}

在此处输入图片描述

答案1

这是一个快速破解方法:

\documentclass[border=12pt]{standalone}
\usepackage{pstricks-add}
\usepackage{fp}

\def\newconst#1#2{%
    \expandafter\FPeval\csname#1\endcsname{#2}%
    \pstVerb{/#1 \csname#1\endcsname\space def}%
}


% User defined constants
\newconst{Base}{4}
\newconst{Angle}{30}
\newconst{Height}{Base*tan(Angle*pi/180)}


\begin{document}

\begin{pspicture}[showgrid=top](\Base,\Height)
    \pspolygon(!Base 0)(!0 Height)
\end{pspicture}

\end{document}

相关内容