用 LaTeX 替换 EPS 文件中的标签 - 文本不在应在的位置

用 LaTeX 替换 EPS 文件中的标签 - 文本不在应在的位置

我正在生成一个.eps文件octave使用此.m文件:

function dummy
xlim([0 81]);
x = [0:0.01:81];
y=x.^0.5+x.^0.4+x.^0.3+x.^0.2+x.^0.1;
plot (x,y*1.85,"-;aaaa;",'linewidth',2,x,y*1.00,"-;bbbb;",'linewidth',2,x,y*1.25,"-;cccc;",'linewidth',2,x,x/2,"-;dddd;",'linewidth',2);
legend ("location", "northwest");
xlabel ("kkkk");
ylabel ("yyyy");
set (gca (), "xtick",[]);
set (gca (), "ytick",[]);
set (gca (), "fontname","DejaVuSans");
print('-dtex', 'dummy.tex');
endfunction

并将其包含在这个 LaTeX “容器”中:

\documentclass[12pt]{article}
\usepackage{psfrag}
\usepackage[dvips]{graphicx,color}
\thispagestyle{empty}

    % You can run this by typing the following commands:
    %    latex 2dplot.tex
    %    dvips -o 2dplot.ps 2dplot.dvi

\begin{document}

% The syntax of the "psfrag" command is:
%    \psfrag{tag}[<posn>][<psposn>][<scale>][<rot>]{replacement}
% See the file pfgguide.ps for full documentation.

\begin{figure}
\psfrag{aaaa}{\small{$y$}}
\psfrag{bbbb}{\small{$s_1 \cdot y$}}
\psfrag{cccc}{\small{$s_2 \cdot y$}}
\psfrag{dddd}{\small{$k(\Sigma + n + g)$}}
\psfrag{kkkk}{\small{$k$}}
\psfrag{yyyy}{\small{$y$}}
\includegraphics{dummy.eps}
\end{figure}


\end{document}

psfrag替换内容显示在页面左下角。
运行后latex ./dummy.tex未出现任何错误。

答案1

实际图片上没有显示的替换件是可以的。摘自手册psfrag

使用 DVI 预览器查看输出时,例如dviwinxdvi每个图形的左侧将放置一个垂直的替换列表。此列表允许您检查替换的排版;它会在最终的 PostScript 版本中消失。不幸的是,DVI 驱动程序无法放置图顶部的 PSfrag 替换,因此您需要打印它或使用 PostScript 预览器(如 GhostView)

您应该将您的转换dvipspdf或打印出来以便应用替换。

答案2

至于 Octave 的替代方案,我在 R 中的做法如下:

x <- seq(0, 81, by=.01)
y <- x^.5+x^.4+x^.3+x^.2+x^.1
dat <- data.frame(x, y1=y*1.85, y2=y, y3=y*1.25, y4=x/2)

library(lattice)
lp <- xyplot(y1+y2+y3+y4~x, dat, type="l", xlab="k", ylab="y",
             main="Tour title here",
             col = c('blue', 'red', 'green', 'cyan'),
             key=list(x=0.05, y=0.95, text=list(c(expression(y), 
                                                  expression(s[1] %.% y), 
                                                  expression(s[2] %.% y), 
                                                  expression(k(Sigma + n + g)))),
                      lines=list(lty=1, col=c('blue','red','green','cyan'))))

可以使用以下方式保存为 PDF

pdf("yourfilename.pdf", width=5, height=5)
print(lp)
dev.off()

postscript()或者与EPS 输出功能完全相同。

结果如下:

在此处输入图片描述

答案3

一般来说,我倾向于通过修改创建图形项目的代码来修改图形项目。如果做不到这一点,我会使用 inkscape。这两个选项产生的图形可以在任何应用程序(例如演示应用程序、Web 应用程序)中使用,而不仅仅是在 latex 中使用。因此,考虑到这可能属于这一类,我建议你放弃使用 psfrag 的工作,因为你遇到了困难。

相关内容