请考虑以下示例:
\documentclass{article}
\usepackage{pstricks}
\newcommand*\sleep[3]{%
\psframe[fillstyle=crosshatch*](6 #1 mul 37 sub 0.5)(6 #1 mul 36 sub 0.5 5 #2 div add)
\psframe[fillstyle=solid](6 #1 mul 36 sub 0.5)(6 #1 mul 35 sub 5 0.5 #3 div add)
}
\begin{document}
\begin{pspicture}(2,0.5)(4,1.3)
\sleep{6.5}{4}{0}
\end{pspicture}
\end{document}
如果编译上述代码,则会出现以下错误:
! Illegal unit of measure (pt inserted).
<to be read again>
6
l.13 \sleep{6.5}{4}{0}
为什么代码无法编译?(这可能是一些小问题,但我看不出问题是什么。)
答案1
您需要指定两件事:
\SpecialCoor
- 表示您将使用笛卡尔以外的坐标表示法;- 使用
!
-notation 表示与 Postscript 相关的坐标。
\documentclass{article}
\usepackage{pstricks}% http://ctan.org/pkg/pstricks
\newcommand*\sleep[3]{%
\psframe[fillstyle=crosshatch*](!6 #1 mul 37 sub 0.5)(!6 #1 mul 36 sub 0.5 5 #2 div add)
\psframe[fillstyle=solid](!6 #1 mul 36 sub 0.5)(!6 #1 mul 35 sub 5 0.5 #3 div add)
}
\begin{document}
\begin{pspicture}(2,0.5)(4,1.3)
\SpecialCoor
\sleep{6.5}{4}{0}
\end{pspicture}
\end{document}
答案2
改用pstricks-add
和!
运算符。但是,您的代码不起作用,因为除数为零。请使用 运算符Div
代替默认的div
:
\documentclass{article}
\usepackage{pstricks-add}
\newcommand*\sleep[3]{%
\psframe[fillstyle=crosshatch*](!6 #1 mul 37 sub 0.5)(!6 #1 mul 36 sub 0.5 5 #2 div add)
\psframe(!6 #1 mul 36 sub 0.5)(!6 #1 mul 35 sub 5 0.5 #3 Div add)%
}
\begin{document}
\begin{pspicture}(2,0.5)(4,1.3)
\sleep{6.5}{4}{0}
\end{pspicture}
\end{document}