我尝试执行以下操作,但没有效果。
\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}