不一致的 pdf eps 输出:pst2pdf 作用于 original.tex vs pdflatex 作用于 pst2pdf original.tex->produced.tex(multiple)

不一致的 pdf eps 输出:pst2pdf 作用于 original.tex vs pdflatex 作用于 pst2pdf original.tex->produced.tex(multiple)

按照“pstricks 项目的现状”(Herbet Voss,TUGboat,Vol31(2101),no.1)我准备了一个包含 3 pspicture 的文件 unitz.tex。

\documentclass{standalone}
\usepackage{pstricks}
\usepackage{pstricks-add}
%\usepackage{pst-plot}
\usepackage{calc}
\usepackage{auto-pst-pdf}

\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{amsthm}

%\newcommand\picwid{2.35}
%\newcommand\pichei{2.35}

\begin{document}
%\begin{pspicture*}(-\picwid,-\picwid)(\pichei,\pichei)
\begin{pspicture}   

   \rput(-2.0, 2.0){\psscalebox{1.0}{${\mathbb{C_{\mathbb{Q}}}}$}}

   \psaxes[linewidth=\linwid, ticks=none, labels=none, dx=1.0, dy=1.0]{->}(0,0)(-2,-2)(2,2)[$\Re$,0][$\Im$,90]


\end{pspicture}

\begin{pspicture}  

   \rput(-2.0, 2.0){\psscalebox{1.0}{${\mathbb{C_{\mathbb{Q}}}}$}}

   \psaxes[linewidth=0.005pt, ticks=none, labels=none, dx=1.0, dy=1.0]{->}(0,0)(-2,-2)(2,2)[$\Re$,0][$\Im$,90]

\end{pspicture}

\begin{pspicture}   
   \rput(-2.0, 2.0){\psscalebox{1.0}{${\mathbb{C_{\mathbb{Q}}}}$}}

   \psaxes[linewidth=0.005pt, ticks=none, labels=none, dx=1.0, dy=1.0]{->}(0,0)(-2,-2)(2,2)[$\Re$,0][$\Im$,90]

\end{pspicture}

\end{document}

结果已在 images/ 中及时呈现。不幸的是,每个 unitz-fig-n.pdf (n=1,2.3) 都略微剪切了位于 (2,2) 处的 \mathbb{C}_{\mathbb{Q}}。

在此处输入图片描述

文件 unitz-fig-n.tex 也在 /images 中创建。为了解决这个问题,我在每个文件上运行了 pdflatex,然后运行了 pdf2ps 和 ps2eps,结果 pdf 和 eps 文件都没有被剪切。我注意到 pst2pdf 创建的 unitz-fig-n.pdf 文件被 pdflatex 覆盖,没有任何警告。

在此处输入图片描述

请注意,为了清楚起见,我删除了原始 pspictures 中除轴和注释之外的所有内容。

pst2pdf unitz.tex -c -e
cd images/
pdflatex --shell-escape unitz-fig-1.tex
pdflatex --shell-escape unitz-fig-2.tex
pdflatex --shell-escape unitz-fig-3.tex
pdf2ps unitz-fig-1.pdf
ps2eps -f unitz-fig-1.ps
pdf2ps unitz-fig-2.pdf
ps2eps -f unitz-fig-2.ps
pdf2ps unitz-fig-3.pdf
ps2eps -f unitz-fig-3.ps

我很困惑。为什么 pst2pdf 会剪切,而 pdflatex 生成的 .tex 文件却不会剪切图像。我可能也尝试过 pst2pdf 处理其自己的 .tex 输出。我很着迷,但也筋疲力尽。

经过数周的试验,我遵循了 LaTeX->dvips -e 路径,因为我最初对 eps 很满意。所有文件都被剪裁或导致出现荒谬的空白区域。我相信边界框应该找到包含所有 PostScript 创作的最小矩形区域。我使用了 GS,它试图通过调整边界框来提供帮助,但无济于事。我尝试了 GS pdf 往返,但没有成功(LaTeX eps 方法)。

latex unitz.tex 
dvips -o unitz.ps unitz.dvi
ps2eps -g -f unitz.ps
gs -o so#126826212.pdf -sDEVICE=pdfwrite -dEPSCrop unitz.ps
gs -o unitz.roundtripped.eps -sDEVICE=eps2write so#126826212.pdf

