我想根据 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}