PSTricks 的 EPS 输出

PSTricks 的 EPS 输出

我正在尝试EPS从 PSTricks 代码生成一个文件。我在这里重现了我已经拥有的示例工作代码:

PSTricks---plotstyle LSM(最小二乘法)

以下是修改后的代码\PStoEPS

\documentclass[12pt]{article}
\usepackage{filecontents}
\begin{filecontents*}{data.dat}
0.0     0.0
144.321  0.84
159.407     0.8925

\end{filecontents*}

\usepackage{pst-plot,pstricks-add}
\usepackage{pst-eps}


\begin{document}
\readdata{\data}{data.dat}
\PSTtoEPS[bbllx=0,bblly=0,bburx=0,bbury=0]{test.eps}{%
\psset{xunit=0.6mm,yunit=30mm,xlabelFactor=$$,labelFontSize=\footnotesize,mathLabel=false}
\begin{pspicture}(0,0)(150,3)
\psaxes[axesstyle=frame,Dx=50,Dy=0.5, ticksize=0 4pt](150,3)
\listplot [xStart=0, xEnd=150,xunit=1,plotstyle=values,rot=90] {\data}
\listplot [xStart=0, xEnd=150,xunit=1,linewidth=1.5pt,linecolor=red,showpoints, dotstyle=square] {\data}
\end{pspicture}}

\end{document}

我的理解是,我需要将所有 PSTricks 代码括在 的最后一个参数中\PStoEPS。在编译时,不会创建任何 DVI 文件,也不会创建其他后续输出 (eps)。我有三个问题:

  1. 如何正确设置\PStoEPS选项?

  2. 需要什么编译序列才能获得EPS输出(LaTeX > DVI2ps?)

  3. 是否需要指定边界框坐标?不会\PStoEPS产生EPS紧密的边界框吗?

多谢...


更新:尝试使用pst2pdf

\documentclass[12pt]{article}
\usepackage{filecontents}
\begin{filecontents*}{data.dat}
0.0     0.0
144.321  0.84
159.407     0.8925

\end{filecontents*}

\usepackage{pst-plot,pstricks-add}
\usepackage{pst-eps}
%\usepackage{auto-pst-pdf}

\begin{document}
\pagestyle{empty}
\parindent=0pt
\readdata{\data}{data.dat}
\psset{xunit=0.6mm,yunit=30mm,xlabelFactor=$$,labelFontSize=\footnotesize,mathLabel=false}
\begin{pspicture}(0,0)(150,3)
\psaxes[axesstyle=frame,Dx=50,Dy=0.5, ticksize=0 4pt](150,3)
\listplot [xStart=0, xEnd=150,xunit=1,plotstyle=values,rot=90] {\data}
\listplot [xStart=0, xEnd=150,xunit=1,linewidth=1.5pt,linecolor=red,showpoints, dotstyle=square] {\data}
\end{pspicture}

\end{document}

在 DOS 提示符下,pst2pdf对上述tex文件运行命令,结果为:

! Undefined control sequence.
<argument> \data

l.23 ...0,xunit=1,plotstyle=values,rot=90] {\data}

?

他们pst2pdf很难理解这些\listplot论点。

生成文件的目标EPS也是要有一个紧密的边界框。但使用文档类standalone似乎会切掉轴,并且不会显示任何标签或刻度标记。

答案1

您可以将pstricks图片嵌入到TeXtoEPS环境中,然后使用它dvips -E来获取具有紧密边界框的 EPS。以下方法对我有用:

% compile with latex --> dvips -E
\documentclass[12pt,dvips]{article}
\usepackage{filecontents}
\begin{filecontents*}{data.dat}
0.0     0.0
144.321  0.84
159.407     0.8925

\end{filecontents*}
\usepackage{pslatex}
\usepackage{graphicx}
\usepackage{xcolor}
\usepackage{pst-plot,pstricks-add,pst-eps}
%\usepackage{pst-eps}

\begin{document}
\readdata{\data}{data.dat}
\begin{TeXtoEPS}
\psset{xunit=0.6mm,yunit=30mm,xlabelFactor=$$,labelFontSize=\footnotesize,mathLabel=false}
\begin{pspicture}(0,0)(150,3)
\psaxes[axesstyle=frame,Dx=50,Dy=0.5, ticksize=0 4pt](150,3)
\listplot [xStart=0, xEnd=150,xunit=1,plotstyle=values,rot=90] {\data}
\listplot [xStart=0, xEnd=150,xunit=1,linewidth=1.5pt,linecolor=red,showpoints, dotstyle=square] {\data}
\end{pspicture}
\end{TeXtoEPS}
\end{document}

使用以下命令进行编译:

latex graph.tex
dvips -E graph.dvi

生成的graph.ps文件实际上是一个带有紧密边界框的 EPS 文件,下面通过在里面渲染来将其可视化\fbox

\documentclass{article}
\usepackage{graphicx}

\begin{document}
% \fbox to visualize the dimensions  
\fbox{\includegraphics{graph.ps}}
\end{document}

结果页面的屏幕截图

答案2

graph.ps将生成的文件的名称更改为graph.eps

dvips -E graph.dvi -o [filename].eps

“-o [filename].eps” 只是将生成的文件 graph.ps 的名称更改为dvips -E graph.dvi[filename].eps也是dvips graph.dvi -E -o [filename].eps可以的。查看更多:http://solvcon.net/yyc/writing/2009/pstricks_eps.html http://www.tug.org/texinfohtml/dvips.html

相关内容