请考虑以下示例:
\documentclass{article}
\usepackage{pstricks}
\begin{document}
\begin{figure}
\def\radius{19.2}
\def\lige{33.3}
\newlength\R \R=\radius\psunit
\newlength\hW \hW=\lige\psunit
\hW=0.5\hW
\centering
\psset{
unit=0.2,
linewidth=1pt
}
\begin{pspicture}(-35.5,-18.9)(34.9,18.9)
\psset{
linecolor=red
}
\psarc( \hW,0){\R}{270}{90}
\psarc(-\hW,0){\R}{90}{270}
\psline(-\hW, \R)(\hW, \R)
\psline(-\hW,-\R)(\hW,-\R)
\psset{
linecolor=black,
linestyle=dotted
}
\psline(-\hW,-\R)(-\hW,\R)
\psline( \hW,-\R)( \hW,\R)
\psline(\dimexpr-\hW-\R,0)(\dimexpr\hW+\R,0)
\rput*(0,0){\lige\,cm}
\rput*(\dimexpr-\hW-0.5\R,0){\radius\,cm}
\rput*(\dimexpr \hW+0.5\R,0){\radius\,cm}
\rput(-\hW,0){\textbf{+}}
\rput( \hW,0){\textbf{+}}
\end{pspicture}
\end{figure}
\end{document}
这个数字太大了,改变unit
选项显然没有效果。
我该如何解决?
PS:该图的比例曾经正确,因此我显然引入了一些“可疑”的东西,但我不知道那是什么。
答案1
我注意到你的代码包含一个逻辑错误。画布大小必须是
(-\dimexpr\hW+\R,-\radius)(\dimexpr\hW+\R,\radius)
所以现在我的答案有额外的价值。为什么不接受它?:-)
\documentclass{article}
\usepackage{pstricks}
\begin{document}
\begin{figure}
\centering
\psset{
unit=0.2,
linewidth=1pt
}
\def\radius{19.2}
\def\lige{33.3}
\newlength\R \R=\radius\psunit
\newlength\hW \hW=\lige\psunit
\hW=0.5\hW
\begin{pspicture}(-\dimexpr\hW+\R,-\radius)(\dimexpr\hW+\R,\radius)
\psset{
linecolor=red
}
\psarc( \hW,0){\R}{270}{90}
\psarc(-\hW,0){\R}{90}{270}
\psline(-\hW, \R)(\hW, \R)
\psline(-\hW,-\R)(\hW,-\R)
\psset{
linecolor=black,
linestyle=dotted
}
\psline(-\hW,-\R)(-\hW,\R)
\psline( \hW,-\R)( \hW,\R)
\psline(\dimexpr-\hW-\R,0)(\dimexpr\hW+\R,0)
\rput*(0,0){\lige\,cm}
\rput*(\dimexpr-\hW-0.5\R,0){\radius\,cm}
\rput*(\dimexpr \hW+0.5\R,0){\radius\,cm}
\rput(-\hW,0){\textbf{+}}
\rput( \hW,0){\textbf{+}}
\end{pspicture}
\end{figure}
\end{document}
答案2
另一种方法是在 Postscript 端进行计算。必须使用 启用此功能\SpecialCoor
,并允许访问!
符号。
然后像 一样进行简单的加法\pnode(! 1 2 add 1){A}
,这相当于\plot(3, 1){A}
。
因此你的例子也可以写成:
\documentclass[pstricks, border=3pt]{standalone}
\begin{document}
\def\radius{19.2}
\def\R{\radius\space}
\def\lige{33.3}
\def\hW{16.65 }
\SpecialCoor
\psset{%
unit=0.2,
linewidth=1pt
}%
\begin{pspicture}(-35.5,-18.9)(34.9,18.9)
\psset{linecolor=red}
\psarc(\hW,0){\R}{270}{90}
\psarc(-\hW,0){\R}{90}{270}
\psline(-\hW, \R)(\hW, \R)
\psline(-\hW,-\R)(\hW,-\R)
\psset{
linecolor=black,
linestyle=dotted
}
\psline(-\hW,-\R)(-\hW,\R)
\psline( \hW,-\R)( \hW,\R)
\psline(! -\hW \R sub 0)(!\hW \R add 0)
\rput*(0, 0){\lige\,cm}
\rput*(! -\hW -0.5 \R mul add 0){\R\,cm}
\rput*(! \hW 0.5 \R mul add 0){\R\,cm}
\rput(-\hW,0){\textbf{+}}
\rput( \hW,0){\textbf{+}}
\end{pspicture}
\end{document}
请注意,我定义\R
为\radius\space
,并明确在中的数字后留一个空格\hW
,因此并不总是必须写例如(!\hW\space \radius\space add 0)
才能获得所需的空格,但根据上述定义,它写为(!\hw \R add)
。