如何提高使用 PSTricks 时的准确性?

如何提高使用 PSTricks 时的准确性?

我已经尝试过使用 TikZ 产生同样的问题,你可以尝试Leo 的解决方案如下换句话说,这个问题不是特定于 PSTricks。

隐藏的想法是避免裁剪,pdfcrop这样我就可以提高基于 Web 的系统性能。在这里,我通过预先设置纸张大小来准备一个高分辨率边界框,以紧密贴合 PSTricks 对象。

为了得到更简单的转换常数,我还为自己定义了一个新的单位,例如,xp代表xport如下:

1 inch = 2.54 cm = 2.5 xp = 72 bp

通过这次会议我得到:

  • 1 xp = 1.016 cm0.16 mm这意味着1 xp
  • 1 xp = 28.8 bp

这是独立 PSTricks 图片的最小工作示例。

% gridoff.tex
\documentclass{minimal}
\makeatletter
\def\xpbp#1{\strip@pt\dimexpr 28.8 \dimexpr #1 pt\relax\relax bp}
\makeatother
\usepackage
[
paperwidth=\xpbp{4.01},
paperheight=\xpbp{3.01},
margin=0bp
]{geometry}

\usepackage{pstricks}
\psset{unit=\xpbp{1},linewidth=\xpbp{0.01}}
\pagecolor{cyan}
\begin{document}
\noindent%
\begin{pspicture}[showgrid=false](\paperwidth,\paperheight)
\psframe(\paperwidth,\paperheight)
\pscircle*[linecolor=red](2.005,1.505){1.505}
\end{pspicture}%
\end{document}

注意:我将页面颜色设置为青色,以便于我识别导入图像的主文档中是否存在过多的条纹。

我用它编译

latex %1
dvips -R -t unknown %1 -o
ps2pdf -dAutoRotatePages#/None -dCompatibilityLevel#1.5 -dPDFSETTINGS#/prepress %1.ps
pdftops -eps %1.pdf

我得到了以下PDF结果:

在此处输入图片描述

每股收益:

%!PS-Adobe-3.0 EPSF-3.0
% Produced by xpdf/pdftops 3.02pl4
%%Creator: dvips(k) 5.99 Copyright 2010 Radical Eye Software
%%Title: gridoff.dvi
%%LanguageLevel: 2
%%DocumentSuppliedResources: (atend)
%%BoundingBox: 0 0 116 87
%%HiResBoundingBox: 0 0 115.49 86.69

注:以上存在舍入误差%%HiResBoundingBox。准确值应为115.48886.688

我必须确认这个问题并非是我自己的单位特有的xp,但它也发生在厘米中。如果您尝试以下代码,您将在顶部得到一个青色细条。

% incm.tex
\documentclass{minimal}
\usepackage[paperwidth=4cm,paperheight=3cm,margin=0bp]{geometry}

\usepackage{pstricks}
\psset{linewidth=0.01cm}
\pagecolor{cyan}
\begin{document}
\noindent%
\begin{pspicture}(\paperwidth,\paperheight)
\psframe(\paperwidth,\paperheight)
\pscircle*[linecolor=red](2,1.5){1.5}
\end{pspicture}
\end{document}

问题和疑问:

但是,当我将 PDF 图像放大 6400 倍时,我注意到底部有一条蓝色细条,如下所示:

在此处输入图片描述

它不应该存在,因为理论上 PSTricksdimen=outer默认使用。

  1. 如何使生成的 EPS 具有精确的高分辨率边界框0 0 115.488 86.688而不是0 0 115.49 86.69
  2. 如何强制 PSTricks 更准确地工作以摆脱如上所示的多余条带?

答案1

对于线宽和 PDF/PS 与 TeX 的不同单位等小的值,几乎不可能获得正确的图像:例如,这个是正确的。

\documentclass{minimal}
\usepackage[paperwidth=120bp,paperheight=90bp,margin=0pt]{geometry}

\usepackage{pstricks}
\psset{unit=1bp}
\psset{linewidth=2}
\pagecolor{cyan}
\parindent=0pt
\begin{document}
\begin{pspicture}(\paperwidth,\paperheight)
\psframe(120,90)
\pscircle*[linecolor=red](60,45){45}
\end{pspicture}
\end{document}

而另一个具有其他值和其他舍入误差的则不会。

相关内容