在 \psplot 中使用 \def

在 \psplot 中使用 \def

由于我无法解释的原因\def,似乎并不总是起作用,\psplot如下所示

\documentclass[english, landscape, a4paper]{slides}

\usepackage{graphics}
\usepackage{graphicx}
\usepackage{babel}
\usepackage{fp}
\usepackage{pst-plot}
\usepackage{pstricks}

\usepackage[active,tightpage]{preview}
\PreviewBorder=4pt
\PreviewEnvironment{pspicture}

\begin{document}
    \begin{center}
        \begin{pspicture*}(-1.5,-1)(1.5,1.5)
            \def\tI{0.0}
            \psplot{0.0}{1.0}{x \tI sub}   % does not work
            % \psplot{0.0}{1.0}{x \tI sub} % works
        \end{pspicture*}
    \end{center}
\end{document}

我编译上述文件xelatex file并得到错误

Error: /undefined in 0.0sub
Operand stack:
   --nostringval--   0.0   0.0
Execution stack:
   %interp_exit   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %s
  --nostringval--   --nostringval--   false   1   %stopped_push   1910   1   3   %oparray_
pop   1893   1   3   %oparray_pop   1787   1   3   %oparray_pop   --nostringval--   %error
ingval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--   --nos
...
** WARNING ** Filtering file via command -->mgs.exe -q -dNOPAUSE -dBATCH -sPAPERSIZE=a0 -s
yLevel=1.3 -dAutoFilterGrayImages=false -dGrayImageFilter=/FlateEncode -dAutoFilterColorIm
/FlateEncode -dUseFlateCompression=t

有人可以建议一种解决这个问题的方法吗?

答案1

您对 MWE 的评论:

  1. 当您想要获得每个紧密、单独的 PDF 输出时pspicture,您可以使用standalone类而不是preview包来节省一些击键。
  2. 仅使用graphicx(现代的)并且它graphics在内部加载。
  3. 删除不必要的包。
  4. center如果您需要为每个生成紧密、单独的 PDF 输出,则无需使用环境pspicture
  5. 仅用于pspicture*修剪画布外的对象。如果画布外不存在任何对象,则pspicture无需星号即可使用。

在此处输入图片描述

\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pst-plot}

\begin{document}
\begin{pspicture}[showgrid](-1.5,-1)(1.5,1.5)
\def\tI{0.0}
\psplot{0.0}{1.0}{x \tI\space sub}
\end{pspicture}
\end{document}

现在让我们讨论一下您的问题。控制字会吃掉其后的空格。因此x \tI subx 0.0sub毫无意义。要保留空格,您需要使用\space如上代码中所示的方法。

另一个解决方案:

确保}在宏定义的结束前至少留一个空格。请参阅下面的代码。

\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pst-plot}

\begin{document}
\begin{pspicture}[showgrid](-1.5,-1)(1.5,1.5)
\def\tI{0.0 }% can you see there is one space before the closing }?
\psplot{0.0}{1.0}{x \tI sub}
\end{pspicture}
\end{document}

答案2

总是使用末尾带有空格的定义:

\def\tI{0.0 }


那么您就不需要\space该函数的宏。

相关内容