我已经尝试过使用 TikZ 产生同样的问题,你可以尝试Leo 的解决方案如下换句话说,这个问题不是特定于 PSTricks。
隐藏的想法是避免裁剪,pdfcrop
这样我就可以提高基于 Web 的系统性能。在这里,我通过预先设置纸张大小来准备一个高分辨率边界框,以紧密贴合 PSTricks 对象。
为了得到更简单的转换常数,我还为自己定义了一个新的单位,例如,xp
代表xport
如下:
1 inch = 2.54 cm = 2.5 xp = 72 bp
通过这次会议我得到:
1 xp = 1.016 cm
0.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.488
和86.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
默认使用。
- 如何使生成的 EPS 具有精确的高分辨率边界框
0 0 115.488 86.688
而不是0 0 115.49 86.69
? - 如何强制 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}
而另一个具有其他值和其他舍入误差的则不会。