使用 PSTricks 时出现错误“非法计量单位”

使用 PSTricks 时出现错误“非法计量单位”

请考虑以下示例:

\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

您需要指定两件事:

  1. \SpecialCoor- 表示您将使用笛卡尔以外的坐标表示法;
  2. 使用!-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}

本章将讨论十一、其他特点pstricks 文档

答案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}

在此处输入图片描述

相关内容