是否有内置的 PSTricks 宏来获取当前单位中的 \pslinewidth 值?

是否有内置的 PSTricks 宏来获取当前单位中的 \pslinewidth 值?

\pslinewidth我需要中的值(不带尾随单位)\psunit。我已按如下方式操作,但对准确性感到失望。

\documentclass{article}
\parindent=0pt
\usepackage{pstricks}
\pstFPdiv\Temp
{\the\pslinewidth}
{\the\psunit}

\begin{document}
\the\pslinewidth% prints 0.8pt

\Temp% prints 0.028116799998875328

\psset{linewidth=\Temp}
\the\pslinewidth% prints 0.80014pt
\end{document}

\pslinewidth是否有内置宏可以获取任意 的值(不带尾随单位)\psunit?该值对于调整绘图域非常有用,这样可以避免域边缘附近的曲线笔触被裁剪。


真实情况如下。注意:\Temp其中一半\pslinewidth与上面的例子不一样。

在此处输入图片描述

\documentclass{article}
\usepackage{pst-func}

\def\Left{-1}
\def\Bottom{-1}
\def\Right{1}
\def\Top{1}


\psset{unit=2cm,linewidth=20pt}


%half of linewidth tickness
\pstFPdiv\Temp{\the\pslinewidth}{\the\dimexpr2\psunit\relax}

\pstFPsub\LEFT\Left\Temp
\pstFPsub\BOTTOM\Bottom\Temp
\pstFPadd\RIGHT\Right\Temp
\pstFPsub\TOP\Top\Temp

\begin{document}
\section*{Without extending the plotting domain}
\begin{pspicture*}[showgrid](\Left,\Bottom)(\Right,\Top)
        \psPolynomial[coeff=-1 0 2,linecolor=red]{\Left}{\Right}
\end{pspicture*}

\section*{With extending the plotting domain}
\begin{pspicture*}[showgrid](\LEFT,\BOTTOM)(\RIGHT,\TOP)
        \psPolynomial[coeff=-1 0 2,linecolor=red]{\Left}{\Right}
\end{pspicture*}
\end{document}

我接受了赫伯特的回答,这意味着没有这样的内置宏。

我还想强调的是

  • 赫伯特的方法不如我的方法准确。
  • Herbert 方法中的长度不能传递给只接受无单位值的函数。但我的方法中的值可以传递给此类函数。

答案1

\documentclass{article}
\usepackage{pst-func}

\psset{unit=2cm,linewidth=20pt}
\newdimen\Left   \Left=-1\psxunit
\newdimen\Bottom \Bottom=-1\psxunit
\newdimen\Right  \Right=1\psyunit
\newdimen\Top    \Top=1\psyunit
\advance\Left   by -0.5\pslinewidth
\advance\Bottom by -0.5\pslinewidth
\advance\Right  by 0.5\pslinewidth
\advance\Top    by 0.5\pslinewidth

\begin{document}
\section*{With extending the plotting domain}
\begin{pspicture*}[showgrid](\Left,\Bottom)(\Right,\Top)
 \psPolynomial[coeff=-1 0 2,linecolor=red]{-1}{1}
\end{pspicture*}

\end{document}

在此处输入图片描述

相关内容