PSTricks 会破坏 LaTeX 吗?

PSTricks 会破坏 LaTeX 吗?

抱歉,报纸头条标题:P

我有一篇文档,其中我滥用了 LaTeX 的控制结构,即\@for。当然,其中一些循环的内容包含\par图形中断。

我添加\usepackage{pstricks}到我的文档中,得到了大量的Runaway arguments。\tracingall这里和那里,我将问题简化为这个 MWE:

\documentclass{article}

% \usepackage{pstricks}

\begin{document}

\makeatletter
\@for\el:=a,b,c\do{%
A long text with \el\par or not so long after all\dots\par}

\end{document}

一旦你取消注释,\usepackage{pstricks}TeX 就会抛出一个错误,提示:Paragraph ended before \@fornoop was complete.

在第 90 行中pstricks.tex发现:

% stolen from latex.ltx to make it TeX compatible
     \def\@fornoop#1\@@#2#3{}

而 LaTeX 内核有:

\long\def\@fornoop#1\@@#2#3{}

为什么 PSTricks 没有定义\@fornoop\long?这是故意的还是一个错误?如果是故意的,那为什么?

答案1

如果你看看 LaTeX 的文档来源,你会发现这\long是一个“最近”的改变,而 pstricks 可能复制了一个旧版本,但还没有赶上

% \changes{v1.0g}{1995/08/16}{Made defs long}
% \changes{v1.0h}{2007/08/06}{Really make defs long}
%    \begin{macrocode}
\long\def\@fornoop#1\@@#2#3{}

相关内容