对于仅接受空格分隔值的宏,如何表达极坐标?

对于仅接受空格分隔值的宏,如何表达极坐标?

\psElectricfield仅接受空格分隔值的坐标,如下所示。例如,(-1,0) 处的 -0.1 单位电荷写为[-0.1 -1 0]。我尝试用 PS 符号书写,但仍然不起作用。

\documentclass{article}
\pagestyle{empty}

\usepackage{pst-electricfield,multido}
\def\M{2}

\begin{document}
\multido{\i=0+30}{12}{%
\begin{pspicture*}(-\M,-\M)(\M,\M)
    \psElectricfield
    [
        Q={[-0.1 -1 0][-0.1 1 0][0.1 !\i sin 2 mul \i cos 2 mul]}
    ]
\end{pspicture*}\newpage}
\end{document}

对于仅接受空格分隔值的宏,如何表达极坐标?

答案1

\documentclass{article}
\pagestyle{empty}\parindent=0pt    
\usepackage{pst-electricfield,multido}
\def\M{2}

\begin{document}
\multido{\i=0+30}{12}{%
\begin{pspicture*}(-\M,-\M)(\M,\M)
    \psElectricfield[Q={
       [-0.1 -1 0]
       [-0.1 1 0]
       [0.1 \i\space sin 2 mul 
            \i\space cos 2 mul]}]
\end{pspicture*} }
\end{document}

您必须使用{\i}或者否则\i\space以下空格会丢失,并且您会得到错误的 PostScript 条目,就像10sin缺少空格一样(被 TeX“吃掉”)

在此处输入图片描述

答案2

基于 Herbert 的解决方案,我\pstVerb对其进行了补充,以便将代码分成几行,这些代码在发布到狭窄的 HTML 页面时经常需要用到。

\documentclass{article}
\pagestyle{empty}\parindent=0pt    
\usepackage{pst-electricfield,multido}
\def\M{2}

\begin{document}
\multido{\i=0+30}{12}{%
\begin{pspicture*}[showgrid](-\M,-\M)(\M,\M)
    \pstVerb{/xx \i\space sin 2 mul def}%
    \pstVerb{/yy \i\space cos 2 mul def}%   
    \psElectricfield
    [
        Q={[-0.1 -1 0][-0.1 1 0][0.1 xx yy]}
    ]
\end{pspicture*} }
\end{document}

相关内容