如何将长度值宏除以无量纲值宏?

如何将长度值宏除以无量纲值宏?

我尝试执行以下操作,但没有效果。

\documentclass{minimal}
\usepackage{pstricks-add}

\psset
{
    xunit=\dimexpr1cm/\psPi\relax,
    yunit=1cm
}

\begin{document}
\begin{pspicture}[showgrid](0,-1)(\psPi,1)
    \psplot[plotpoints=300,algebraic]{0}{\psPi}{sin(2*x)}
\end{pspicture}
\end{document}

如何将长度值宏除以无量纲值宏?

答案1

您不能直接这样做。在 TeX 中,长度只能除以整数。eTeX\dimexpr只能\numexpr执行 Knuth TeX 基元可以执行的操作。因此不支持计算 1cm/3.14。

在 TeX 中进行此类计算有一个技巧:

\documentclass{minimal}
\def\psPi{3.1415926}
\newcount\tmpcntA
\newdimen\tmpdimA
\newcount\tmpcntB
\newdimen\tmpdimB

\begin{document}

\tmpdimA=2cm
\tmpcntA=\tmpdimA % 3729359, in sp
\tmpdimB=\psPi pt
\tmpcntB=\tmpdimB % 205887, in sp
\divide\tmpcntA by \tmpcntB % 3729359 / 205887 = 2cm / 3.1416926pt
\tmpdimA=\tmpcntA pt % 2cm / 3.1415926pt * 1pt
                     % = 2cm / 3.1415926

\the\tmpdimA % 2cm/3.1415926 = 18.0pt

\end{document}

但由于截断,该方法并不精确。许多情况下无法使用该方法。


更好的方法是使用其他方法进行计算:fp包、pgf数学引擎、原始 PostScript 计算等。

我对 PSTricks 不太熟悉,pst-fp解决方案如下:

\documentclass{minimal}
\usepackage{pstricks-add}
\pstFPdiv\result{2}{\psPi} % pst-fp is used

\psset
{
  xunit=\result cm, % 0.636619773... cm
  yunit=1cm
}

\begin{document}
\begin{pspicture}[showgrid](0,-1)(\psPi,1)
  \psplot[plotpoints=300,algebraic]{0}{\psPi}{sin(2*x)}
\end{pspicture}
\end{document}

在此处输入图片描述

相关内容