我还应该指出,我不清楚 latex 如何生成 dvi 文件。我是否真的需要 pspicture(如果文件仅包含一个图形)。我倾向于从我的世界模型中的原点开始,并相对于该原点创建 pstricks 对象。我并不介意将东西包装在 pspicture 中(当然如果有多个的话),但我反对必须设置 pspicture 的大小。您将在附件中看到,我尝试了不同大小的 pspicture,但仍然获得了多余的空白。我没有找到任何讨论此问题的 pstricks 文档。

答案1

我们来分析一下你的 MWE,我将类修改为article,注释了包auto-pst-pdf,并将第 21 行更改为,在环境和之间linewidth=0.005pt添加了单词。TEXT[showgrid=true]

\documentclass{article}
\usepackage{pstricks}
\usepackage{pstricks-add}
%\usepackage{pst-plot}
\usepackage{calc}
%\usepackage{auto-pst-pdf}

\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{amsthm}

%\newcommand\picwid{2.35}
%\newcommand\pichei{2.35}

\begin{document}
TEXT
%\begin{pspicture*}(-\picwid,-\picwid)(\pichei,\pichei)
\begin{pspicture}[showgrid=true]

   \rput(-2.0, 2.0){\psscalebox{1.0}{${\mathbb{C_{\mathbb{Q}}}}$}}

   \psaxes[linewidth=0.005pt, ticks=none, labels=none, dx=1.0, dy=1.0]{->}(0,0)(-2,-2)(2,2)[$\Re$,0][$\Im$,90]


\end{pspicture}
TEXT
\begin{pspicture}  

   \rput(-2.0, 2.0){\psscalebox{1.0}{${\mathbb{C_{\mathbb{Q}}}}$}}

   \psaxes[linewidth=0.005pt, ticks=none, labels=none, dx=1.0, dy=1.0]{->}(0,0)(-2,-2)(2,2)[$\Re$,0][$\Im$,90]

\end{pspicture}
TEXT
\begin{pspicture}   
   \rput(-2.0, 2.0){\psscalebox{1.0}{${\mathbb{C_{\mathbb{Q}}}}$}}

   \psaxes[linewidth=0.005pt, ticks=none, labels=none, dx=1.0, dy=1.0]{->}(0,0)(-2,-2)(2,2)[$\Re$,0][$\Im$,90]

\end{pspicture}
TEXT
\end{document}

当您编译文档时,使用latex>dvips>ps2pdf 第一页如下所示: 第一页

如果你看一下,单词TEXT应该在另一个位置(而不是在图纸上),发生这种情况是因为环境pspicture应该携带参数(x,y)(x1,y1)(x2,y2)。通过省略它并使用pst2pdfauto-pst-pdf这些调用pdfcrop脚本来裁剪图像,但是,它无法正确生成。

添加此参数将使代码如下所示:

\documentclass{article}
\usepackage{pstricks}
\usepackage{pstricks-add}
%\usepackage{pst-plot}
\usepackage{calc}
%\usepackage{auto-pst-pdf}

\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{amsthm}

\newcommand\picwid{2.35}
\newcommand\pichei{2.35}

\begin{document}
TEXT
%\begin{pspicture*}(-\picwid,-\picwid)(\pichei,\pichei)
\begin{pspicture}(-\picwid,-\picwid)(\pichei,\pichei)

   \rput(-2.0, 2.0){\psscalebox{1.0}{${\mathbb{C_{\mathbb{Q}}}}$}}

   \psaxes[linewidth=0.005pt, ticks=none, labels=none, dx=1.0, dy=1.0]{->}(0,0)(-2,-2)(2,2)[$\Re$,0][$\Im$,90]


\end{pspicture}
TEXT
\begin{pspicture}(-\picwid,-\picwid)(\pichei,\pichei)

   \rput(-2.0, 2.0){\psscalebox{1.0}{${\mathbb{C_{\mathbb{Q}}}}$}}

   \psaxes[linewidth=0.005pt, ticks=none, labels=none, dx=1.0, dy=1.0]{->}(0,0)(-2,-2)(2,2)[$\Re$,0][$\Im$,90]

\end{pspicture}
TEXT
\begin{pspicture}(-\picwid,-\picwid)(\pichei,\pichei)
   \rput(-2.0, 2.0){\psscalebox{1.0}{${\mathbb{C_{\mathbb{Q}}}}$}}

   \psaxes[linewidth=0.005pt, ticks=none, labels=none, dx=1.0, dy=1.0]{->}(0,0)(-2,-2)(2,2)[$\Re$,0][$\Im$,90]

\end{pspicture}
TEXT
\end{document}

现在,当您运行时,pst2pdf -e test.tex输出将test-pdf.pdf是预期的输出以及.eps格式的图像。 输出正常

相关内容