如何防止 \endlinechar=-1 干扰已加载的 EPS 图像?

如何防止 \endlinechar=-1 干扰已加载的 EPS 图像?

我必须在一个块中工作,该块从\endlinechar=-1\relax删除每行末尾的任何空格开始。之后\endlinechar=-1\relax,将有与加载图像(EPS、PNG、JPG、PDF)和绘制几何对象(由 PSTricks 提供)相关的代码。

不幸的是\endlinechar=-1\relax破坏了加载的 EPS 图像的结构,如下所示。

在此处输入图片描述

% Trash.tex
\documentclass{standalone}

\usepackage{graphicx}

\begin{document}
\endlinechar=-1\relax
% other settings go here
% ...
\includegraphics{Image.eps}% extension is explicitly specified to emphasize that it is an EPS image!
% other codes go here
% ...
\end{document}

如何防止\endlinechar=-1\relax干扰加载的EPS图像?

注意:此问题仅在加载 EPS 时发生。加载 PDF 或 JPG 已测试过,没有问题。

答案1

正如错误消息所示,错误发生在\Gread@eps宏中(它是 DVI/PS 输出驱动程序的一部分,当然是 EPS 特有的,这解释了为什么 PDF 或 JPG 文件不受影响)。那里的代码想要将行尾字符的 catcode 更改为 5(RETURN,即正常值),但不会更改本身\endlinechar。这里是 -1,这不是有效的输入\catcode<char number>=<catcode>。恕我直言,这实际上是该代码中的一个错误。

您需要将 改回\endlinechar周围的正常值 (13) \includegraphics,修补 的一些内部宏以graphics/x自动执行此操作,或者根本不更改 的值\endlinechar。在后一种情况下,您可以使用\catcode\endlinechar=9\relax使 TeX 忽略结束符,而不是像以前那样不插入它们\endlinechar=-1\relax。它应该会在文档中产生相同的结果,但可以与\Gread@eps宏一起使用。

相关内容